Commit 7a33cd7
test(e2e): W3 LIVE claim/conversion + deploy-lifecycle + env-switcher coverage (#173)
* test(e2e): W3 LIVE claim/conversion + deploy-lifecycle + env-switcher coverage
Real-backend (E2E_LIVE=1-gated) cross-surface E2E for the W3 matrix wave,
building on the WS1-P1 harness + W1/W2 specs (mirrors their gating, cohort
tagging, cleanup-ledger + reaper patterns exactly). Brevo-free: accounts are
minted via anon-provision → /claim (which returns a real session_token).
Flows covered:
- Claim/conversion (anon→claimed): anon provision → /claim → the resource is
team-owned + visible in GET /api/v1/resources; claim-replay of the same token
→ 409 already_claimed (single-use JWT, rule 7).
- Env switcher: provision dev vs prod → GET /api/v1/resources?env= returns only
that env (the dashboard's per-env read), provision echoes the resolved env
(rule 11).
- Deploy lifecycle [STAGING-ONLY]: /deploy/new → 202 accepted contract
(id/app_id/status/environment) → GET /api/v1/deployments/:id/events timeline
surface → DELETE → gone. Tier elevation uses the DEV-ONLY /internal/set-tier
(404s + skips loudly in prod — never crosses billing). Full Kaniko
build→live-URL leg deferred (too slow/heavy for E2E).
Each leg is a UI-action → backend-state-change → UI-read-surface assertion
(the login-outage class). Named live-*.spec.ts so per-PR CI ignores it and the
playwright.live.config.ts testMatch + the ledger reaper pick it up. Skips
cleanly (5 skipped) without E2E_LIVE.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(e2e): drop unused STATUS_BAD_REQUEST const (code-quality)
github-code-quality flagged the unused const in live-claim-deploy.spec.ts;
required_conversation_resolution on main blocked the merge. Remove the dead
constant.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 16ae02d commit 7a33cd7
1 file changed
Lines changed: 699 additions & 0 deletions
0 commit comments