You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every focus/enumeration test today mocks the compositor (FakeFocusBackend, monkeypatched gdbus/xdotool). Nothing exercises the extension ↔ real-compositor boundary, which is why the get_window_actors receiver bug (e166242) — the running-windows list silently empty since stage 2 (#126) — passed every test and only surfaced on a live GNOME 50 session. This is the "drive real windows across real apps" tier.
Ask
Stand up a headless/nested compositor test job that loads the real extension and drives real windows:
GNOME path: dbus-run-session -- gnome-shell --nested --wayland under a virtual display; enable deckd-focus@local.
Enumeration of a closed window drops from the next snapshot (prune-on-unmanaging).
Constraints
Not on the blocking PR gate — nested GNOME has startup races, focus-timing quirks, and version-specific API drift; budget for occasional flakiness. Run as a nightly / opt-in desktop-integration workflow.
Skip cleanly where no compositor is available (macOS, headless CI without the harness).
Wire into just (e.g. just test-desktop) alongside the existing recipes.
Tier B of the desktop-integration testing plan (companion to #129, #130). This is the tier that would have caught the stage-2 regression. Discussion in #127.
Context
Every focus/enumeration test today mocks the compositor (
FakeFocusBackend, monkeypatched gdbus/xdotool). Nothing exercises the extension ↔ real-compositor boundary, which is why theget_window_actorsreceiver bug (e166242) — the running-windows list silently empty since stage 2 (#126) — passed every test and only surfaced on a live GNOME 50 session. This is the "drive real windows across real apps" tier.Ask
Stand up a headless/nested compositor test job that loads the real extension and drives real windows:
dbus-run-session -- gnome-shell --nested --waylandunder a virtual display; enabledeckd-focus@local.Closed-loop assertions this unlocks:
foot/xterm); assertListWindowsreturns both with sane titles + stablewindow_ids.RaiseWindow(<unfocused id>); assertGetActiveWindownow reports that window — a genuine end-to-end for Build stage 3: switch on tap — raise-window dispatch #127's raise-on-tap.unmanaging).Constraints
desktop-integrationworkflow.just(e.g.just test-desktop) alongside the existing recipes.Tier B of the desktop-integration testing plan (companion to #129, #130). This is the tier that would have caught the stage-2 regression. Discussion in #127.