Repository navigation
test(head-turn): one readiness signal and a browser smoke in CI - #115
Merged
Merged
Conversation
… browser
The demo now sets `#demo[data-ready="true"]` once the model and pages
have loaded and the first render has completed, and only then. Error
paths leave it absent. A Playwright smoke waits on exactly that signal
(30 s), then asserts:
- head and body directions under real pointer events;
- the bounds and clamps of all six dials;
- the wind and gravity per mode.
The smoke runs in the Pages workflow with a 3-minute step bound and no
retries.
The previous hand-written waiter passed `{timeout: 60000}` as the
predicate argument, so its effective timeout was 30 s, not 60 s.
Draft. In the remote pool's headless Chromium, a cold first launch
stalls for about 79 s inside one native Canvas2D `fillRect` in
renderer.init, measured on monotonic clocks in both the page and Node.
Readiness therefore misses the 30 s bound. The Chromium flags in the
smoke are that environment's last experiment, not a proven remedy.
This commit exists so the smoke runs on the CI runner it targets.
Refs #113
Co-Authored-By: Naru <342599188+fj-naru[bot]@users.noreply.github.com>
Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
Contributor
Author
|
HQ measurement: on the GitHub runner, cold readiness passes. The step started at 10:03:45 and HEAD_TURN_MEASUREMENTS was printed by 10:04:16. The 79 s Canvas2D stall is specific to the remote pool's WSL Chromium, so no play card is needed. The run then failed on the smoke's own first clamp assertion ( |
… experimental Chromium flags The first CI run passed cold readiness on the GitHub runner. The 79 s Canvas2D stall was specific to the remote pool's WSL Chromium. The run then failed in the smoke's own clamp probe (`yaw clamp -1000000: expected -15, got undefined`): `rig.bone()` returns the bone's world state, not the local rotation channel. The probe now checks the unchanged min/neutral/max expectations against both `setDialsDirect().dials` and the public BoneAdjust locals after the original callback, which it restores in `finally`. The experimental Chromium flags are gone; launches use Playwright's defaults. Local evidence: - 10/10 consecutive fresh-process runs. - Each planted regression is caught: a flipped yaw sign and a missing environment. Each restores to green. - 6/6 readiness controls: delayed or failed model and atlas, a failed first render, automatic clip. - `bun run test` 75/0. - build:ci and verify pass. - The smoke passes on the built `_site` artifact. Closes #113 Co-Authored-By: Naru <342599188+fj-naru[bot]@users.noreply.github.com> Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
firejune
marked this pull request as ready for review
October 29, 2026 10:30
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
Closes #113.
#demo[data-ready="true"]. It is set only after model and pages have loaded and the first render has completed. Error paths leave it absent.scripts/head-turn-smoke.mjswaits on exactly that signal for 30 s, then asserts:The first CI run (40854424528) passed cold readiness on the GitHub runner. The 79 s Canvas2D stall seen in the remote pool's WSL Chromium is specific to that environment, not to the demo or the runtime. That run then failed in the smoke's own clamp probe, which read
rig.bone()(world state) instead of the local channel. The probe now reads the public API.bun run test/build:ci/verify_siteThe earlier hand-written waiter's "60 s" was really 30 s, because its options were passed as the predicate argument.
🤖 Generated with Claude Code