ci(tests): retry a Chromium browser run that loses a test iframe - #595
hyanmandian wants to merge 2 commits into
Conversation
… iframe The chrome and edge jobs of the Tests workflow sometimes lose a test iframe under the webdriverio provider. The run then either fails at once with "Cannot connect to the iframe" / "Failed to fetch dynamically imported module", or prints nothing more until the 20 minute job timeout. It is not tied to a test file: the stuck iframe was a different, trivial file each time, the same commit passes in firefox, safari, every Node, Deno and Bun, and main hit it too (run 35391927376, the merge of #555, which only added a verification tag). Over the last 40 PR runs 12 Chromium jobs hit it; firefox and safari never did. A whole browser run takes 1 to 3 minutes, so the step now wraps it in `timeout 300`, and runs it once more only when the first attempt timed out or failed with one of those two errors. Any other failure, a failing assertion included, fails the step on the first attempt, so no test is skipped or retried for its own sake. The matrix sets fail-fast: false, so a flake in one browser no longer cancels the others and hides their result. The browser name reaches the script through an env variable instead of an expression inside `run`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLkm9YrtAifc6XCLFVEsdH
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #595 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 186 186
Lines 2069 2069
Branches 613 613
=========================================
Hits 2069 2069
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Tree-shaking report✅ No bundle size impact. All 156 exports are the same size as on the base branch (full import 649.3 KB, gzip 166.4 KB). All exports (156)
How this is measuredEvery export is imported alone into an esbuild consumer bundle (minified, tree-shaken) built from the head and from the base of this pull request; the sizes are the resulting bundles, gzip is their gzipped size. 🔴 marks a regression: a pre-existing export that grew more than 20% and more than 256 B, or the bundle importing every pre-existing export growing more than 5%. 🟡 is growth under the threshold, 🟢 a decrease, ⚪ no change, 🆕 an export that does not exist on the base (never a regression), 🗑️ an export that was removed. An intentional increase is accepted with the |
… iframe Ported from #595 (3d1ca00), which targets main: Edge failed twice on this branch with "Cannot connect to the iframe" in assemble-boleto-bancario.test.ts, a file this stack does not touch. The change is identical to #595's, so it merges cleanly whichever of the two lands first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLkm9YrtAifc6XCLFVEsdH
One retry was not enough: Chrome lost an iframe on both attempts in #600 and #604. The retries now run with --no-file-parallelism, since the iframes are lost when many files load at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLkm9YrtAifc6XCLFVEsdH
What does this PR do?
The chrome and edge jobs of the Tests workflow sometimes lose a test iframe under the webdriverio provider. When that happens, the run does one of two things:
Cannot connect to the iframeorFailed to fetch dynamically imported module;The flake does not come from any test file:
mainhit it too, in run 35391927376, the merge of docs(site): add the Google Search Console verification tag #555, which only added a verification tag.The change, in
.github/workflows/tests.ymlonly:timeout 300. A whole browser run takes 1 to 3 minutes.::warning::is printed. Each retry:--no-file-parallelism, because the iframes are lost when many test files load at once;timeout 420.Any other failure, a failing assertion included, fails the step on that attempt, so no test is skipped or retried for its own sake.
fail-fast: falseon the matrix, so a flake in one browser no longer cancels the others and hides their result.envvariable instead of an expression insiderun.Why two retries: the first version retried once, and on 28/09 Chrome lost an iframe on both attempts in #600 and #604.
Checklist
My commit/PR title follows Conventional Commits.
I added or updated tests covering this change. There are no library code changes. The step script was run locally under
bash --noprofile --norc -eo pipefail(the Actions default), with stubvpandtimeout, in five cases:In the retries, the stub
vpreceived--no-file-parallelism.Documentation: not applicable (CI only).
npm run checkpasses locally.This change does not introduce a breaking change.
This change does not add any runtime dependency.
Additional context
Independent of the #558–#605 stack and can merge before it. The same file content is in #596 and merged up to #605, so merging both does not conflict.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RLkm9YrtAifc6XCLFVEsdH