# End-to-end tests Two Playwright suites with different targets: | Suite | Target | Where it runs | | --------------- | --------------------------------- | --------------------------------------------------------------------- | | `smoke.spec.ts` | any deployed stage | CD pipeline against `https://test.dorfteich.cloud` after every deploy | | `auth.spec.ts` | full local stack **with Mailpit** | CI job `auth-e2e` on every PR/push; locally against the dev stack | ## Running locally ```sh # 1. Stack: database + Mailpit, api (3001), web dev server (5173) docker compose -f deploy/compose/docker-compose.yml -f deploy/compose/compose.dev.yml up -d db mailpit DATABASE_URL=postgresql://dorfteich:dorfteich@localhost:5434/dorfteich pnpm --filter @dorfteich/api db:seed DATABASE_URL=postgresql://dorfteich:dorfteich@localhost:5434/dorfteich PORT=3001 pnpm --filter @dorfteich/api start:dev & pnpm --filter @dorfteich/web dev & # 2. Tests E2E_BASE_URL=http://localhost:5173 E2E_MAILPIT_URL=http://localhost:8025 pnpm --filter @dorfteich/web e2e ``` `auth.spec.ts` skips itself when `E2E_MAILPIT_URL` is unset, so the CD smoke run never trips over it. ## Fixture matrix Seeded by `pnpm --filter @dorfteich/api db:seed` (idempotent — re-running never duplicates). Shared password: `fixture passwort 123`. Fixtures exist only on dev machines and disposable CI/Test databases. | Username | State | Purpose | | ----------------- | ------------------- | ------------------------------------ | | `fixture-admin` | active, Site Admin | admin UI/permissions cases | | `fixture-user` | active | regular journeys, settings, sessions | | `fixture-pending` | e-mail not verified | unverified-login cases | ## Conventions - New feature packs get their own `.spec.ts` next to these and extend the fixture matrix here (permission matrix arrives with M5, issue #60). - Use `contextForUser()` from `helpers.ts` for signed-in tests — it logs in through the api and hands you a browser context with the session cookie, no UI login repetition. - Flaky tests are defects (ADR 0014): fix or quarantine immediately.