Shuffle/e2e
cschlaefke 7eaed46dc2
All checks were successful
CI / flutter (pull_request) Successful in 1m38s
CI / web-build (pull_request) Successful in 1m38s
CI / supabase (pull_request) Successful in 13s
CI / supabase-tests (pull_request) Successful in 35s
CI / e2e (pull_request) Successful in 2m58s
test(auth): address review findings on sign-in prompt (PR A)
Correct the focus comment (refs #61), test Space key and focus state,
prove scrollability at 200 percent text, drop needless minWidth, English
doc comment, allow OutlinedButton as secondary action in standalone cards,
English prompt text says plays instead of games.

Refs #49

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:25:22 +01:00
..
support test(e2e): click buttons via getByRole instead of keyboard helper 2026-11-03 13:07:01 +01:00
tests test(auth): address review findings on sign-in prompt (PR A) 2026-11-04 01:25:22 +01:00
package-lock.json test(auth): address review findings for e2e 2026-11-03 10:55:27 +01:00
package.json test(auth): address review findings for e2e 2026-11-03 10:55:27 +01:00
playwright.config.ts test(auth): address review findings for e2e 2026-11-03 10:55:27 +01:00
README.md feat(auth): sign-in prompt card on the home screen for signed-out users 2026-11-04 01:03:16 +01:00
tsconfig.json test(auth): add Playwright project with api tests for KTO-01 (GoTrue, Mailpit, db helper) 2026-11-03 10:29:18 +01:00

E2E-Tests (Playwright)

Auth-Tests für KTO-01 (Spec docs/specs/1-auth-registrierung-anmeldung.md § 7, Issue #38). Jeder Test nutzt zufällige E-Mail-Adressen und filtert Mails je Adresse (Mailpit wird nie global geleert), die Tests laufen deshalb parallel.

Projekte

Projekt Ziel Voraussetzung Tests
api GoTrue über Kong (:54321) + Mailpit (:54324) + Postgres (:54322) supabase start 52
web gebaute Flutter-Web-App auf http://localhost:3000 zusätzlich flutter build web 27
throttle Extra-GoTrue-Container mit GOTRUE_RATE_LIMIT_HEADER (AUTH-CFG-13) THROTTLE_GOTRUE_URL 4
spike GoTrue mit unerreichbarem SMTP (Issue #37), nicht blockierend SPIKE_GOTRUE_URL 3

throttle und spike werden nur registriert, wenn die jeweilige Variable gesetzt ist.

Lokal ausführen

supabase start -x studio,imgproxy,vector,logflare,edge-runtime,postgres-meta,realtime,storage-api
supabase db reset

# Web-Build gegen die lokale CLI (echten Anon-Key aus `supabase status -o env` eintragen)
cd app && flutter build web --dart-define-from-file=env/ci.example.json   # SUPABASE_URL/ANON_KEY anpassen

cd ../e2e && npm ci && npx playwright install chromium
npx playwright test --project=api
npx playwright test --project=web          # startet `serve -s ../app/build/web -l 3000` selbst

# Drosselung (Krit. 7) und SMTP-Spike
./support/start-throttle-gotrue.sh start throttle     # :9998
./support/start-throttle-gotrue.sh start smtp-down    # :9997
THROTTLE_GOTRUE_URL=http://127.0.0.1:9998 SPIKE_GOTRUE_URL=http://127.0.0.1:9997 npx playwright test
./support/start-throttle-gotrue.sh stop throttle; ./support/start-throttle-gotrue.sh stop smtp-down

Umgebungsvariablen (Standard = lokale CLI-Demo-Werte, keine Secrets): SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, MAILPIT_URL, E2E_DB_URL, WEB_URL, TERMS_VERSION, E2E_ALLOWED_HOSTS (zusätzlich erlaubte Hosts für SUPABASE_URL/MAILPIT_URL/E2E_DB_URL, kommagetrennt; Standard nur 127.0.0.1, localhost, [::1]).

Aufbau

  • support/auth-config.ts – Konstanten mit AUTH-CFG-nn-Bezug; tests/api/config.spec.ts prüft sie gegen supabase/config.toml und docs/auth-konfiguration.md.
  • support/gotrue.ts, support/mailpit.ts – REST-Client und Mailfänger-Helfer.
  • support/db.ts – direkter Postgres-Zugriff, nur lokal/CI (bricht bei anderem Host ab); setzt recovery_sent_at/confirmation_sent_at für Ablauftests.
  • support/web.ts – Flutter-Web-Helfer (Semantics einschalten, Felder füllen, Uhr verschieben).
  • support/start-throttle-gotrue.sh – zweiter GoTrue-Container (Profile throttle, smtp-down).

Hinweise zum Web-Projekt

  • Flutter zeichnet auf Canvas. Der Semantics-Baum wird über flt-semantics-placeholder eingeschaltet (enableSemantics).
  • Eingabefelder werden mit click + pressSequentially gefüllt; fill allein geht gelegentlich verloren.
  • Immer localhost (nicht 127.0.0.1): Die Mail-Links nutzen die Site-URL (AUTH-CFG-01), sonst liegt die Sitzung in einem anderen localStorage.
  • Gegen die gemeinsame CLI-Instanz werden nie X-Forwarded-For-Header gesendet (R13).