test(e2e): a swept stimulus has no fixed position to compare against - #132
Merged
Conversation
Two flakes left in the real-renderer suite after #130, both found by running it on repeat. **The demo comparison compared a moving number.** `_canonical` already drops the runtime state a tutorial cannot be held responsible for — `enabled` for a stimulus an animation owns, `phase_cycles` for a drifting grating — but not the position of a stimulus a sweep is moving. `moving_target` arms a MoveAlongSegments2D that runs forever, so by the time the test retrieves the config the target has travelled some way along its path, and how far depends on how many frames passed. It drops `pos_px` for any stimulus driven by an animation that writes position every frame. **The teardown could still fail the last test.** #130 escalated a slow exit to SIGKILL; on a busy machine even the post-kill reap outran its five seconds, and the error landed on whichever test happened to run last. SIGKILL is not negotiable, so a process still there is stuck in the kernel handing the display back: the teardown now says so with a warning instead of turning cleanup time into a test result. Real renderer: 141 passed, 6 xfailed, twice in a row, and the demo group 3/3 on repeat. Null unchanged. Co-Authored-By: Claude Opus 5 <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.
Two flakes left in the real-renderer suite after #130. Both were found by running
make test-e2eon repeat locally; CI runs only the null renderer and sees neither.The demo comparison compared a moving number
_canonical()already drops the runtime state a tutorial script cannot be held responsible for reproducing —enabledfor a stimulus an animation owns,phase_cyclesfor a drifting grating. Position was missing from that list.moving_targetarms aMoveAlongSegments2DwithFinalAction::RESTART, so it sweeps forever. By the time the test retrieves the config, the target has travelled some way along its path — how far depending on how many frames elapsed between the script exiting and the retrieve. Under the null renderer the gap is usually short enough to land on the start point; under a real 60 Hz display it often is not.It now drops
pos_pxfor any stimulus driven by an animation that writes position every frame (MoveAlongPath2D,MoveAlongSegments2D,ExternalPosition2D) — the same rule already applied to the other two runtime values.The teardown could still fail the last test
#130 escalated a slow exit to SIGKILL, but kept a five-second reap after it. On a busy machine even that outran, and the
TimeoutExpiredlanded on whichever test ran last (test_textbox2_colors). SIGKILL is not negotiable, so a process still present is stuck in the kernel handing the display back — the teardown now warns instead of turning cleanup time into a result about the code under test.Verification
Real renderer (X11, GTX 1650): 141 passed, 6 xfailed, twice in a row; the demo group 3/3 on repeat. Null renderer: 141 passed, 6 xfailed. Test-suite only — no server or client code touched.
🤖 Generated with Claude Code