fix(ci): pin uv to the matrix interpreter; de-flake the webengine resize test - #7
Merged
Conversation
…ize test
The test job synced with --python ${{ matrix.python }} but ran pytest with a
bare 'uv run', which re-resolved against .python-version (3.11) and rebuilt a
bare venv without dev deps — 'Failed to spawn: pytest' on 3.12/3.13. UV_PYTHON
now pins every uv invocation to the matrix interpreter and pytest runs with
--no-sync against the venv the sync step prepared.
test_plotly_backend_nudges_after_a_qt_resize flaked on CI at 2 s: a cold
runner spends seconds spinning up QtWebEngine on the GUI thread before the
resize debounce can be processed. Settle after show; wait up to 10 s.
A throttled trailing RangeEvent rides a QTimer that outlives its subscription — it can deliver after the render is disposed (CI caught it: DisposedError raised inside the Qt event loop from _propagate). The controller now no-ops on a disposed handle and drops panes that die underneath propagation, alongside the existing KeyError drop.
Whether the debounced plotly.resize lands in _command_queue or goes straight over the bridge depends on when Chromium's handshake completes — a race that flaked on CI both ways (queue never populated once the bridge was ready). Record send() calls instead; the wiring under test is resize → debounce → send, regardless of which path carries it.
3 tasks
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.
Fixes the two pre-existing CI failures that predate #6 (every recent
mainpush was red the same way):uv syncwas pinned to the matrix interpreter but the bareuv run pytestre-resolved against.python-version(3.11), discarded the synced venv, and rebuilt a bare one without dev deps —error: Failed to spawn: pytest. Job-levelUV_PYTHON: ${{ matrix.python }}now pins every uv invocation, and pytest runs with--no-syncagainst exactly the venv the sync step prepared.test_plotly_backend_nudges_after_a_qt_resizeflaked at 2 s. A cold runner spends seconds spinning up QtWebEngine on the GUI thread before the resize debounce can even be processed. The test now settles briefly aftershow()and waits up to 10 s (matching the suite's existing 8 s_settlebudget for slow CI).This PR's checks are the validation: all three matrix jobs should now actually run the suite and pass.
🤖 Generated with Claude Code