Skip to content

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

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

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

Conversation

@kingb

@kingb kingb commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Real-window smoke CI gate. Supersedes #8 (auto-closed when the main-history scrub deleted/restored this branch; rebased onto the rewritten main).

What

Adds a smoke CI job exercising the real winit+wgpu window path — which cargo test never touches. A winit/wgpu/X11 regression, or a missing runtime dep (libxcursor1, libxkbcommon-x11-0, a monospace font), currently sails through CI. 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 binary, run assertions against a real window via the control socket, upload the rendered frame as an artifact.
  • Assertions in scripts/smoke/window-smoke.sh — strict (every failure exits non-zero): launch → ctl state → typed shell round-trip → tab drag/reorder/cancel → stability soak.
  • Existing container harness refactored to delegate to the same script, so the prototype and the CI gate can't drift.

Validation

Ran end-to-end in an ubuntu:24.04 container against the checked-out tree — all six stages green, frame rendered. The prior run (as #8) also passed on GitHub's x86_64 runner.

🤖 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>
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