test: playkit v0.3.1 adoption, Zod widening, PROD smoke, NextAuth write gates #68

Merged
ilia merged 8 commits from feat/admin-manage-users-e2e into dev 2026-07-14 22:24:07 -05:00

8 Commits

Author SHA1 Message Date
317a135daa fix: causal cross-session test hung on Active-only filter, not a real bug
All checks were successful
CI / skip-ci-check (pull_request) Successful in 4s
CI / docker-ci (pull_request) Successful in 7s
CI / secret-scan (pull_request) Successful in 14s
CI / admin-unit (pull_request) Successful in 1m21s
CI / viewer-unit (pull_request) Successful in 1m48s
CI / e2e (pull_request) Successful in 2m38s
statusBadgeText(email) after deactivating a user hung for the full test
timeout: ManageUsersContent.handleEditUser() refetches the list with the
current statusFilter ('active' by default) after every save, so the
just-deactivated row silently drops out of view — the locator then waits
forever for a row that filter will never show again (no actionTimeout is
configured, so only the outer test timeout eventually kills it).

Add ManageUsersPanel.showAllUsers() and switch to it before reading the
badge. Also gave the test more headroom (60s -> 120s) since it drives two
full UI logins plus create/edit/verify against a shared-CI DEV LXC.

Verified: full local suite green (37 passed, 6 skipped) against DEV.
2026-07-14 23:19:40 -04:00
262e7348d6 ci: retrigger after bumping git-ci-01 to 8GB (was OOM-killing act_runner)
Some checks failed
CI / skip-ci-check (pull_request) Successful in 4s
CI / docker-ci (pull_request) Successful in 7s
CI / secret-scan (pull_request) Successful in 12s
CI / admin-unit (pull_request) Successful in 1m18s
CI / viewer-unit (pull_request) Successful in 2m12s
CI / e2e (pull_request) Failing after 3m3s
2026-07-14 22:44:55 -04:00
9ffaec7cf7 ci: retrigger after clearing corrupted act_runner cache on git-ci-01/02
Some checks failed
CI / skip-ci-check (pull_request) Successful in 4s
CI / docker-ci (pull_request) Successful in 6s
CI / secret-scan (pull_request) Successful in 12s
CI / e2e (pull_request) Failing after 41s
CI / admin-unit (pull_request) Successful in 43s
CI / viewer-unit (pull_request) Failing after 45s
2026-07-14 22:37:43 -04:00
a38cc359d8 ci: retrigger e2e run (prior run hit unrelated setup/login timeout)
Some checks failed
CI / skip-ci-check (pull_request) Successful in 5s
CI / docker-ci (pull_request) Successful in 6s
CI / secret-scan (pull_request) Successful in 11s
CI / admin-unit (pull_request) Successful in 29s
CI / e2e (pull_request) Failing after 52s
CI / viewer-unit (pull_request) Failing after 56s
2026-07-14 22:28:05 -04:00
f080a0cdb1 fix: locate manage-users row action buttons positionally
Some checks failed
CI / skip-ci-check (pull_request) Successful in 5s
CI / docker-ci (pull_request) Successful in 7s
CI / secret-scan (pull_request) Successful in 12s
CI / admin-unit (pull_request) Successful in 35s
CI / e2e (pull_request) Failing after 2m59s
CI / viewer-unit (pull_request) Failing after 3m3s
CI's first run showed the Edit button's aria-label exact-match locator
timing out against the live table even though the same row resolved
fine for badge-text reads moments earlier — switch to positional
lookup (Edit is always the first action button, Deactivate/Delete the
last) instead of relying on exact accessible-name matching.
2026-07-14 22:22:50 -04:00
37f565dd04 test: Manage Users real CRUD + causal cross-session e2e coverage
Some checks failed
CI / skip-ci-check (pull_request) Successful in 5s
CI / docker-ci (pull_request) Successful in 7s
CI / secret-scan (pull_request) Successful in 14s
CI / viewer-unit (pull_request) Successful in 54s
CI / admin-unit (pull_request) Successful in 2m35s
CI / e2e (pull_request) Failing after 4m31s
admin.manage-users.spec.ts only opened/closed the panel; the actual
create/edit/delete flow through the UI was untested. Adds a page object
(ManageUsersPanel) and two specs: full CRUD through the panel, and a
causal cross-session check that deactivating a user via the admin UI
immediately revokes that user's already-open session (NextAuth jwt
callback re-checks isActive on every request, per issue #57's fix).

Every run creates and tears down its own disposable e2e-manage-test-*
account since punimtagdev shares its Postgres DB with MirrorMatch.
2026-07-14 22:08:34 -04:00
4273162d9e test: interceptNetworkCall + Zod widening, PROD smoke, NextAuth write gates
Some checks failed
CI / skip-ci-check (pull_request) Successful in 4s
CI / docker-ci (pull_request) Successful in 6s
CI / secret-scan (pull_request) Successful in 11s
CI / viewer-unit (pull_request) Failing after 1m3s
CI / admin-unit (pull_request) Failing after 1m1s
CI / e2e (pull_request) Failing after 59s
- upload.smoke.spec.ts / gallery.search-filters.spec.ts: replace
  waitForResponse/text-scrape with typed interceptNetworkCall spies (status
  + JSON shape) on the real upload POST and the filtered /api/search GET.
- api.fastapi-login.spec.ts: Zod-validate the FastAPI TokenResponse and
  /auth/me UserResponse instead of loose casts. gallery.search-filters.spec.ts
  gets the same treatment for the Prisma-backed SearchResponse.
- prod.smoke.spec.ts: opt-in (PROD_BASE_URL) health + login-page check on a
  real PROD host; skips as a no-op until the PROD LXC exists (none does yet
  per `pct list` — see ROADMAP).
- viewer.write-gates.spec.ts: NextAuth (browser-session) hasWriteAccess gate
  on POST /api/faces/{id}/identify — viewer 403s, admin passes through.
  Provisioned a third, independent auth-DB user (e2e-viewer@levkine.ca,
  hasWriteAccess=false) for this via ansible's provision-punimtag-e2e-user.py
  (see that repo for the vault/Infisical/Gitea/Vaultwarden side).
2026-07-14 22:07:30 -04:00
ccb961d87a test: playkit v0.3.1 network monitors, authed filters, admin-frontend Vitest
Bump @levkin/playkit to v0.3.1 (network interception helpers) and land the
work it unblocked: startNetworkErrorMonitor on gallery/search/upload/manage-
users, Favorites + People filter UI e2e (storageState), and a fix for the
lingering `res.data: unknown` / Mailpit-vs-Mailtrap type errors in the mail
and catalog specs. Also adds Vitest coverage + a CI job for admin-frontend,
which had no test infra before this.
2026-07-14 22:01:27 -04:00