Repository navigation
ci(e2e): run the layout oracle on PRs that change layout writers - #27103
Conversation
Co-Authored-By: Claude <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to The routing changes schedule the intended layout-oracle checks for the specified source changes. No material merge risk is apparent. Pre-merge checks |
|
…layout Co-Authored-By: Claude <noreply@anthropic.com>
ELI5
The layout oracle is the end-to-end test that opens, splits, moves and closes terminal tabs, restarts Orca, and checks that what is saved matches what every window and phone shows. It only ran when someone edited the oracle test itself, so a PR that changed how tabs and panes are written could merge without it. This PR makes CI run it whenever such code changes.
What Changed
config/scripts/pr-e2e-source-routing.mjs.workspace-layout.oracleruns all three specs when a PR changes product code insrc/shared/workspace-layout/,src/main/persistence/terminal-topology/,restoring-sessions/,loading-store/pty-binding-*, or the oracle's own support files undertests/e2e/. It also runs for the runtime modules (main and renderer) that create, move, close, persist or publish layout, matched by name: pane admission, workspace layout, session tabs, headless tabs, the layout client, terminal create and split, and spawn placement.workspace-layout.oracle-tab-storeruns only the window and headless specs forsrc/renderer/src/store/slices/tabs*, so a tab-store change does not start the Docker SSH lane.rpc/andorchestration/folders, which only call into the modules above.Why
The headless and window oracles caught real regressions during the layout rework, but only when someone ran them by hand. Adding a route reuses the mechanism every other e2e gate uses, so the trigger is a unit-tested path contract rather than new workflow logic.
Cost, over the last 14 days of
main(1572 commits):A first draft that matched every runtime file named for a session, tab, terminal or pane would have triggered on 211 commits (13.4%).
Proof with #27083's file list:
main, the routes pick only the SSH terminal specs.workspace-layout-oracle.spec.tsgoes to the general e2e shards (e2e_run_changed=true).workspace-layout-oracle-headless.spec.tsgoes to the "orca serve Electron/orcad mode switch" job, in its "Layout oracle on headless serve" step.workspace-layout-oracle-ssh.spec.tsgoes to the "ssh docker watcher isolation" shards. Save runtime-started tabs in the tab bar before their terminal starts #27083 already reached those shards through its SSH source change.Linked Issue
N/A (maintainer CI change)
Visual Proof
N/A: CI path selection only, no product change.
Testing
Ran
node config/scripts/pr-e2e-source-routing.mjsandci-e2e-job-selection.mjs --job-outputsover Save runtime-started tabs in the tab bar before their terminal starts #27083's changed files, onmainand on this branch.Automated tests added/updated: new
pr-e2e-layout-oracle-routing.test.mjschecks:The test also checks that the tab store reaches only the window and headless specs. All
config/scriptstests pass.Review
Agent skill upstream boundary
Notes
The change is CI-only. Every OS and SSH are unaffected; it only changes which existing jobs run.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)