cms.c2sgmbh/docs/TEST_SYSTEM.md

1.6 KiB

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
  1. Es vergleicht die aktuelle Liste ungetesteter Dateien mit der Baseline.
  2. Ergebnis:
  • Pass: keine neuen Luecken
  • Fail: neue ungetestete Dateien gefunden

Befehle

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