Skip to content

Retry the Playwright browser install in the e2e job - #551

Merged
richshaw merged 1 commit into
mainfrom
claude/issue-550-playwright-install-retry
Oct 22, 2026
Merged

richshaw merged 1 commit into
mainfrom
claude/issue-550-playwright-install-retry

Conversation

@richshaw

Copy link
Copy Markdown
Owner

Fixes #550.

The problem

CI on main went red at 6599746. The e2e job failed at playwright install --with-deps chromium because one Chromium download from Playwright's CDN failed. No test ran. The step has no retry, so a single bad download turns main red, and while main is red the pipeline merges nothing.

The fix

  • .github/workflows/ci.yml: the install step is now named Install Playwright Chromium and tries up to three times, 15 seconds apart. Each failed try logs a warning annotation. A download that fails all three times still fails the job.
  • Only the browser install retries. The migrate, build and test steps are unchanged.
  • I didn't add the browser cache the issue offered as optional, to keep the change to the one thing that broke.

Tests

  • Ran the loop under bash -e (the shell GitHub runs steps in), stubbing the install so it either succeeds on the second try (exit 0) or fails every time (exit 1, after three tries).
  • The workflow file parses as YAML and passes Prettier.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass (1305 tests).
  • This PR's own e2e job runs the new step.

This touches .github/workflows/, so it waits for the owner before merging.


Generated by Claude Code

One failed Chromium download from Playwright's CDN failed the e2e job
on main before any test ran. Try the install up to three times, 15
seconds apart; a download that fails every time still fails the job.

Fixes #550.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bds4PiJYfNQooN2quaa9Q
@richshaw richshaw added the pipeline:working A session is working on it right now label Oct 22, 2026 — with Claude
@richshaw
richshaw requested a balanced review from Copilot October 22, 2026 00:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@richshaw richshaw added pipeline:tophat pipeline:working A session is working on it right now and removed pipeline:working A session is working on it right now labels Oct 22, 2026 — with Claude

Copy link
Copy Markdown
Owner Author

Tophat: passed

This PR only changes CI config (.github/workflows/ci.yml), so there's nothing to click in the app. Instead I ran the new step's script, taken from the workflow file at 6fa4ee5, under bash --noprofile --norc -eo pipefail (the shell GitHub Actions uses for run: steps). I stubbed pnpm and cut the 15-second pause to 0.

Check Result What I saw
Install succeeds first time ✅ 1 try, exit 0, no warning
Install fails once, then succeeds ✅ 2 tries, one ::warning:: annotation, exit 0
Install fails every time ✅ 3 tries, three warnings, exit 1, so the job still fails
set -e doesn't cut the loop short ✅ the failing install && exit 0 and the final [ … ] && sleep don't end the script early
The real step on this PR's CI ✅ the e2e job passed on this head, with the browser installed by the new step
Only the install retries ✅ the migrate, build and test steps are unchanged
Repo checks ✅ Prettier on the workflow file, pnpm lint, typecheck, knip and test (1305 tests) all pass

Not UX. It touches .github/workflows/, so it waits for the owner after review.

Session: https://claude.ai/code/session_01NMyKC7dGX5TJNns3yrqEp9


Generated by Claude Code

@richshaw richshaw added pipeline:review pipeline:working A session is working on it right now and removed pipeline:tophat pipeline:working A session is working on it right now labels Oct 22, 2026 — with Claude

@richshaw richshaw left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: passed (round 1)

The PR wraps the e2e job's playwright install --with-deps chromium in three tries, 15 seconds apart, so one failed browser download no longer turns main red. It does that correctly. Under the bash -e that Actions uses, a failure on the left of && doesn't end the step, so a failed try moves on to the next one. A successful try exits 0 at once. After a third failure the step reaches exit 1, so a download that fails every time still fails the job. Only the install retries: migrate, build and the e2e tests are unchanged, as the issue asked. Both items in #550's "Done when" are met, and the PR description says the optional browser cache was left out on purpose.

Blocking (0): none
Optional (1): .github/workflows/ci.yml:108: the optional ~/.cache/ms-playwright cache from #550 would skip most downloads altogether. It was left out on purpose to keep this change small, and isn't worth a round.
Earlier threads: none. Copilot couldn't review (quota used up).
Checks: CI is green on 6fa4ee5 (lint-type-test, e2e, CodeQL). The e2e job ran the new step and installed the browser with it. I read the diff and the whole e2e job at this SHA. The tophat at 6fa4ee5 passed, after running the step's script against stubs for success on the first try, success on the second try and failure every time. No CHANGELOG entry is needed, since it changes nothing for people using OpenSignup or for self-hosters.

Waiting for the owner because it touches .github/workflows/ (high risk). The only thing to read is the 11-line run: block in the e2e job. main is red until this lands or someone re-runs run 39693276269 by hand. While it's red the pipeline merges nothing, and four PRs (#541, #542, #546, #547) are waiting at pipeline:merge.

Session: https://claude.ai/code/session_01VTwD1XAzJGRPcFv7aK2kRo


Generated by Claude Code

@richshaw richshaw added pipeline:owner Passed; waits for the owner (UX or high-risk) and removed pipeline:review pipeline:working A session is working on it right now labels Oct 22, 2026 — with Claude
@richshaw
richshaw merged commit 4ab7b87 into main Oct 22, 2026
5 checks passed
@richshaw
richshaw deleted the claude/issue-550-playwright-install-retry branch October 22, 2026 01:53
@richshaw richshaw removed the pipeline:owner Passed; waits for the owner (UX or high-risk) label Oct 22, 2026 — with Claude
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI on main is red: the e2e job fails when the Chromium download fails

3 participants