Commit Graph
37 Commits
Author SHA1 Message Date
LGUG2Z 25f50076af feat(e2e): mark one check of a scenario as a known failure of a port
A step could be marked as a known failure of a port, which hides every failing check of it: too
coarse for a scenario in which one or two checks are about a difference of the port and the others
are not. RecordedChecks takes marks now: a part of the description of a check, and the reason. A
marked check that fails is recorded as a known failure, as a step is, and one that passes is a failure
of its own, so that a mark does not outlive the difference it was for. A port that gives no marks
is as it was.

The run of the runner's own subprocess calls says it does not check them.
2026-11-06 14:40:50 -08:00
LGUG2Z 80f221b8e7 refactor(e2e): one host client for the agent of every platform
The host side of the agent spoke a protocol that is the same for every platform, and lived in the
Windows port. Move it to komorebi_vm/agent.py, which the Windows module re-exports so that its
imports stay as they are, and give it the calls the protocol gained: spawn with an environment and
an output file, `status` of a spawned program and `send` to its standard input.
2026-11-06 14:40:49 -08:00
LGUG2Z ceaea8ca1b refactor(e2e): lift what a runner needs of a port out of the Windows runner
RecordedChecks (the checks a runner keeps for its result file), the step loop with its timings
and known failures, the commit under test and the step keyword helper have nothing to do with
Windows. Move them to komorebi_vm/runner.py, with the known-failure tables passed in, so that a
runner of another port uses them instead of importing a sibling port or copying them.

The Windows runner keeps its tables and the names it and its tests use. The unit tests of the core
and of the Windows runner pass unchanged (163), and ruff reports what it did before.
2026-11-06 14:40:49 -08:00
LGUG2Z 61d6423fdd test(e2e): handover needs two tiled containers on the workspace, or says so
Scenario precondition fix; the check "the unmanaged window is inside the work area and not on a
tile of the layout" itself stays as strict as it was.

The KDE VM suite vm-commands failed it on a calm host, on the original komorebi-for-kde tip
(7d19fd40) and on the refactored stage alike, with the same numbers each time: work area
(0,0,1920,1080), layout a single tile (10,10,1900,1060), win3 at (10,10,1896,1050) (within the
24 px tolerance of that tile), win1/win2/win5 parked on workspace 3. After the sweep win3 was the
only window on its workspace. Unmanaging a lone window leaves it on the tile it was put on, and
an emptied workspace has nothing to calculate, so it keeps its last layout; "not on a tile" could
never hold. The scenario now checks first that the focused workspace has at least two tiled
containers and, if not, fails with a message that says so (and the describe() dump) instead of
the misleading unmanage failure. Windows runs handover as its own suite with its three tiled
clients on workspace 0, so the precondition holds there.

The same file lives in e2e/lib and in komorebi-for-kde/nix/tests/vm/lib; both are edited alike. A
fake-platform test covers the precondition; the existing handover cases still fail where they
should.

Native pytest of the VM lib: 320 passed; ruff check and format clean.
VM verification: not yet (vm-commands on baseline-with-fix and candidate, ~20 min each, after the
KDE VM run).
2026-11-05 15:03:24 -08:00
LGUG2Z 7f6e530b35 feat(e2e): sync the neutral core from kfde 7d19fd40 2026-10-30 18:54:37 -07:00
LGUG2Z a2ab755352 feat(e2e): sync the neutral core from kfde b3dc2ed9 2026-10-30 18:25:26 -07:00
LGUG2Z 7e5f956415 feat(e2e): sync the neutral core from kfde 72631512 2026-10-30 18:22:45 -07:00
LGUG2Z f6d877b82d feat(e2e): sync the neutral core from kfde 1383d58a 2026-10-30 18:22:45 -07:00
LGUG2Z ead3d91e37 fix(e2e): vendor the fake wallpaper that the focus and moving tests import 2026-10-30 18:22:45 -07:00
LGUG2Z 19e2cd6112 fix(e2e): vendor the fake strip that the focus and moving tests import
kfde's sync-e2e-core does not list tests/fake_strip.py, which
test_focus_moving.py now imports, so it is copied by hand until it does.
2026-10-30 18:22:45 -07:00
LGUG2Z 6a05754308 feat(e2e): sync the neutral core from kfde 6fb6a66e 2026-10-30 18:22:45 -07:00
LGUG2Z d1d08d59d2 feat(e2e): sync the neutral core from kfde 6190a4ad 2026-10-30 18:22:44 -07:00
LGUG2Z fecb9d9173 feat(e2e): sync the neutral core from kfde 3830bb27 2026-10-30 18:22:44 -07:00
LGUG2Z 81b12ba0b9 feat(e2e): sync the neutral core from kfde c71c8fd0 2026-10-30 18:22:44 -07:00
LGUG2Z 4cef0ce510 feat(e2e): sync the neutral core from kfde 6748528b 2026-10-30 18:22:44 -07:00
LGUG2Z 8d5106f732 feat(e2e): sync the neutral core from kfde c03d61dd 2026-10-30 18:22:44 -07:00
LGUG2Z 30b73be36e feat(e2e): sync the neutral core from kfde 22a81d0b 2026-10-30 18:22:44 -07:00
LGUG2Z ca4744e77e feat(e2e): sync the neutral core from kfde ff599907 2026-10-30 18:22:44 -07:00
LGUG2Z 32af5164ef feat(e2e): sync the neutral core from kfde d4f67164 2026-10-30 18:22:44 -07:00
LGUG2Z 27ce93fe17 feat(e2e): sync the neutral core from kfde 13edc355 2026-10-30 18:22:44 -07:00
LGUG2Z ca2bb69587 feat(e2e): sync the neutral core from kfde f07c3eb8
Takes in kfde's revs d2745b80 (layouts, floating), 22e0ed01 (minimizing),
06e16878 (padding), 59777d7d (maximizing), 789e2a51 (workspace_moves),
7420cb58 (resize_commands), b66fe560 (promoting), 6f310858 (flipping),
33697a67 (pausing), d423f99b (tiling_off), aebdf2b0 (lifecycle_hidden),
cdac999a (scrolling), a9e5bd80 (rules_class) and f07c3eb8 (rules_exe,
config_reload, locking).
2026-10-30 18:22:44 -07:00
LGUG2Z db7d8480ad feat(e2e): sync the neutral core from kfde a563bf9c 2026-10-30 18:22:44 -07:00
LGUG2Z 1874b1fc10 feat(e2e): sync the neutral core from kfde 13270678 2026-10-30 18:22:44 -07:00
LGUG2Z 52f4c96817 feat(e2e): sync the neutral core from kfde 2c7e13dd 2026-10-30 18:22:44 -07:00
LGUG2Z 632b6cc366 feat(e2e): sync the neutral core from kfde 7de53180 2026-10-30 18:22:44 -07:00
LGUG2Z 8a8674ac9b feat(e2e): sync the neutral core from kfde bf5da0e6 2026-10-30 18:22:44 -07:00
LGUG2Z fc38fbf739 feat(e2e): sync the neutral core from kfde a1024d16 2026-10-30 18:22:44 -07:00
LGUG2Z 8c990e4e1d feat(e2e): sync the neutral core from kfde 06c2b6e2 2026-10-30 18:22:44 -07:00
LGUG2Z e20e02bd12 feat(e2e): sync the neutral core from kfde 7db3f9c5 2026-10-30 18:22:44 -07:00
LGUG2Z 048cf3b951 feat(e2e): sync the neutral core from kfde 79f05a86 2026-10-30 18:22:44 -07:00
LGUG2Z 76918d5a88 feat(e2e): sync the neutral core from kfde 5e7e4ff1
Adds commands.unknown_monitor: a window sent to a monitor that does not
exist must stay managed. From kfde change lkprqpuv.
2026-10-30 18:22:44 -07:00
LGUG2Z d2adcc9c28 feat(e2e): sync the neutral core from kfde 8b86c8ee
The commands sweep plugs in a second display first when the platform has
only one. From kfde change xzwqolrv.
2026-10-30 18:22:44 -07:00
LGUG2Z 72681c9913 feat(e2e): sync the neutral core from kfde 934fa65a
Platform gains displays, add_display, remove_display and komorebic_status,
Checks gains skip, Snapshot gains workspace_of, and the core gains the
commands, rules and hotplug scenarios. From kfde change swulsqkl.
2026-10-30 18:22:44 -07:00
LGUG2Z 40a9aa3739 feat(e2e): sync the neutral core from kfde 57e510da
Platform gains close(client), and the core gains the monocle and closing
scenarios. From kfde change nykrktvm.
2026-10-30 18:22:44 -07:00
LGUG2Z 94333870d8 feat(e2e): sync the neutral core from kfde 0be4c6ee
The Platform protocol gains has() and a Pointer, and the core gains the
resize scenario that drags the edge two tiles share. From kfde change
wumvluop.
2026-10-30 18:22:44 -07:00
LGUG2Z b34b02814f feat(e2e): sync the neutral core from kfde 6b6b7bb5
The recorded kfw and kfde states are now fixtures read by test_recorded.py,
and the sync script copies them. The only change inside komorebi_vm.core is a
diagnostic print in the workspaces scenario. From kfde change vvplllnz.
2026-10-30 18:22:44 -07:00
LGUG2Z d00c4436d0 feat(e2e): vendor the neutral core from kfde
komorebi_vm.core (Rect, Checks, pixels, Snapshot, the Platform protocol and
the first scenarios) and its unit tests, copied by kfde's scripts/sync-e2e-core
from kfde change mxoqrxnx (accdd653). kfde is the source of truth until the
core moves here; the copy is not to be edited in this tree.
2026-10-30 18:22:44 -07:00