You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci: shard Playwright E2E by measured suite timings (follow-up to #383) #434
After #383 parallelised Go tests, E2E and the image check, the Playwright E2E job is now the critical path: about 25 min of the 25–28 min PR runs. With several PRs in flight, jobs also queue behind each other, so total wall time often reaches 40–50 min.
#383 deliberately deferred E2E sharding until we had measured timings ("sharding should follow measured timings from a live run rather than copying upstream's assignments").
Proposal
Split the E2E job into N shards (start with 3) that run in parallel, based on measured per-suite durations from recent green runs:
Extract per-suite wall time from the last several green 🎭 Playwright E2E Tests logs (the === E2E SUITE: … === markers), and put the table in the PR.
Assign suites to shards to balance total time (greedy longest-first). Keep the assignment in a checked-in manifest, so it is reviewable and updatable.
Each shard prepares the same fixture as today (freshen, seed SQL, corescope-migrate, seeds) and runs its own local server on its own port.
A guard test fails CI if a new E2E suite file is not assigned to any shard, so suites cannot silently drop out.
Keep the fork guards (9 in deploy.yml, 1 in release-fast-path.yml). No publish or deploy from the fork.
Acceptance
The per-suite timing table and the shard assignment are in the PR.
A PR-triggered run shows every shard green, and the measured E2E wall time is down versus the current ~25 min. Report before/after for at least two runs.
The unassigned-suite guard and the fail-closed gate are tested (mutants shown red).
Consider the runner-minute cost: shards repeat the setup. Report total runner minutes before and after.
Fixed by #436 (merged as 822cd34c1f437920e6ed13508837fb8c5d92ff71). Remaining nits from the review on #436: job-level env now reaches every suite, e2e-report has no timeout-minutes, 1-day artifact retention limits late re-runs, and the manifest could be one suite per line.
Activity
Merge origin/master before measured E2E sharding (#434)
ci: shard measured Playwright suites behind fail-closed gate (#434)
Merge origin/master hardening into E2E sharding (#434)
Merge origin/master hop resolution into E2E sharding (#434)
Merge pull request #436 from dborup/codex/issue-434-e2e-shards
dborup commentedon Oct 13, 2026
Fixed by #436 (merged as
822cd34c1f437920e6ed13508837fb8c5d92ff71). Remaining nits from the review on #436: job-level env now reaches every suite, e2e-report has no timeout-minutes, 1-day artifact retention limits late re-runs, and the manifest could be one suite per line.