Repository navigation
ci(integration-tests): run Playwright with 3 workers instead of 2, allowlist unused keycloak font 404 - #7393
corneliusroemer-agent wants to merge 9 commits into
Conversation
…HT_WORKERS Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
|
Claude finished @corneliusroemer's task in 1m 4s —— View job Review: 3 Playwright workers
No blocking issues. The change is a single flag value in Checks I ran against the change:
Observations (not blockers):
Your writeup of why the 2-worker cap from #6370 no longer applies is unusually well-evidenced — tracing Note: I can't modify files under --- • Branch: |
|
I'll do a few more runs to see whether it really is stable enoughl. |
Keycloak's login theme requests patternfly's OpenSans-Light webfont from resources-common and gets a 404, which the chromium console check turned into intermittent failures (edit-account.spec.ts:6, cli end-to-end-flow). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
|
Claude finished @corneliusroemer's task in 1m 35s —— View job Review: 3 Playwright workers + Keycloak font 404 allowlist
No blocking issues. Both changes are small and revertible, and the benchmark table plus the archaeology on why #6370's 2-worker cap no longer applies makes the worker bump well-justified rather than a re-roll. Checks I ran:
One inline comment on the allowlist scope (only Two things carried over from the earlier review, neither a reason to hold this up:
Note: I can't modify files under |
| // Keycloak's login theme CSS references a font Keycloak itself 404s on | ||
| const harmlessUrls = [ | ||
| '/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.', | ||
| ]; |
There was a problem hiding this comment.
The allowlist covers exactly one font file, but patternfly's CSS references several OpenSans faces (Regular, Semibold, Bold, Italic, …) from the same dist/fonts/ directory, and the browser only fetches the ones a rendered page actually needs — which is presumably why this showed up as a 1-in-8 flake rather than a deterministic failure. If a different weight gets requested on some other login page, you'll hit the identical failure with a different filename and need another round of PR + benchmark.
Since none of these fonts come from Loculus code (they're upstream Keycloak/keycloakify theme resources), allowlisting the directory loses nothing that this check could meaningfully catch:
| // Keycloak's login theme CSS references a font Keycloak itself 404s on | |
| const harmlessUrls = [ | |
| '/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.', | |
| ]; | |
| // Keycloak's login theme CSS references patternfly fonts Keycloak itself 404s on | |
| const harmlessUrls = [ | |
| '/resources-common/node_modules/patternfly/dist/fonts/', | |
| ]; |
Speed up integration tests by using 3 Playwright workers up from 2. On chromium the test step drops from ~11 min to ~7 min, Firefox ~15min to ~14min.
Measurements
Benchmarked for different numbers of workers:
Why it was lowered to 2, and why that reason no longer applies
#6370 (May 2026) went from 4 to 2 workers because of intermittent
ERR_EMPTY_RESPONSE/ dropped-connection failures, suspected to be caused by an overloaded runner (CPU was near 100% even at 2 workers). Since then those failures have been traced to other causes.Details
ERR_EMPTY_RESPONSEand its firefox formNS_ERROR_NET_RESETcame from the runner running out of disk (94% of 71.6 GiB used, then kubelet evicting hundreds of pods mid-run), not from CPU load. Those eviction storms were in 20 of 396 failed runs before 2026-07-25 and 0 of 180 after. They stopped around the k3s upgrade, for reasons not established, and a normal run still sits at about 90% disk.✓one early (test(integration): wait for uploads to complete, not for N checkmarks #7267), the stale search results table (fix(e2e): Eliminate race condition by asserting row-count=1, refactor shared logic #7198), the tooltip hover that landed before hydration (test(integration-tests): retry tooltip hover to hover not just once before React hydrates #7323), and the 90 s processing waits thatraw-reads-processing's 20m CPU limit in CI had pushed over the edge (the limit is now gone).None of today's 8 browser jobs, at any worker count, had a pod eviction, a browser crash or an OOM kill.
The one class that might still be load-sensitive is Firefox occasionally dying mid-test ("Target page, context or browser has been closed"). It is rare (n≈2 in recent surveys) and not understood, and more workers means more browser processes on the runner. If that or other load-sensitive failures come back after this change, the fix is either to deflake the specific test or to go back to 2.
Also ignores a 404 on
resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.*in the chromium console check. Keycloak's login theme requests that font and Keycloak doesn't serve it. It was the only failure in 8 runs at 3 workers (7/8 chromium, 8/8 firefox, 7/8 cli; 5 dispatched rounds plus the PR's own runs), and an unidentified Keycloak 404 had failededit-account.spec.ts:6at 2 workers before.If it turns out flakes go up again, we can just lower back down to 2 - it's cheap.
https://claude.ai/code/session_01LkfZS1emsiUHd4P4pK8sra
🚀 Preview: Add
previewlabel to enable