Shuffle/app/test/README.md
cschlaefke adf61b3ba2 test: add pumpApp helpers, fakes and coverage matrix template
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:21:55 +01:00

44 lines
2 KiB
Markdown

# 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.
```bash
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:
```dart
group('KTO-01 Kriterium 3: Passwort-Richtlinie', () {
test('lehnt Passwörter unter 10 Zeichen ab', () { … });
});
testWidgets('KTO-01 Kriterium 7: zeigt bei falschen Zugangsdaten eine allgemeine Meldung', …);
```
- 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`.