- add INTERNET permission, iOS localizations, html lang - make focus ring visible on FilledButton - neutral SITE_URL default, idempotent logger configure Refs #31 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
46 lines
2.1 KiB
Markdown
46 lines
2.1 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 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:
|
|
|
|
```dart
|
|
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`.
|