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

Closed

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_project — panelColumn 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

  1. added
    bugSomething the code does that it should not
    area:testsThe suite itself — flakes, harnesses, laws, CI reds
    on Sep 18, 2026
  2. AbirAbbas commented on Sep 21, 2026

    @AbirAbbas
    CollaboratorAuthor

    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_card passed 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 — seeds TaskGraph records and asserts a nested node-engine settle card; the node engine and propose_task/quick_task/divide_work/revise_assignment are gone (entry 1109-worker-harness-wave6). Every screen assertion still passed on a rerun; its full-suite red was only a TempDir RemoveAll cleanup: … directory not empty cleanup race.
    • TaskOnTheRunEngine — presses a part row and expects the store root's plandb done trajectory line; a run is now its own row with its parts under it and each row opens that task's page (entry 1231-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 Up cannot select a waiting exchange, hover preview blank, /spend vs Settings → Spending disagree after an interrupt).

  3. santoshkumarradha commented on Sep 23, 2026

    @santoshkumarradha
    Member

    Fixed on santos/dev2 by #1360 (abf8032). The diff rewrites exactly the six tmux subtests this names, in internal/e2e/tui_e2e_test.go.

    Closing as done.

    drafted with CodeAF

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 notsev:seriousWrong or missing behaviour a person meets in ordinary use

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions