$ node scripts/prove-scenario.ts scripts/scenarios/flat-temporary-branch-search.e2e.ts --base f03db4fbef59c42113e37c32897bf4d25d31cb2b --head c12a53e046853f85bfb16262c0029de6f97a5c55 ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 27m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: [workspace] Virtual store is at: node_modules/.pnpm Progress: resolved 1740, reused 1740, downloaded 0, added 1729 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 2.1s using pnpm v12.14.0 RUN e2e v0.23.0 [workspace] run 01a1d0db-f75a-753c-8f9c-0eceb013b955 · targets: web, ios ✓ target "web" command at http://127.0.0.1:38433/.well-known/t3/environment ready 3.40s ✓ target "ios" command at http://127.0.0.1:8190/status ready 4.31s × |web| scenarios/flat-temporary-branch-search.e2e.ts > Thread search ignores the app prefix on flat temporary branches 31.15s → expect.toHaveCount failed ❯ |web| scenarios/flat-temporary-branch-search.e2e.ts (1 test | 1 failed) 31.15s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/flat-temporary-branch-search.e2e.ts > Thread search ignores the app prefix on flat temporary branches ASSERTION_FAILED: expect.toHaveCount failed locator: getByRole("dialog") >> getByText("Add search") expected: count 0 observed: count 1 (match count 1) ❯ scenarios/flat-temporary-branch-search.e2e.ts:31:3 29| await dialog.getByText("Searching messages…", { exact: true }).wait… 30| await app.screenshot("search-t3-connect"); 31| await expect(dialog.getByText("Add search", { exact: true })).toHav… | ^ 32| }); 33| ❯ at http://127.0.0.1:38433/draft/690618a5-5321-476f-aabd-9b1905ef39ed ❯ app 1 error, 2 warnings logged × console error: WebSocket connection to 'ws://127.0.0.1:38433/ws?clientSurface=web&clientAppVersion=0.1.9&clientDeviceType=desktop&clientOs=Linux&clientWebDeployment=server&clientBrowser=Chrome&connectionMethod=direct&clientDevice=c064b80c4383c9c1de575c09dbc34348be77748d2c50efa097f62a1986442c6e&orchestrationProtoc… ❯ trace .e2e/prove/base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/trace.md ❯ video .e2e/prove/base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 17:43:59 Duration 39.41s (startup 7.71s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/001-search-t3.png .e2e/prove/base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/002-search-t3-connect.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/flat-temporary-branch-search.e2e.ts:31 > Thread search ignores the app prefix on flat temporary branches ASSERTION_FAILED: expect.toHaveCount failed trace .e2e/prove/base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 28m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: [workspace] Virtual store is at: node_modules/.pnpm Progress: resolved 1286, reused 1286, downloaded 0, added 1271 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 2.8s using pnpm v12.14.0 RUN e2e v0.23.0 [workspace] run 01a1d0dc-b1ce-7175-8eff-5a4e79b60ed9 · targets: web, ios ✓ target "web" command at http://127.0.0.1:42495/.well-known/t3/environment ready 4.53s ✓ target "ios" command at http://127.0.0.1:8190/status ready 5.25s ✓ |web| scenarios/flat-temporary-branch-search.e2e.ts > Thread search ignores the app prefix on flat temporary branches 17.41s ✓ |web| scenarios/flat-temporary-branch-search.e2e.ts (1 test) 17.41s Test Files 1 passed (1) Tests 1 passed (1) Start at 17:44:47 Duration 27.87s (startup 9.78s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/001-search-t3.png .e2e/prove/head/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/002-search-t3-connect.png Markdown .e2e/prove/head/summary.md { "scenario": "Thread search ignores the app prefix on flat temporary branches", "failsOnBase": true, "passesOnHead": true, "baseSha": "f03db4fbef59c42113e37c32897bf4d25d31cb2b", "headSha": "c12a53e046853f85bfb16262c0029de6f97a5c55", "verdict": "Proven: the scenario fails on base `f03db4fbef` and passes on head `c12a53e046`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"combobox\", name: \"Search threads\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "locator.swipe getByRole(\"dialog\") >> getByRole(\"listbox\")", "status": "passed" }, { "step": "app.screenshot search-t3", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "app.screenshot search-t3-connect", "status": "passed" }, { "step": "expect.toHaveCount getByRole(\"dialog\") >> getByText(\"Add search\")", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"combobox\", name: \"Search threads\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "locator.swipe getByRole(\"dialog\") >> getByRole(\"listbox\")", "status": "passed" }, { "step": "app.screenshot search-t3", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "app.screenshot search-t3-connect", "status": "passed" }, { "step": "expect.toHaveCount getByRole(\"dialog\") >> getByText(\"Add search\")", "status": "passed" } ] }, "captures": [ "[workspace]", "[workspace]", "[workspace]", "[workspace]", "[workspace]" ], "videos": [ "[workspace]", "[workspace]" ], "markdown": "### Scenario: Thread search ignores the app prefix on flat temporary branches\n\n**Proven: the scenario fails on base `f03db4fbef` and passes on head `c12a53e046`.**\n\n| | Base `f03db4fbef` | Head `c12a53e046` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toHaveCount failed
locator: getByRole(\"dialog\") >> getByText(\"Add search\")
expected: count 0
observed: count 1 (match count 1) | ✅ passed |\n| search t3 | ![Base f03db4fbef: search t3](base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/001-search-t3.png) | ![Head c12a53e046: search t3](head/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/001-search-t3.png) |\n| search t3 connect | ![Base f03db4fbef: search t3 connect](base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/002-search-t3-connect.png) | ![Head c12a53e046: search t3 connect](head/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/002-search-t3-connect.png) |\n| failure | ![Base f03db4fbef: failure](base/results/flat-temporary-branch-search-thread-search-ignores-the-app-94b7f79a9a6e6f97/attempt-1/screenshots/003-failure.png) | |\n", "base": { "sha": "f03db4fbef59c42113e37c32897bf4d25d31cb2b", "status": "failed", "title": "Thread search ignores the app prefix on flat temporary branches", "message": "ASSERTION_FAILED: expect.toHaveCount failed\nlocator: getByRole(\"dialog\") >> getByText(\"Add search\")\nexpected: count 0\nobserved: count 1 (match count 1)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"combobox\", name: \"Search threads\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "locator.swipe getByRole(\"dialog\") >> getByRole(\"listbox\")", "status": "passed" }, { "step": "app.screenshot search-t3", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "app.screenshot search-t3-connect", "status": "passed" }, { "step": "expect.toHaveCount getByRole(\"dialog\") >> getByText(\"Add search\")", "status": "failed" } ], "captures": [ "[workspace]", "[workspace]", "[workspace]" ], "videos": [ "[workspace]" ] }, "head": { "sha": "c12a53e046853f85bfb16262c0029de6f97a5c55", "status": "passed", "title": "Thread search ignores the app prefix on flat temporary branches", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"combobox\", name: \"Search threads\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "locator.swipe getByRole(\"dialog\") >> getByRole(\"listbox\")", "status": "passed" }, { "step": "app.screenshot search-t3", "status": "passed" }, { "step": "locator.fill getByRole(\"dialog\") >> getByRole(\"combobox\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"T3 Connect release notes\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") >> getByText(\"Searching messages…\") → hidden", "status": "passed" }, { "step": "app.screenshot search-t3-connect", "status": "passed" }, { "step": "expect.toHaveCount getByRole(\"dialog\") >> getByText(\"Add search\")", "status": "passed" } ], "captures": [ "[workspace]", "[workspace]" ], "videos": [ "[workspace]" ] } }