Repository navigation
tmux TUI e2e: six TestTUIE2E subtests fail on a clean tree — the oracles no longer match the surface (pre-existing at v0.2.1) #1197
Description
What happened
make test-e2e-tui on dev 62cae8580 (2026-09-18, the staging promotion of #1194) fails 6 of 17 subtests. The same six fail identically on cfdc29ded (v0.2.1) with that commit's own suite, so this is not a regression of #1194: the suite drifted from the surface some time before v0.2.1 and nobody had run it since. The internal/e2e files and the home/spend files those tests read are byte-identical between the two commits.
--- FAIL: TestTUIE2E/home_opens_on_launch_as_seven_panels (5.67s)
tui_e2e_test.go:383: home's foot is not the resting sentence:
type to search or start something new · ↑↓ pick · enter open · ctrl+o open folder · tab next place
--- FAIL: TestTUIE2E/a_real_conversation_on_the_panels_and_its_search_card (7.33s)
tui_e2e_test.go:502: `where you were` does not lead with this window's own `here` row:
--- FAIL: TestTUIE2E/answer_from_home_across_two_windows (27.38s)
tui_e2e_test.go:1123: the asking row is not under "needs you":
--- FAIL: TestTUIE2E/the_projects_panel_is_the_view_by_project (4.68s)
--- FAIL: TestTUIE2E/a_refused_task_proposal_draws_no_schema_sentence (114.67s)
--- FAIL: TestTUIE2E/space_in_the_task_room_pages_the_card (124.25s)
tui_e2e_test.go:1967: waited 30s for ["new conversation"] and never saw it.
One cause per test, from the screens the suite logged:
home_opens_on_launch_as_seven_panels— the oracle is the exact stringhomeFootWord + " · " + placeHintTail; the foot now carriesctrl+o open folderbetween those clauses.a_real_conversation_on_the_panels_and_its_search_card— thehereoracle clips the row at a third of the width beforehereis reached. (ItsFINDING: no spent $… clauseline is a diagnostic log, not the failing assertion — worth its own look.)answer_from_home_across_two_windows— searches forneeds you ·while the screen draws a bareneeds youheading with the question on the next row.the_projects_panel_is_the_view_by_project—panelColumnclips to the left half; theprojectspanel now begins in the right half.a_refused_task_proposal_draws_no_schema_sentence— after proving the refusal is hidden, waits for a standing-reminder string unrelated to the proposal.space_in_the_task_room_pages_the_card— assumes a stable selected row and an untitled readback session while live titling changes both; the space-vs-pgdown assertion itself passes.
The untagged word gate (go test ./internal/e2e/, tuiwords_test.go) is green because every word still exists in internal/tui3; it cannot see a shape rotting.
Replication
Deterministic (no model). None: these are real-terminal, real-model tests by design.
Field (real models). OPENROUTER_API_KEY (or the profile's key), tmux, ~6 minutes, a few cents:
make build && go test -tags e2e -count=1 -timeout 25m -v \
-run 'TestTUIE2E/(home_opens_on_launch_as_seven_panels|a_real_conversation_on_the_panels_and_its_search_card|answer_from_home_across_two_windows|the_projects_panel_is_the_view_by_project|a_refused_task_proposal_draws_no_schema_sentence|space_in_the_task_room_pages_the_card)$' \
./internal/e2e/Fires on every run, on dev@62cae8580 and on v0.2.1.
Where
internal/e2e/tui_e2e_test.go — the assertions at home's foot is not the resting sentence, does not lead with this window's own, is not under "needs you", panelColumn, and the two task-room waits.
The fix
The six oracles read the surface's current shape (the foot sentence with the folder chord, the bare needs you heading, the projects panel's real column, a selected row that may be retitled while the test looks), and the suite goes green on make test-e2e-tui twice in a row before a promotion leans on it again.
Acceptance
End to end: make test-e2e-tui passes all 17 subtests on dev, twice.
Activity
AbirAbbas commentedon Sep 21, 2026
Re-run on 2026-09-21 against dev tip 17ae56d (staging-20260921-17ae56d3496f), full
TestTUIE2E, 1510 s: 11 red.Of the six listed here, five are still red for the same stale-oracle reason;
a_real_conversation_on_the_panels_and_its_search_cardpassed this time.Two more subtests are now stale oracles by construction after the worker harness (#1108) and should join this list:
a_nested_landing_asks_and_a_key_answers_it— seedsTaskGraphrecords and asserts a nested node-engine settle card; the node engine andpropose_task/quick_task/divide_work/revise_assignmentare gone (entry1109-worker-harness-wave6). Every screen assertion still passed on a rerun; its full-suite red was only aTempDir RemoveAll cleanup: … directory not emptycleanup race.TaskOnTheRunEngine— presses a part row and expects the store root'splandb donetrajectory line; a run is now its own row with its parts under it and each row opens that task's page (entry1231-task-page-and-rail-door). Both reruns opened a populated child-task page (write HELLO.md containing the word hello · done · 1m55s · 1 file · branch kept), not an empty room.The other four new reds are real regressions and are filed separately (in-window firing not drawn, Home
Upcannot select a waiting exchange, hover preview blank,/spendvs Settings → Spending disagree after an interrupt).santoshkumarradha commentedon Sep 23, 2026
Fixed on
santos/dev2by #1360 (abf8032). The diff rewrites exactly the six tmux subtests this names, ininternal/e2e/tui_e2e_test.go.Closing as done.
drafted with CodeAF