cms.c2sgmbh/docs/TEST_SYSTEM.md

49 lines
1.6 KiB
Markdown

# Projektweites Dynamisches Testsystem
## Ziel
Dieses System stellt sicher, dass die Testabdeckung mit dem gesamten Projekt mitwaechst.
Bestehende Altlasten werden als Baseline dokumentiert, aber neue ungetestete Dateien
werden sofort als Fehler erkannt.
## Komponenten
- Guard-Script: `scripts/test-system/audit.mjs`
- Baseline: `tests/test-system-baseline.json`
- Statusreport: `docs/reports/test-system-status.md`
## Funktionsweise
1. Das Script scannt alle `src/**/*.{ts,tsx}` Dateien (mit Exclusions, z. B. Migrationen).
2. Es sucht Test-Evidenz in `tests/unit`, `tests/int`, `tests/e2e`:
- direkte Modulimporte (z. B. `@/lib/...`)
- API-Endpoint-Nutzung fuer `route.ts` Dateien (z. B. `/api/news`)
- konservative Dateinamen-Heuristik
3. Es vergleicht die aktuelle Liste ungetesteter Dateien mit der Baseline.
4. Ergebnis:
- **Pass**: keine neuen Luecken
- **Fail**: neue ungetestete Dateien gefunden
## Befehle
```bash
# Guard ausfuehren (CI-geeignet)
pnpm test:system
# Baseline absichtlich aktualisieren
pnpm test:system:update
```
## Team-Regeln fuer laufende Weiterentwicklung
- Bei jeder neuen Datei unter `src/` direkt passende Tests anlegen.
- Wenn technisch begruendet keine Tests moeglich sind, Datei bewusst in der Baseline belassen.
- Baseline nur nach Review aktualisieren (kein automatisches "wegklicken" von Luecken).
- Report unter `docs/reports/test-system-status.md` bei Auffaelligkeiten pruefen.
## CI-Integration
Der Guard laeuft im CI-Workflow `ci.yml` im Lint-Job als Schritt:
- `pnpm test:system`
Damit greifen die Regeln sowohl auf Pull Requests als auch auf Pushes nach `develop`.