rebreak-monorepo/docs/superpowers/specs/2026-06-18-vitest-pipeline-integration-design.md

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

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.