From 2416013a5e3fae5e80f917d549b361d388160672 Mon Sep 17 00:00:00 2001 From: CodeWhale Bot Date: Sun, 6 Sep 2026 21:21:28 -0700 Subject: [PATCH] fix(test): wait for the startup composer before pointer assertions Buildkite 1861 and 1867 failed on Linux with partial launch frames; all cited macOS jobs passed. Wait for the composer and cleared onboarding as well as the launch header, preserving all startup and pointer queue assertions. Validation: focused all-features cucumber test 1 passed, 0 failed across five PTY sizes (40x12 through 140x40); cargo fmt --all -- --check passed; git diff --check passed. npm test and npm run check:web both unavailable: root package.json defines neither script. Hosted CI not run for this commit. Signed-off-by: CodeWhale Bot --- .../tests/cucumber/active_composer_pointer_pty.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/crates/tui/tests/cucumber/active_composer_pointer_pty.rs b/crates/tui/tests/cucumber/active_composer_pointer_pty.rs index dbe4aad0ee..a0b54d5994 100644 --- a/crates/tui/tests/cucumber/active_composer_pointer_pty.rs +++ b/crates/tui/tests/cucumber/active_composer_pointer_pty.rs @@ -98,12 +98,17 @@ fn run_pointer_submit_case(rows: u16, cols: u16) { &format!("{size}: offline explore ready"), ); tui.send(keys::key::enter()).expect("leave onboarding"); - wait_or_panic( - &mut tui, - "New session", + // PTY reads can split a redraw: the launch header arrives before the + // composer, with onboarding rows still on screen (Buildkite #1861/#1867). + // Wait for the input surface as well as the header before asserting it. + tui.wait_for( + |frame| { + let text = frame.text(); + text.contains("New session") && text.contains('❯') && !text.contains("You're ready.") + }, STARTUP_WAIT, - &format!("{size}: show the launch card"), - ); + ) + .unwrap_or_else(|error| panic!("{size}: show the launch card and composer: {error}")); tui.pump(); assert_startup_contract(tui.frame(), rows, cols, &size); // Typing goes straight to the composer; Enter sends the first message