3.1 KiB
3.1 KiB
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, 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 mitAUTH-CFG-nn-Bezug;tests/api/config.spec.tsprüft sie gegensupabase/config.tomlunddocs/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); setztrecovery_sent_at/confirmation_sent_atfür Ablauftests.support/web.ts– Flutter-Web-Helfer (Semantics einschalten, Felder füllen, Uhr verschieben).support/start-throttle-gotrue.sh– zweiter GoTrue-Container (Profilethrottle,smtp-down).
Hinweise zum Web-Projekt
- Flutter zeichnet auf Canvas. Der Semantics-Baum wird über
flt-semantics-placeholdereingeschaltet (enableSemantics). - Eingabefelder werden mit
click+pressSequentiallygefüllt;fillallein geht gelegentlich verloren. - Immer
localhost(nicht127.0.0.1): Die Mail-Links nutzen die Site-URL (AUTH-CFG-01), sonst liegt die Sitzung in einem anderenlocalStorage. - Gegen die gemeinsame CLI-Instanz werden nie
X-Forwarded-For-Header gesendet (R13).