# 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`.