Some checks failed
CD / Promote to Int (push) Blocked by required conditions
CD / Build and push images (push) Successful in 1m41s
CI / Lint, typecheck, test (push) Failing after 56s
CI / Auth e2e pack (push) Failing after 43s
CI / Build container images (push) Has been skipped
CD / Deploy to Test (push) Successful in 8s
CD / Smoke tests against Test (push) Has been cancelled
The seed script now provisions the documented fixture matrix (fixture-admin / fixture-user / fixture-pending, idempotent upserts, rate-limit reset for disposable databases). A six-test Playwright pack drives the real UI against a full local stack with Mailpit: complete signup→mail→verify→first-login journey, wrong-password error, guarded route redirect honoring ?next (race between the login page and the anonymous guard fixed by teaching the guard about ?next), menu logout, site-admin gating, and a profile rename reflected in the top bar. The pack self-skips without E2E_MAILPIT_URL, so the CD smoke stage (now pinned to smoke.spec.ts) stays untouched; a new CI job boots api + web dev server against postgres/mailpit service containers and runs the pack on every PR and push. Also fixed: the web api client choked on empty 201 bodies. e2e/README.md documents targets and fixtures. Closes #20 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
# 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 `<feature>.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.
|