Appearance
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:unitVitest 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:nuxtPlaywright 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:uiNach einer frischen Dependency-Installation muss Chromium einmalig installiert werden:
bash
bunx playwright install chromiumDie 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