Repository navigation
ci: prove the Xvfb display before desktop jobs and smoke artifacts once - #651
Merged
Merged
Conversation
Rinat S (rsolmano)
requested review from
Olga Lavrichenko (OLavrik),
Rustam Sadykov (SBOne-Kenobi) and
danyaberezun
as code owners
October 6, 2026 07:09
Rinat S (rsolmano)
force-pushed
the
ci-xvfb-readiness
branch
from
October 6, 2026 08:01
76b871f to
19f54b4
Compare
Olga Lavrichenko (OLavrik)
approved these changes
Oct 6, 2026
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.
Problem
On the first run of #642 (now merged), desktop shard 1/4 failed before any test ran. The native
smoke:desktoptimed out (native-ui desktop ready, 30 s) because the virtual display never became usable: Electrobun loggedGlobalShortcut event loop failed to initializeand GTK never started, where a healthy run logsX11 display opened successfully. That is a runner-environment fault, not an app regression. With the suites sharded, each native smoke also runs in every shard, so a rare fault like this is 4× as likely to fail CI while adding no coverage.Approach
Retry the virtual display only, never the app or the tests.
xdpyinfo(an X client on the exportedDISPLAY, no auth cookie) connects. If it doesn't answer within 10 s, the server is killed, its lock and socket are cleared, and it is restarted, at most 3 times. After that the job fails with the Xvfb log. Once the display is proven, any application failure fails CI as before.smoke:binaryandsmoke:desktoprun only in shard 1. Each run still smokes each artifact exactly once, as it did before sharding.Blanket job retries were considered and rejected: they would also hide real regressions, against the no-blanket-retries flake policy in
e2e/SPEC.md.Changes
.github/workflows/ci.ymlStart virtual displaystep indesktop-shardthat exportsDISPLAY=:99viaGITHUB_ENV.xvfb-run -adropped from the smoke and e2e steps, andx11-utilsreplacesxauthin the apt list.if: matrix.shard == 1onsmoke:binaryandsmoke:desktop..github/SPEC.md: records the shard-1-only smoke rule and the display-only retry boundary.Screenshots
Not applicable — no frontend changes.
Related issues
None.
Checklist
bun run lint,bun run typecheck,bun run test— not rerun: no source, test or config files changed (CI workflow + spec only); this PR's CI runs thembun run e2e, orbun run e2e:fullwhen touching agent behavior) — not app-affecting; this PR's CI runs every desktop/binary shard on the new display stepSPEC.md/ top-level specs updated to reflect any boundary, contract, or behavior changeTesting
@action-validator/cli .github/workflows/ci.yml→ validbash -non the extracted display step → OKXvfb/xdpyinfo, server answering on the 2nd start → exit 0 after 2 starts,DISPLAY=:99exported