Shuffle/app/test
cschlaefke 6020801fff
All checks were successful
CI / flutter (pull_request) Successful in 1m19s
CI / web-build (pull_request) Successful in 56s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 3m0s
chore: merge main into feature/3b-katalog-suche-app
Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 11:06:16 +01:00
..
core feat(catalog): review fixes for catalog search 2026-11-04 10:17:54 +01:00
features chore: merge main into feature/3b-katalog-suche-app 2026-11-04 11:06:16 +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.