New extras scenario e2e/platforms/qemu_windows/extras/bar.py, registered in run.py as `bar` (runs after the tiling windows, like the other Windows extras). It starts komorebi-bar in the guest with a configuration that has storage, time, applications, komorebi workspaces and layout widgets, the Windows-only Keyboard and Systray widgets and a `mouse` block (a message and a command), and checks: `komorebi-bar --schema` equals the checked-in schema.bar.json byte for byte; the process starts and its window titled komorebi-bar appears, visible and sized; it runs 15 s (scaled); `komorebic state` answers and komorebi does not tile the bar; commands that notify the bar work; the bar survives `komorebic stop` and the daemon starting again as the same process (it reconnects: it does NOT exit when the daemon stops, so the task text "exits cleanly when komorebi stops" is checked as `komorebic stop --bar` ending daemon and bar); screenshots are kept as artefacts, no pixel assertions. No known failures. Plumbing: run.py uploads komorebi-bar.exe when the binaries directory has it (other scenarios do not need it, so older build-ref directories still work), the nix app copies it and sets KOMOREBI_E2E_BAR_SCHEMA to the checked-in schema (the e2e directory alone does not contain it), build-ref.sh builds it. README and docs/dev/bar-e2e.md document it. Verified: py_compile and ruff clean; the runner and library unit tests: 157 passed; flake.nix parses. NOT run: the scenario itself (the Windows guest is reserved for gates), so every check is untested against a real bar and may need adjusting (window title, timings, the Systray widget inside the VM). Needs gate: win-e2e `bar`.
1.4 KiB
Windows e2e for komorebi-bar
The bar scenario (e2e/platforms/qemu_windows/extras/bar.py, registered as EXTRAS["bar"] in
run.py) is the runtime gate for changes to komorebi-bar and komorebi-bar-core: the unit tests
and the schema oracle cannot run the bar. Run it on the golden Windows guest:
E2E_GOLDEN=golden KOMOREBI_E2E_SCALE=1.5 nix run .#e2e-windows -- OUT bar
# another commit: build-ref.sh REF bins; KOMOREBI_E2E_BINS=bins ... (bins must have komorebi-bar.exe)
It checks: the --schema output equals schema.bar.json; the configuration (storage, time,
applications, komorebi workspaces and layout, Keyboard, Systray, a mouse block with a message and
a command) is accepted and the bar starts; its window appears; it keeps running 15 s; the daemon
keeps answering and does not tile the bar; the bar survives the daemon stopping and starting again
(it reconnects, it does not exit when the daemon stops); komorebic stop --bar ends both.
Artefacts in OUT/bar/: bar.png, bar-after-restart.png (screenshots, no pixel assertions),
bar-schema.json, bar.out, bar.json, result.json. Not covered: clicks, text of the widgets,
the PowerShell session of a Command mouse message (the bar starts it; nothing sends the click),
macOS (see docs/dev/macos-handcheck.md).
Not run when it was written (the guest was reserved): lint only (py_compile, ruff, the runner's
157 unit tests pass).