Repository navigation
test: shared model-level case matrix for cmux NEXT (cx-gkyi1) - #20195
Conversation
Tests/Matrix/cases.json is the one case list for the headless Swift runner, the headless core runner and the real-HID/monkey runners (cx-hdyx4): workspace create from every entry, workspace and tab reorder, tab moves, split create/close/zoom. ModelMatrixTests checks the file and that every case's entry really offers its action through the catalog, and that every entry a covered action offers has a case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Workspace groups and pinning live in the app's sidebar layout, not the daemon core, so the headless core runner has no steps for them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by |
…in HID tiers (cx-gkyi1) - vocabulary: every code's arguments and the meaning of each `of`; ModelMatrixTests rejects missing or unknown arguments. - target: palette/menu/shortcut runners focus the target first; CLI runs with --focus (without it the CLI never changes the view). - Sidebar order is the app's personal order (the app computes the index, the core only stores it): positioned creates and workspace reorder run in the HID tiers only. - ws3 declares 3 workspaces; tab.move.toWorkspace no longer contradicts the empty-workspace rule; drag20 checks the order; zoom states toggle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Bead cx-gkyi1, for op-ci-tiers' PR fast tier, sharing one case list with op-next-replay's real-HID matrix (cx-hdyx4).
Packages/macOS/CmuxNext/Tests/Matrix/cases.jsonis that one case list: 90 model-level cases for cmux NEXT.$w1,$p1,$t2, …);item-set-kept,order-is,selected-is,focus-on,zoomed-is,layout-valid, …);core);ModelMatrixTests(this PR): headless Swift, no window, no daemon, about 0.02 s.mux::tests::matrix: runs every case's core steps on the real daemon core in-process. Next PR.MATRIX <case id>:.ModelMatrixTestschecks three things:$-refs, tiers, inputs and entries are declared. A headless case has core steps and no wall-clock codes.splitRight, the suite fails until a case covers it.Writing the file surfaced six cases that named a surface the action doesn't offer, so those cases are fixed:
newTabhas no CLI verb.closePanehas no default key or CLI verb.toggleSplitZoomhas no CLI verb.Also of note: the sidebar's + calls
WindowManager.newWorkspacedirectly, not an action. Its row close button goes throughcloseWorkspace. The file records the + as a non-catalog entry.After review:
vocabularyblock. It defines each code's exact arguments, what eachofmeans and whattargetmeans per entry: palette, menu and shortcut runs focus the target first, a context menu right-clicks it, the CLI passes it with--focus.ModelMatrixTestsrejects missing or unknown arguments.AppActions+PersonalOrder) and the core only stores it. Workspace reorder, positioned creates (above, below, top, bottom), groups and pinning therefore run in the HID tiers only for now. cx-rq6i5 tracks a headless Swift runner for that logic.Testing
Command:
cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --arg Packages/macOS/CmuxNextOn 0739a3d,
CmuxNextActionsTests.ModelMatrixTestspasses all three tests, in 0.017 s.KeybindingsFileRelaunchTestsandPinnedPageTestsfail as known base reds.Review (Opus subagent): the file's expectations were checked against the handlers. Fixed: the
ws3count, the CLI focus semantics, a self-contradictingtab.move.toWorkspace,drag20order, the zoom mode, argument validation and non-emptycore. One must-fix, missing targets onsplit.close,lastTabClosesPaneandfromPane, was a misread: those cases already name$p2/$t2. Thetargetdefinition now says how HID runners use it.This is a new contract test, not a fix, so there is no red commit. An offline run of the same checks against
plans/cmux-next/action-surfaces.jsoncaught the six wrong entries and eleven missing offered entries before the fix-up.Changelog
none
🤖 Generated with Claude Code