Skip to content

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

@AbirAbbas

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 string homeFootWord + " · " + placeHintTail; the foot now carries ctrl+o open folder between those clauses.
  • a_real_conversation_on_the_panels_and_its_search_card — the here oracle clips the row at a third of the width before here is reached. (Its FINDING: no spent $… clause line is a diagnostic log, not the failing assertion — worth its own look.)
  • answer_from_home_across_two_windows — searches for needs you · while the screen draws a bare needs you heading with the question on the next row.
  • the_projects_panel_is_the_view_by_projectpanelColumn clips to the left half; the projects panel 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:testsThe suite itself — flakes, harnesses, laws, CI redsbugSomething the code does that it should not

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions