Shuffle/app/test
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
..
core feat(catalog): address review of GameCover (labels, tests, spec notes) 2026-11-03 15:26:38 +01:00
features test(auth): address review findings on sign-in prompt (PR A) 2026-11-04 01:25:22 +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.