Zum Inhalt

Tests

TxRide kennt zwei Testebenen: schnelle Unit-Tests mit dem Bun-Testrunner und End-to-end-Tests mit Cypress gegen die laufende Web-App.

Unit-Tests (Bun)

bun run test            # alle Pakete
bun run test:coverage   # Coverage-Zusammenfassung pro Paket

Integrationstests, die echte Infrastruktur brauchen (Keycloak, API, Datenbank), sind über die Umgebungsvariable TXRIDE_INTEGRATION=1 abgesichert und laufen nur, wenn der Dev-Stack steht:

bun run dev:infra:up
bun run smoke:keycloak
TXRIDE_INTEGRATION=1 bun test packages/api/test/smoke.crud.test.ts

End-to-end-Tests (Cypress)

Auf NixOS immer über nix develop

Das Cypress-Binary wird über flake.nix bereitgestellt (CYPRESS_RUN_BINARY). Starte Cypress deshalb auf NixOS stets innerhalb der Nix-Shell, sonst fehlen statisch gelinkte Abhängigkeiten.

Web-App und Tests in zwei Terminals starten:

nix develop -c bun run dev          # Terminal 1: Web-App
nix develop -c bun run cypress:web  # Terminal 2: Tests

Vorhandene Specs

Spec Was geprüft wird
e2e/smoke.cy.ts Startseite mit Karte lädt
e2e/presentation.cy.ts Routen-Navigation, Admin-Guard, Karten-Overlay
e2e/i18n.cy.ts Sprachwechsel en/de über localStorage
e2e/auth-login.cy.ts Keycloak-Login (übersprungen ohne CYPRESS_INTEGRATION=1)
e2e/doc-screenshots.cy.ts erzeugt die Handbuch-Screenshots im Telefon-Viewport

Integrationslauf mit Login

Für Tests, die echtes Login und API benötigen, müssen Infrastruktur, Web-App und API parallel laufen:

nix develop -c bun run dev:infra:up
nix develop -c bun run dev          # Web
nix develop -c bun run dev:api      # API
nix develop -c bun run cypress:web:integration

Handbuch-Screenshots erzeugen

Die Abbildungen in der Kundendokumentation entstehen automatisiert im Telefon-Viewport (390 × 844):

nix develop -c bun run cypress:doc