Shuffle/app/test
cschlaefke 7c2f684098
All checks were successful
CI / flutter (pull_request) Successful in 1m13s
CI / web-build (pull_request) Successful in 55s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
fix(auth): address review findings for password reset
Finish the recovery guard only after the password change, mark the change
in the repository so a late userUpdated event is harmless, keep the form
locked after success, carry from through the reset check-email page,
share the password error texts and focus the continue button.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:58:31 +01:00
..
core feat(core): let AppBanner disable its action instead of hiding it 2026-11-03 09:47:03 +01:00
features/auth fix(auth): address review findings for password reset 2026-11-03 09:58:31 +01:00
helpers test: add pumpApp helpers, fakes and coverage matrix template 2026-11-02 20:21:55 +01:00
app_test.dart test: add pumpApp helpers, fakes and coverage matrix template 2026-11-02 20:21:55 +01:00
README.md fix(app): address review findings for foundation 2026-11-02 20:36:58 +01:00

Tests der App

Unit- und Widget-Tests spiegeln die Struktur von lib/. Integration (integration_test/) und Web-E2E (Playwright) kommen mit den jeweiligen Feature-Tasks.

flutter test

Coverage wird in der CI derzeit nicht erhoben; lokal optional flutter test --coverage.

Helfer (test/helpers/)

Datei Inhalt
pump_app.dart pumpApp(tester, home: …) bzw. router: …: MaterialApp mit AppTheme, l10n-Delegates, ProviderScope, wählbare locale (Standard de), textScale, themeMode. pumpShuffleApp(tester, deviceLocale: …) startet die echte ShuffleApp. Beide geben den ProviderContainer zurück.
fakes.dart MockSupabaseClient, MockGoTrueClient, SupabaseMocks (Client mit verdrahtetem auth), testAppConfig(…), testOverrides(…) (feste AppConfig + Supabase-Mock, weitere Overrides anhängbar).
router_helpers.dart buildTestRouter, FakeRedirectSource, currentPath, currentUri.

Regeln: keine echten Netzwerkaufrufe, feste Zeit (clock/fakeAsync), feste Zufallswerte. Schlägt ein Test wegen eines Produktivcode-Fehlers fehl, wird der Test nicht angepasst, sondern der Fehler an den Entwickler-Agent zurückgegeben.

Benennung mit Akzeptanzkriterien

Tests, die ein Akzeptanzkriterium belegen, tragen die Referenz KTO-01 Kriterium 3 (Story-ID, Kriterium-Nummer wie im Issue) am Anfang des Namens:

group('KTO-01 Kriterium 3: password policy', () {
  test('rejects passwords shorter than 10 characters', () { … });
});

testWidgets('KTO-01 Kriterium 7: shows a generic message for wrong credentials', …);
  • Eine Referenz pro group/Test; deckt ein Test mehrere Kriterien ab, alle nennen (KTO-01 Kriterium 1, 2).
  • Konfigurationsabhängige Tests nennen zusätzlich die Konfig-ID (AUTH-CFG-10).
  • Sprache der Testnamen einheitlich Englisch (wie der Code); die Referenz bleibt unverändert.
  • Suche nach Abdeckung: grep -rn "KTO-01 Kriterium 3" test integration_test ../supabase/tests ../e2e.

Abdeckungsmatrix

Jeder PR enthält eine Matrix Akzeptanzkriterium → Test(s). Vorlage: docs/templates/abdeckungsmatrix.md.