fix(ci): unblock the Playwright install and move the landing suite's port out of the ephemeral range - #382
Merged
Merged
Conversation
…ywright Every Playwright job in the repo — PR checks included — dies before it runs a test: Err:29 https://dl.google.com/linux/chrome-stable/deb stable/main amd64 Packages Hash Sum mismatch E: Failed to fetch .../binary-amd64/Packages.gz Hash Sum mismatch Failed to install browsers Error: Installation process exited with code: 100 Nightly run 34382957429 on master, attempts 1 and 2, three separate jobs. Every Ubuntu archive source fetched fine; only Google's chrome-stable index is broken, and `playwright install --with-deps` runs apt-get update across all of them, so one bad third-party repo fails the step. Playwright downloads its own Chromium and takes system deps from the Ubuntu archives — it never needs that repo — so remove the source list before installing rather than retrying against a broken mirror. Applied to all four install steps (e2e.yml E2E + Docs-E2E, nightly.yml E2E-Full + Landing-Feedback, whose creds guard is kept).
…range Same class as the 53061/53062 fix: Linux draws ephemeral source ports from 32768-60999, so :53080 — the landing suite's fixed webServer port — can be transiently held by one of the runner's own outbound connections, and Playwright then just polls a URL that never comes up. 53080 -> 31080, and the rule is recorded beside the constant. It appears in exactly one tracked file, so this is the whole sweep for that port. The six storybook ports (53050-53055) and the cross-framework harness (:53060) are deliberately NOT moved here: those origins are registered in the four cloud-drive providers' developer consoles (each storybook's .env.example, local-dev/.env.ports), so renumbering them is an external service-config change, not a repo change.
Review or Edit in CodeSandboxOpen the branch in Web Editor • VS Code • Insiders |
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.
Two independent CI fixes. The first unblocks every Playwright job in the repo; the second moves one more fixed listen port below the Linux ephemeral range. The storybook / cross-framework half of the port sweep is deliberately NOT here — see "Not done" below; it needs a decision that belongs to the maintainer, not to this PR.
1 — drop Google's chrome-stable apt source before
playwright installEvery Playwright job currently dies before it runs a test. Nightly run 34382957429 on master, attempts 1 and 2, three separate jobs, step "Install Playwright Chromium":
Every Ubuntu archive source fetched fine; only Google's chrome-stable index is broken, and
--with-depsrunsapt-get updateacross all sources, so one bad third-party repo fails the step. Playwright downloads its own Chromium and takes system deps from the Ubuntu archives — it never needs that repo — so the fix is to remove the source list, not to retry a broken mirror.Applied to all four install steps:
e2e.yml(E2E, Docs-E2E) andnightly.yml(E2E-Full, Landing-Feedback — itssteps.creds.outputs.presentguard is kept). Nothing indocs/,scripts/, orCONTRIBUTING.mddocuments this step, so there was nothing to keep in sync (grep -rn "playwright install\|with-deps\|chrome-stable" docs/ scripts/ CONTRIBUTING.md local-dev/*.md→ no hits).2 —
53080→31080(landing suite webServer)apps/e2e-test/playwright.landing.config.tsSame class as the 53061/53062 fix in #378: Linux draws ephemeral source ports from 32768–60999, so a fixed listen port in that window can be transiently held by one of the runner's own outbound connections, and Playwright then polls a URL that never comes up. The reason is recorded beside the constant, pointing at the resume harness that documented the rule.
Method: a small Node codemod over
git ls-files— exact-substring, longest-key-first, with an explicit KEEP list (53000,53050–53056,53060,53070). It rewrote 1 file;git grep 53080now matches only the explanatory comment.31050–31055,31060,31080were verified free repo-wide beforehand (only31061/31062are taken, by the resume harness).parity-fixtures.jsoncontains no port numbers at all, so no fixture regen is involved.Not done — the storybook ports (53050–53055) and the cf harness (53060)
Renumbering these would change external service configuration, which is the stop condition on this task:
.env.examplesays: "Add this Storybook's origin (http://localhost:5305x) to each provider's list of authorized JavaScript origins / redirect URIs in its developer console", and for OneDrive/Dropbox/Box "redirectUri defaults to window origin". So the six origins are registered in four developer consoles (Google Cloud, Azure, Dropbox, Box).local-dev/.env.portsrecords the same fact: "53056 sits inside the OAuth clients' registered redirect range (53050-53060)".Moving them silently breaks cloud-drive sign-in in the storybooks and the local playground until a human re-registers six origins in four consoles. Worth noting for whoever decides: the cf harness port is already env-overridable (
UPUP_E2E_SERVER_PORT), while the six storybook ports are baked into each package'sstorybookscript — so a CI-only override is a possible middle path that keeps the registered defaults intact.53000(the landing dev default) is also inside the ephemeral range but is left alone deliberately: it is the documented local-dev convention block (local-dev/LOCAL-DEV.md,local-dev/ports/landing.env,AGENTS_RULES.md), not a CI listen port.Suspected, not proven
Attempt 1 of that nightly lost the cross-framework suite to a silent 900 s
Timed out waiting 900000ms from config.webServer(job 102572070419) hours after a green ~52 s boot on dev. That is consistent with a storybook failing to bind a port inside the ephemeral range — Playwright only polls a URL and never surfaces the child'sEADDRINUSE— but it is a hypothesis, not a demonstrated cause: the rerun died at the apt step before it ever reached the cross-framework job.Gates (all via
rtk proxy, raw exit codes captured)yamlpackage; asserts all 4 install steps + theif:guard)pnpm run typecheckpnpm --filter @useupup/e2e-test run typecheckpnpm run test:qualityprettier --checkon all 3 touched filesNo package with unit tests was touched (
packages/angular'sserver-mode-drive.spec.tsreferences:53060, which this PR does not move), so no suite needed re-running beyond the hooks.