3.0 KiB
3.0 KiB
Design: Vitest-Integration für Backend in Woodpecker-Pipeline
Datum: 2026-06-18
Scope: Backend-Tests mit Vitest in .woodpecker.yml integrieren
Decision: Variante A — minimal, Tests als Gate vor dem Build, keine Coverage
Ziel
pnpm test im Backend (backend/) wird in die Woodpecker-CI-Pipeline eingebunden. Fehlschlagende Tests blockieren Build und Deploy auf Staging.
Ausgangslage
backend/package.jsonenthält bereitsvitestund@vitest/coverage-v8als Dev-Dependencies.backend/vitest.config.tsist konfiguriert (Node-Environment,tests/**/*.test.ts, Setup-File, Forks-Pool).- Es existieren 24 Test-Dateien unter
backend/tests/, davon scheitern aktuell 4 Dateien mit 12 Tests. apps/adminhat kein Test-Setup — wird in diesem Design nicht berücksichtigt..woodpecker.ymlenthält bisher keine Test-Phase.
Fehlerhafte Tests (vor der Integration zu reparieren)
| Datei | Problem |
|---|---|
tests/social/profile-counts.test.ts |
usePrisma().domainSubmission.count ist undefined — Mock unvollständig |
tests/voice/quota.test.ts |
Quota-Berechnung liefert falsche Werte (z. B. 270 statt 30, 300 statt 60) — vermutlich Datum/Reset-Logik oder falsche Mock-Daten |
Architektur / Pipeline-Änderung
.woodpecker.yml bekommt einen neuen Schritt test-backend, der nach install und vor build-backend ausgeführt wird:
test-backend:
image: *node_image
commands:
- *pnpm_setup
- cd backend && npx nitro prepare && pnpm test
depends_on: [install]
npx nitro prepare generiert backend/.nitro/types/tsconfig.json, das von backend/tsconfig.json referenziert wird. Ohne diesen Schritt failt vitest mit Cannot find module './.nitro/types/tsconfig.json'.
build-backend und deploy-backend erhalten depends_on: [test-backend, install] bzw. bleiben von build-backend abhängig.
Abhängigkeiten
- Keine externen Services nötig (Tests laufen mit gemocktem Prisma).
- Keine neuen Secrets.
node:24-slim-Image wird wie bei allen anderen Build-Steps verwendet.
Fehlerbehandlung
- Wenn
pnpm testmit Exit-Code ≠ 0 endet, failt der Pipeline-Schritt. - Woodpecker führt daraufhin
build-backend,build-adminund Deploy-Steps nicht aus. - Pull Requests werden ebenfalls getestet, aber nicht deployed (bestehende
when-Regeln bleiben erhalten).
Nicht im Scope
- Kein Coverage-Reporting in der Pipeline.
- Kein Test-Setup für
apps/admin. - Keine parallele Ausführung der Tests (Aufwand lohnt sich bei ~500 ms Laufzeit nicht).
- Keine Änderung an der lokalen Entwickler-Experience außer der erwarteten grünen Test-Suite.
Akzeptanzkriterien
cd backend && pnpm testläuft lokal erfolgreich durch (0 Fehler)..woodpecker.ymlenthält dentest-backend-Schritt vor den Build-Steps.- Ein Push auf
mainmit fehlschlagenden Tests blockiert den Deploy. - Ein Push auf
mainmit grünen Tests führt wie bisher zu Build und Deploy.
Offene Punkte
- Keine.