test: add Playwright e2e smoke suite for punimtag dev #60

Merged
ilia merged 1 commits from test/e2e-playwright-smoke into dev 2026-07-14 16:13:57 -05:00
Owner

Summary

  • Add e2e/ Playwright harness (via @levkin/playkit) smoke-testing the public DEV host:
    • Login page loads on the public hostname
    • Sign-out never redirects to a LAN host (Kolby #57 regression guard)
    • FastAPI /health returns { "status": "ok" }
    • Forgot-password email lands in Mailtrap with a public reset link (Kolby #56 regression guard)
  • Wire a new e2e job into .gitea/workflows/ci.yml: self-hosted runner, installs Chromium, runs npx playwright test, uploads the HTML report as an artifact on failure. Gated behind the existing skip-ci-check job like the other lanes.
  • Add root install:e2e / test:e2e npm scripts for local use.
  • Gitignore e2e build artifacts (node_modules, playwright-report, test-results, blob-report, .auth, .env).

Notes

  • Sign-out and forgot-password specs self-skip when E2E_ADMIN_* / MAILTRAP_* secrets aren't present; only the public login-page + API health specs are required to pass.
  • @levkin/playkit is a private git dependency — CI clones it over HTTPS using a GITEA_TOKEN secret if set (see "Allow private playkit clone" step). If that secret isn't configured for this repo yet, watch for an npm ci auth failure on the e2e job.
  • Secrets should come from Infisical LevkinOps synced to Gitea Actions — see ansible docs/hardening/SECRETS.md. I did not add/modify any secrets myself.

Test plan

  • git add/commit scoped to only the e2e harness + CI wiring (no build artifacts, no real .env, no hardcoded credentials — verified via grep)
  • Watch the e2e CI job on this PR; confirm npm ci can clone @levkin/playkit and the two credential-free specs (login page, API health) pass
## Summary - Add `e2e/` Playwright harness (via `@levkin/playkit`) smoke-testing the public DEV host: - Login page loads on the public hostname - Sign-out never redirects to a LAN host (Kolby #57 regression guard) - FastAPI `/health` returns `{ "status": "ok" }` - Forgot-password email lands in Mailtrap with a public reset link (Kolby #56 regression guard) - Wire a new `e2e` job into `.gitea/workflows/ci.yml`: self-hosted runner, installs Chromium, runs `npx playwright test`, uploads the HTML report as an artifact on failure. Gated behind the existing `skip-ci-check` job like the other lanes. - Add root `install:e2e` / `test:e2e` npm scripts for local use. - Gitignore e2e build artifacts (`node_modules`, `playwright-report`, `test-results`, `blob-report`, `.auth`, `.env`). ## Notes - Sign-out and forgot-password specs self-skip when `E2E_ADMIN_*` / `MAILTRAP_*` secrets aren't present; only the public login-page + API health specs are required to pass. - `@levkin/playkit` is a private git dependency — CI clones it over HTTPS using a `GITEA_TOKEN` secret if set (see "Allow private playkit clone" step). If that secret isn't configured for this repo yet, watch for an `npm ci` auth failure on the `e2e` job. - Secrets should come from Infisical `LevkinOps` synced to Gitea Actions — see ansible `docs/hardening/SECRETS.md`. I did not add/modify any secrets myself. ## Test plan - [x] `git add`/commit scoped to only the e2e harness + CI wiring (no build artifacts, no real `.env`, no hardcoded credentials — verified via grep) - [ ] Watch the `e2e` CI job on this PR; confirm `npm ci` can clone `@levkin/playkit` and the two credential-free specs (login page, API health) pass
ilia added 1 commit 2026-07-14 16:12:17 -05:00
test: add Playwright e2e smoke suite for punimtag dev
All checks were successful
CI / skip-ci-check (pull_request) Successful in 4s
CI / docker-ci (pull_request) Successful in 5s
CI / secret-scan (pull_request) Successful in 10s
CI / e2e (pull_request) Successful in 46s
0a9223c943
Add an e2e/ Playwright harness (via @levkin/playkit) that smoke-tests
the public DEV host: login page loads, sign-out never redirects to a
LAN host, FastAPI /health responds, and forgot-password mail lands in
Mailtrap with a public reset link (Kolby #56/#57 regressions).

Wire it into Gitea Actions as a new `e2e` job (self-hosted runner,
Chromium via Playwright), gated behind the existing skip-ci-check.
Add npm root scripts (install:e2e, test:e2e) and gitignore e2e build
artifacts (node_modules, reports, .env).
ilia merged commit 0f24e7e6ba into dev 2026-07-14 16:13:57 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ilia/punimtag#60
No description provided.