Shuffle/e2e
cschlaefke ec2d45c319 docs(auth): document E2E setup and SMTP outage spike result
Refs #38

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:42:28 +01:00
..
support test(auth): add web E2E tests for KTO-01 criteria 1-10 against the Flutter web build 2026-11-03 10:42:28 +01:00
tests test(auth): add web E2E tests for KTO-01 criteria 1-10 against the Flutter web build 2026-11-03 10:42:28 +01:00
package-lock.json test(auth): add Playwright project with api tests for KTO-01 (GoTrue, Mailpit, db helper) 2026-11-03 10:29:18 +01:00
package.json test(auth): add Playwright project with api tests for KTO-01 (GoTrue, Mailpit, db helper) 2026-11-03 10:29:18 +01:00
playwright.config.ts test(auth): add Playwright project with api tests for KTO-01 (GoTrue, Mailpit, db helper) 2026-11-03 10:29:18 +01:00
README.md docs(auth): document E2E setup and SMTP outage spike result 2026-11-03 10:42:28 +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 21
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.

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).