Skip to content

ci: real-window smoke gate (Xvfb + software Vulkan)#8

Open
kingb wants to merge 1 commit into
mainfrom
ci-real-window-smoke
Open

ci: real-window smoke gate (Xvfb + software Vulkan)#8
kingb wants to merge 1 commit into
mainfrom
ci-real-window-smoke

Conversation

@kingb

@kingb kingb commented Jul 11, 2026

Copy link
Copy Markdown
Owner

What

Adds a smoke CI job that exercises the real winit+wgpu window path — the thing cargo test never touches.

The existing check job runs cargo test, which only exercises pure logic; it has never created a window or GPU surface. So a winit/wgpu/X11 regression, or a missing runtime dep (libxcursor1, libxkbcommon-x11-0, a monospace font — all absent from check's build-only deps), sails straight through. This is the same class of gap that let a bottle ship without its launcher assets.

How

  • New smoke job (ubuntu-24.04): install build + runtime deps + Xvfb + mesa's software Vulkan (lavapipe), build the release binary, and run the assertions against a real window driven through the control socket.
  • Assertions extracted into scripts/smoke/window-smoke.shstrict (every failure exits non-zero, it's a gate not a report): launch, ctl state, typed shell round-trip, tab drag/reorder/cancel, stability soak, and it uploads the rendered frame as an artifact.
  • The standalone container harness (x11-container-smoke.sh) is refactored to delegate to the same script, so the container prototype and the CI gate can't drift.

Validation

Ran end-to-end in an ubuntu:24.04 container against this branch's checked-out tree — all six stages pass (launch, ctl, typed round-trip win-smoke-42, drag reorder/cancel/selection, 8s soak, no panics), frame captured. This PR's own CI run is the x86_64-runner proof.

Coverage note

Directly targets the 0%-covered GPU/window files (renderer.rs, paint.rs, headless.rs, shaders) that headless unit tests structurally can't reach.

🤖 Generated with Claude Code

cargo test never creates a window or GPU surface, so a winit/wgpu/X11 regression
or a missing runtime dep (libxcursor1, libxkbcommon-x11-0, a monospace font) sails
through CI. Add a smoke job that launches the real binary under Xvfb with mesa's
lavapipe and drives it through the control socket: launch, ctl state, a typed shell
round-trip, tab drag/reorder/cancel, and a stability soak — failing the build on any
windowing regression, and uploading the rendered frame as an artifact.

Assertions are extracted into scripts/smoke/window-smoke.sh (strict: every failure
exits non-zero) and shared with the standalone container harness, refactored to
delegate, so the two can't drift. Validated in an ubuntu:24.04 container against the
checked-out tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kingb kingb force-pushed the ci-real-window-smoke branch from 36b0279 to 3ae6392 Compare July 11, 2026 08:08
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