e2e is now a required check (#304, #432), but its five journeys cover only the file panel and the Changes tab. A regression elsewhere is seen only by jsdom tests, which have no layout and no real IPC.
Add four coarse journeys on the critical paths, with the same rules as docs/e2e.md (isolated HOME/data/triggers dir, plain terminals and fixture repos, never a real claude, structure and geometry assertions, no waitForTimeout):
- A plain terminal starts, prints output that reaches the xterm screen, accepts input, and closes (pty spawn, renderer flush, exit handling).
- Session restore: open two plain terminals, relaunch the app on the same data dir, both come back in the sidebar and the grid.
- Trigger watcher end to end: a trigger file in the isolated triggers dir types a command into a plain terminal; its output appears and the result file reports it sent.
- Sidebar and grid render fixture sessions (synthetic JSONL transcripts under the isolated
~/.claude/projects): projects grouped, counts right, grid toggle switches layout.
Also write the rule into docs/e2e.md: a bug that only shows in the running app gets a journey in its fix PR, and that journey is its red-first test.
Acceptance: each journey goes red under a mutation of the path it covers (listed in the PR); the job stays under one minute on ubuntu; ten consecutive green runs before merge.
e2eis now a required check (#304, #432), but its five journeys cover only the file panel and the Changes tab. A regression elsewhere is seen only by jsdom tests, which have no layout and no real IPC.Add four coarse journeys on the critical paths, with the same rules as
docs/e2e.md(isolated HOME/data/triggers dir, plain terminals and fixture repos, never a realclaude, structure and geometry assertions, nowaitForTimeout):~/.claude/projects): projects grouped, counts right, grid toggle switches layout.Also write the rule into
docs/e2e.md: a bug that only shows in the running app gets a journey in its fix PR, and that journey is its red-first test.Acceptance: each journey goes red under a mutation of the path it covers (listed in the PR); the job stays under one minute on ubuntu; ten consecutive green runs before merge.