Skip to content

The headless window failure is sRGB, not GLX — making it optional would let CI run the Verify: M UI scripts #143

Description

@ErwanLegrand

Split out of #19. That issue is about Wayland and is not fixable in this repository — baseview has no Wayland backend at 0.2 or 0.3, and the pin is forced rather than conservative (published egui-baseview 0.6.0 requires baseview 0.2.2). This issue is the part that is fixable here, and it is worth more than it looks.

The mechanism is misattributed in #19

#19's body says GLX. It is sRGB. crates/namir-ui/src/app.rs builds its window as:

let settings = egui_baseview::EguiWindowSettings { title, size, ..Default::default() };

so GlConfig::srgb stays true, and glXChooseFBConfig then matches none of Xvfb's 320 available configs. The window never opens under a headless X server, and the failure reads as a GLX problem because that is the call that returns nothing.

(#19's own comment already suspected this; the body was never corrected. Its closing claim that the UI manual scripts were never executed is also stale — fr-ui-020 and fr-ui-070 were run by a human at M9b, 1621caf / 9e712d3.)

Why this is worth doing

Six Verify: M Musts currently record no pass, and five of them are UI scripts that need a human at a screen: FR-UI-030, FR-UI-040, FR-UI-050, FR-UI-070, plus FR-IN-020's display half, which has no manual document at all (it went uncovered when the traceability gate learned to read compound Verify: methods, #27).

If the window can open headless, those scripts become runnable in CI instead of by hand. That does not automatically make them Verify: M artifacts — D-18.6 still governs what a manual document can stand for — but it converts "needs someone at a machine" into "runs on every push", which is the actual reason those six have sat unexecuted.

Suggested shape

Make sRGB optional in open_blocking / open_parented: attempt the default config, and on failure retry with srgb: false. Both call sites are in crates/namir-ui/src/app.rs. A headless runner gets a window; a real machine is unaffected because the first attempt succeeds.

Worth confirming the fallback does not change rendered colour on a real display before relying on it for a screenshot-comparing test — an sRGB-less framebuffer will differ, which matters if any script asserts on appearance rather than on structure.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions