Fill e2e gaps: storageState, real upload POST, session smoke
Add auth setup project, viewer session check, upload that posts a fixture, FastAPI login spec (skips without E2E_API_*), and repo ROADMAP.md.
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
# PunimTag roadmap
|
||||
|
||||
Living plan for product quality, auth/email reliability, and automation.
|
||||
|
||||
## Now — shipped / in flight
|
||||
|
||||
- [x] Fix public-host auth redirects (Kolby #57 family) — `NEXTAUTH_URL` + verify-email
|
||||
- [x] DEV mail trap via Mailpit (not Mailtrap SaaS / not Spamhaus-blocked Mailcow for e2e)
|
||||
- [x] Playwright e2e suite (`e2e/`) on `@levkin/playkit` against `punimtagdev.levkin.ca`
|
||||
- [x] Dedicated e2e user `e2e@levkine.ca` (Vault / Infisical / Gitea Actions)
|
||||
- [x] Vitest unit tests for `viewer-frontend` in Gitea Actions
|
||||
- [x] API smoke + Zod schema checks (health, people, tags, 401 contracts)
|
||||
- [x] storageState setup project + real upload smoke
|
||||
- [x] ROADMAP (this file)
|
||||
|
||||
## Next (near-term)
|
||||
|
||||
- [ ] **Wire QA/PROD SMTP on live guests** when LXCs 9102/9103 exist (`make punimtag-sync-smtp ENV=qa|prod`)
|
||||
- [ ] **FastAPI e2e user** — mirror `e2e@levkine.ca` (or service account) into FastAPI user DB; set `E2E_API_USERNAME`/`PASSWORD` in CI
|
||||
- [ ] **Search / filter e2e** — tag + person filters on public gallery
|
||||
- [ ] **Role permissions e2e** — viewer vs admin write gates
|
||||
- [ ] **admin-frontend Vitest** (or Playwright admin project)
|
||||
- [ ] **PROD smoke** — health + public login page only (no mutating tests)
|
||||
- [ ] **Stop seeding `admin@admin.com` in docs** as the day-to-day login; keep bootstrap scripts but point operators at Vaultwarden `PunimTag e2e`
|
||||
|
||||
## Later
|
||||
|
||||
- [ ] Proper DEV deploy (`next start` + CI image) instead of long-lived `next dev`
|
||||
- [ ] Ansible/app_setup path aligned with `/opt/punimtag/viewer-frontend/.env` (not `/srv/app`)
|
||||
- [ ] OpenAPI-driven contract suite (playkit / consumer)
|
||||
- [ ] Multi-browser matrix (firefox/webkit)
|
||||
- [ ] Hermes/Mattermost report on e2e failure
|
||||
|
||||
## Test map
|
||||
|
||||
| Layer | Where | Status |
|
||||
|-------|--------|--------|
|
||||
| Viewer unit | `viewer-frontend` Vitest | CI `viewer-unit` |
|
||||
| Backend unit/integration | `tests/` pytest | existing |
|
||||
| E2E browser + mail | `e2e/tests/*` | CI `e2e` |
|
||||
| E2E API (unauth + catalog) | `e2e/tests/api.*` | CI |
|
||||
| E2E FastAPI authed | `api.fastapi-login.spec.ts` | skips without `E2E_API_*` |
|
||||
| Admin UI | — | gap |
|
||||
|
||||
See also: `e2e/README.md`, playkit `ROADMAP.md` (kit-level).
|
||||
Reference in New Issue
Block a user