ci+playwright: run macOS suite serially + unready fast-fail (#190 follow-up)#194
Merged
Conversation
…w-up) Fixes the intermittent "daslang-live not ready after 30s" error on macOS CI (first seen as a test_plot_getters_render flake). On the ~3-vCPU GitHub macOS runner, 4 parallel daslang-live hosts (--isolated-mode-threads 4) starve each other so hard that a host's /status takes ~10s to answer, racing the client's 10s per-request timeout — so wait_until_ready exhausts its 30s budget and the test errors before its body ever runs. - tests.yml: macOS now runs the suite SERIALLY (no --isolated-mode); bump the macOS sweep timeout to 1800s since serial is slower than 4-way. ubuntu keeps isolated-4. Doc note updated. - imgui_playwright with_imgui_app: on the unready branch, post /shutdown before fread_to_eof so the host exits once it drains, instead of blocking until the 120s popen watchdog. The readiness decision is made at 30s; this stops wasting the remaining ~90s (the failure was reported at 120s purely for this reason). Verified: full suite serial headless = 169/169 (198s locally). Refs #190 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
Follow-up to #192 (which merged the docs only). This adds the two actual fixes for the intermittent "daslang-live not ready after 30s" error on macOS CI (first seen as a
test_plot_getters_renderflake).Root cause
The GitHub macOS runner is only ~3 vCPU, but the headless suite runs
--isolated-mode-threads 4. Four paralleldaslang-livehosts starve each other so hard that a host's/statushealth check takes ~10s to answer — racing the client's 10s per-request timeout.wait_until_readynever registers a success, burns its 30s budget, and the test errors before its body runs. Not test-specific, not a logic bug — pure CPU starvation.Fixes
tests.yml— macOS runs serially (no--isolated-mode); ubuntu keeps isolated-4. One host at a time ⇒ no contention. macOS sweep timeout bumped to 1800s since serial is slower.imgui_playwright.das— unready fast-fail.with_imgui_app's unready branch read the child to EOF but never told it to quit, so it rode to the 120s popen watchdog before surfacing a failure already decided at 30s (this is why the flake reported as 120s, not 30s). Now it posts/shutdownfirst, so the host exits once it drains and the failure surfaces promptly. The 120s cap stays as the outer net so genuinely-slow test bodies aren't killed.Verification (actual GitHub macOS runner)
A
workflow_dispatchrun on this exact change (run 27097118245) confirmed macOS now runs serial (command line carries no--isolated-mode) and passes the full suite: 169 tests, 169 passed, 0 failed, 0 errors (SUCCESS, ~237s). Also green serially locally (169/169).Refs #190
🤖 Generated with Claude Code