# 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.json` enthält bereits `vitest` und `@vitest/coverage-v8` als Dev-Dependencies. - `backend/vitest.config.ts` ist 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/admin` hat kein Test-Setup — wird in diesem Design nicht berücksichtigt. - `.woodpecker.yml` enthä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: ```yaml 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 test` mit Exit-Code ≠ 0 endet, failt der Pipeline-Schritt. - Woodpecker führt daraufhin `build-backend`, `build-admin` und 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 1. `cd backend && pnpm test` läuft lokal erfolgreich durch (0 Fehler). 2. `.woodpecker.yml` enthält den `test-backend`-Schritt vor den Build-Steps. 3. Ein Push auf `main` mit fehlschlagenden Tests blockiert den Deploy. 4. Ein Push auf `main` mit grünen Tests führt wie bisher zu Build und Deploy. ## Offene Punkte - Keine.