feat(ci): close PMS-141 - promote E2E to merge gate on PRs to main #111
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/pms-141-e2e-merge-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes PMS-141.
What
PMS-140 shipped the post-merge informational E2E run. PMS-141 promotes the suite to a merge gate: every PR targeting
main(feature PRs andrelease/*PRs alike) now triggers the E2E run, in addition to the existing post-merge run and a new manualworkflow_dispatch.Triggers + pre-flight gates
pushtomain(post-merge validation)scripts/wait-for-deploy.mjspolls/api/v1/versionuntil the pushed SHA appears (10-min budget)pull_requesttomain(merge gate)scripts/health-check.mjsone-shotGET /api/v1/health(30s timeout) - a PR SHA never deploys to staging, so a version gate would always time outworkflow_dispatchpushConcurrency
Single
e2e-staginggroup,cancel-in-progress: false. Every commit (post-merge + every PR) gets exercised once it reaches the queue. Trade-off: slower throughput, but the per-email login rate limit (5/min,src/modules/auth/routes.rs) is never contested by parallel runs, which would 429 the SPA login mid-suite.Out of scope (operator step)
Flipping
e2eto a required status check on themainbranch protection settings in Forgejo is what actually makes the gate enforceable. PMS-141's spec calls for ~10 consecutive green post-merge runs before flipping that switch; revisit the threshold once observed flakiness data backs or revises the assumption.Test plan
pull_requestpath: setup-node + Playwright +scripts/health-check.mjs+ the suite. (The PR-mode pre-flight runs against whatever staging is currently serving, since this PR's SHA is not deployed.)Wait for staging to serve this commitstep is SKIPPED (post-merge-only).pushrun useswait-for-deploy.mjs(deploy-sync gate) as before.e2eas a required status check onmainbranch protection once stability bar is met.