Skip to content

Teststrategie

formtest nutzt drei Testschichten mit klar getrennten Aufgaben.

Vitest Unit

Unit-Tests liegen unter test/unit/** und laufen im Node-Environment. Sie prüfen reine Utilities, Store-Helfer, PDF-Logik und fachliche Funktionen ohne Nuxt-Runtime.

bash
bun run test:unit

Vitest Nuxt

Nuxt-Tests liegen unter test/nuxt/**. Sie nutzen @nuxt/test-utils, happy-dom, IndexedDB-Mocks und PWA-Mocks für Code, der Nuxt-Runtime, Vue-Rendering oder App-Aliase braucht.

bash
bun run test:nuxt

Playwright E2E

Playwright deckt echte Browserflows ab. Die Tests liegen unter test/e2e/** im formtest-Repo und verwenden @nuxt/test-utils/playwright, damit Nuxt-Hydration im Test verfügbar ist. Der Playwright-webServer startet einen normalen Nuxt-Dev-Server über bun run dev:e2e auf http://127.0.0.1:31000; die Nuxt-Fixture verbindet sich mit diesem Host. Die Playwright-UI läuft auf Port 9323.

Im UI-Modus wird der Playwright-webServer deaktiviert. bun run e2e:ui verwendet stattdessen scripts/playwright-ui.ts: Das Script verbindet sich mit einem bereits laufenden E2E-Server oder startet bun run dev:e2e selbst und wartet auf http://127.0.0.1:31000, bevor die UI geöffnet wird. Headless-E2E-Tests über bun run test:e2e starten den E2E-Server weiterhin automatisch.

Die E2E-Suite läuft mit einem Worker. Das vermeidet parallele Erstaufrufe auf einen kalten Nuxt-Dev-Server, bei denen die Hydration-Wartezeit sonst in den Testtimeout laufen kann.

bash
bun run test:e2e
bun run test:e2e:ui

Nach einer frischen Dependency-Installation muss Chromium einmalig installiert werden:

bash
bunx playwright install chromium

Die Standard-E2E-Tests sind app-fokussiert. Sie routen API-Antworten direkt in Playwright und benötigen keinen laufenden protocols-mock-srv. Dadurch bleiben History-, Create-, Editor-, Customer-View- und Offline-Flows stabil reproduzierbar.

Tests gegen den echten Mock-Server sind nur sinnvoll, wenn explizit App-und-Backend- Verträge geprüft werden sollen.

Zuständigkeiten

  • Unit: reine fachliche Logik und kleine Utilities
  • Nuxt: Komponenten, Composables und Stores mit Nuxt-/Vue-Kontext
  • Playwright: Browsernavigation, Hydration, IndexedDB-Zustand, API-Mock-Flows und mobile/viewport-nahe Regressionen