Skip to content

ci: macOS runs serial + unready fast-fail + record/isolated docs (#190 follow-ups)#192

Merged
borisbat merged 1 commit into
masterfrom
bbatkin/issue190-recording-tests-not-isolated
Jun 7, 2026
Merged

ci: macOS runs serial + unready fast-fail + record/isolated docs (#190 follow-ups)#192
borisbat merged 1 commit into
masterfrom
bbatkin/issue190-recording-tests-not-isolated

Conversation

@borisbat

@borisbat borisbat commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-ups from the #190 investigation. Three things, all stemming from how the headless suite behaves on the weak GitHub macOS runner.

1. macOS runs the suite serially (no --isolated-mode)

The headless suite was occasionally erroring with "daslang-live not ready after 30s" (first seen as a test_plot_getters_render flake). Root cause: the GitHub macOS runner is only ~3 vCPU, but the suite runs --isolated-mode-threads 4 — 4 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. It's not test-specific and not a logic bug — just CPU starvation.

Fix: macOS opts out of isolated mode (serial, one host at a time → no contention). ubuntu keeps isolated-4. The macOS sweep timeout is bumped to 1800s since serial is slower. Verified locally: full suite serial headless = 169/169 (198s).

2. Unready path fails fast (no 120s dead-wait)

The failure above was reported at 120s, not 30s: 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 the (already-decided-at-30s) "not ready" panic. Now it posts /shutdown first, so the host exits once it drains and the failure surfaces promptly. The 120s cap stays as the outer safety net (not lowered, so genuinely-slow test bodies aren't killed).

3. Docs: recordings can't run in macOS CI (no GL)

From the same investigation (the original #190 framing): the GitHub macOS runner has no usable OpenGL surface — a windowed recording host fails glfwCreateWindow with Glfw Error 65545: NSGL: Failed to find a suitable pixel format, renders zero frames, and that zero-frame output (not a render throttle) is what made content-time gating spin. Documented in tests.yml, alongside why isolated mode is correctness-safe (every [test] is with_imgui_app — headless, no GL window) and the rule that any future recording-bearing [test] must run in a separate, non-isolated step on a GL-capable runner.

Related

Rebased on master so #191 stays intact.

Refs #190

🤖 Generated with Claude Code

…190)

Investigating #190 on the GitHub macOS runner showed it isn't a render throttle:
the runner has no usable OpenGL surface, so a recording host's glfwCreateWindow
fails with "Glfw Error 65545: NSGL: Failed to find a suitable pixel format" and
init() panics ("can't create window"), rendering zero frames. That zero-frame
output is what made content-time gating spin until the wall-clock fallback — the
hang #190 describes. Recordings therefore can't run in CI on macOS at all
(tutorial videos are made on Windows / real hardware).

Document this in the integration-tests step, alongside why isolated mode is safe
for the headless suite (every [test] is with_imgui_app — no GL window) and the
rule that any future recording-bearing [test] must run in a separate,
non-isolated step on a GL-capable runner. No behavior change — the 47 record_*.das
are def-main scripts dastest already skips.

Refs #190

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@borisbat borisbat force-pushed the bbatkin/issue190-recording-tests-not-isolated branch from 141e094 to d4aa1bf Compare June 7, 2026 09:55
@borisbat borisbat changed the title ci: recording smoke test on macOS + document non-isolated rule (#190) ci: document macOS-CI can't record (no GL) + non-isolated rule (#190) Jun 7, 2026
@borisbat borisbat merged commit 88d7d0e into master Jun 7, 2026
5 checks passed
@borisbat borisbat changed the title ci: document macOS-CI can't record (no GL) + non-isolated rule (#190) ci: macOS runs serial + unready fast-fail + record/isolated docs (#190 follow-ups) Jun 7, 2026
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