ci(e2e): bound the playwright apt step so a stalled mirror can't eat the job - #6239
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What happened
Run 32264701513 shard 2, attempt 1, step by step:
npx playwright install-deps chromiumRun e2e testsThe log shows apt printing its mirrorlist at
14:35:57and then nothing at all until the job was cancelled at14:46:56— 11 silent minutes on an Azure apt mirror. The runner then reapednpm exec playwright install-deps chromiumas an orphan. The tests themselves take 87 seconds.With no bound on the step, a stalled mirror is free to consume the job's whole 35-minute budget, and the only signal is a check that sits there looking busy.
Change
timeout-minutes: 5on both Playwright install steps, ine2e.yml(e2e-shard) andtest.yml(web-component-tests) — all four have the same apt exposure. GitHub kills the step's whole process tree, so a stall becomes a fast, obvious red that re-runs in ~4 minutes.Headroom is generous: 25s observed for
install-depson a cache hit, and the cache-miss path (install --with-deps, which also downloads the browser) is well under 5 minutes.Not in scope
timeouton the shell command only signalsnpx; apt survives as an orphan holding the dpkg lock, so attempt 2 fails on lock contention. Worth revisiting if mirror stalls turn out to be frequent rather than rare — right now this is n=1.e2e-shard (2)exec p50 is 4.5m / p90 9.4m against shard 1's 3.9m / 6.0m. Real, but a separate problem from this one.test.yml, and effectively zero fore2e.yml. Whatever this run cost, it was not queue.Testing
YAML parses and the four timeouts land on the intended steps. Otherwise this is CI config — the e2e run on this PR exercises the cache-hit path.
Summary by cubic
Bounds the Playwright install steps in CI to 5 minutes so a stalled apt mirror can’t consume the whole job. Previously these steps were unbounded and could hang silently; now they time out in 5 minutes and GitHub kills the process tree, failing fast and making reruns quick.
timeout-minutes: 5to four steps across.github/workflows/e2e.ymland.github/workflows/test.ymlfor bothinstall chromium --with-depsandinstall-deps chromium.Written for commit 55c583b. Summary will update on new commits.