Skip to content

ci+playwright: run macOS suite serially + unready fast-fail (#190 follow-up)#194

Merged
borisbat merged 1 commit into
masterfrom
bbatkin/issue190-macos-serial
Jun 8, 2026
Merged

ci+playwright: run macOS suite serially + unready fast-fail (#190 follow-up)#194
borisbat merged 1 commit into
masterfrom
bbatkin/issue190-macos-serial

Conversation

@borisbat

@borisbat borisbat commented Jun 7, 2026

Copy link
Copy Markdown
Owner

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_render flake).

Root cause

The GitHub macOS runner is only ~3 vCPU, but the headless suite runs --isolated-mode-threads 4. Four parallel daslang-live hosts starve each other so hard that a host's /status health check takes ~10s to answer — racing the client's 10s per-request timeout. wait_until_ready never 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

  1. 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.
  2. 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 /shutdown first, 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_dispatch run 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

…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>
@borisbat borisbat merged commit 9687e43 into master Jun 8, 2026
5 checks passed
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.

1 participant