$ node scripts/prove-scenario.ts scripts/scenarios/acp-busy-follow-up.e2e.ts --base f03db4fbef59c42113e37c32897bf4d25d31cb2b --head cf62e93a9e705802ef7a3dfd68678d3fe5080d5e --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 43m 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: Virtual store is at: node_modules/.pnpm Progress: resolved 750, reused 750, downloaded 0, added 735 Progress: resolved 1471, reused 1471, downloaded 0, added 1456 Progress: resolved 1774, reused 1774, downloaded 0, added 1770 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done .../esbuild@0.28.2/node_modules/esbuild postinstall$ node install.js .../esbuild@0.28.2/node_modules/esbuild postinstall: Done .../react-native-enriched-markdown postinstall$ node postinstall.mjs .../node_modules/node-pty install$ node scripts/prebuild.js || node-gyp rebuild .../node_modules/node-pty install: > Checking prebuilds... .../node_modules/node-pty install: Done .../node_modules/node-pty postinstall$ node scripts/post-install.js .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] restoring vendored native assets ... .../node_modules/node-pty postinstall: > Cleaning release folder... .../node_modules/node-pty postinstall: > Moving conpty.dll... .../node_modules/node-pty postinstall: SKIPPED (not Windows) .../node_modules/node-pty postinstall: Done .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching runtime v0.26.3 from https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v0.26.3.tar.gz .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] runtime -> react-native-enriched-markdown/cpp/highlight/vendor/tree-sitter/src .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-json@0.24.8 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-html@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-css@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading @tree-sitter-grammars/tree-sitter-markdown@0.3.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading @tree-sitter-grammars/tree-sitter-yaml@0.7.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-go@0.23.4 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-java@0.23.5 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-javascript@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-python@0.23.6 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-c@0.23.5 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-rust@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-bash@0.23.3 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-typescript@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-cpp@0.23.4 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-swift@0.7.0 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-php@0.24.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-ruby@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-c-sharp@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] json -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/json .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] html -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/html .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] css -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/css .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] markdown -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/markdown .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] yaml -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/yaml .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] go -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/go .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] java -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/java .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] javascript -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/javascript .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] python -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/python .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] c -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/c .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] rust -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/rust .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] bash -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/bash .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] typescript -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/typescript .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] tsx -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/tsx .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] cpp -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/cpp .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] swift -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/swift .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] php -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/php .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] ruby -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/ruby .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] c-sharp -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/c-sharp .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] grammar sources ready. .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] done. .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching xcframework from https://github.com/erweixin/RaTeX/releases/download/v0.1.15/RaTeX.xcframework.zip .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching source from https://github.com/erweixin/RaTeX/archive/refs/tags/v0.1.15.tar.gz .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] RaTeX v0.1.15 -> .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] done. .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] postinstall complete. .../react-native-enriched-markdown postinstall: 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 13.4s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1d0ec-5fb6-774e-9193-7806c437151e · targets: web, ios ✓ target "web" command at http://127.0.0.1:37515/.well-known/t3/environment ready 8.13s ✓ target "ios" command at http://127.0.0.1:8190/status ready 9.72s × |web| scenarios/acp-busy-follow-up.e2e.ts > ACP holds a follow-up until the background agent accepts it 111.93s → expect.toBeVisible failed ❯ |web| scenarios/acp-busy-follow-up.e2e.ts (1 test | 1 failed) 111.93s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/acp-busy-follow-up.e2e.ts > ACP holds a follow-up until the background agent accepts it ASSERTION_FAILED: expect.toBeVisible failed locator: getByText("Received pressed. Background job complete; the follow-up was delivered.") expected: visible observed: no node (match count 0) ❯ scenarios/acp-busy-follow-up.e2e.ts:15:5 13| await composer.press("Enter"); 14| try { 15| await expect(screen.getByText("Received pressed. Background job c… | ^ 16| } finally { 17| await app.screenshot("follow-up-result"); ❯ at http://127.0.0.1:37515/8a63cbda-4e02-4d0c-8b22-53d7c11c4ab0/4ba60469-d267-4daf-8c8e-207b715491fe ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/acp-busy-follow-up-acp-holds-a-follow-up-until-the-1cbe3ca4e7b16bc4/trace.md ❯ video .e2e/prove/base/results/acp-busy-follow-up-acp-holds-a-follow-up-until-the-1cbe3ca4e7b16bc4/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 18:01:54 Duration 130.94s (2m 11s, startup 17.85s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/acp-busy-follow-up-acp-holds-a-follow-up-until-the-1cbe3ca4e7b16bc4/attempt-1/screenshots/001-follow-up-result.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/acp-busy-follow-up.e2e.ts:15 > ACP holds a follow-up until the background agent accepts it ASSERTION_FAILED: expect.toBeVisible failed trace .e2e/prove/base/results/acp-busy-follow-up-acp-holds-a-follow-up-until-the-1cbe3ca4e7b16bc4/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 45m 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: Virtual store is at: node_modules/.pnpm Progress: resolved 999, reused 999, downloaded 0, added 984 Progress: resolved 1775, reused 1775, downloaded 0, added 1771 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 3.7s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1d0ee-b25f-7b60-b376-91e94cb61f1a · targets: web, ios ✓ target "web" command at http://127.0.0.1:43451/.well-known/t3/environment ready 5.63s ✓ target "ios" command at http://127.0.0.1:8190/status ready 6.69s ✓ |web| scenarios/acp-busy-follow-up.e2e.ts > ACP holds a follow-up until the background agent accepts it 77.80s ✓ |web| scenarios/acp-busy-follow-up.e2e.ts (1 test) 77.80s Test Files 1 passed (1) Tests 1 passed (1) Start at 18:04:27 Duration 91.07s (1m 31s, startup 12.32s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/acp-busy-follow-up-acp-holds-a-follow-up-until-the-1cbe3ca4e7b16bc4/attempt-1/screenshots/001-follow-up-result.png Markdown .e2e/prove/head/summary.md { "scenario": "ACP holds a follow-up until the background agent accepts it", "failsOnBase": true, "passesOnHead": true, "baseSha": "f03db4fbef59c42113e37c32897bf4d25d31cb2b", "headSha": "cf62e93a9e705802ef7a3dfd68678d3fe5080d5e", "verdict": "Proven: the scenario fails on base `f03db4fbef` and passes on head `cf62e93a9e`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"Press the key once more, waiting up to 4 minutes.\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Stop generation\") → hidden", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")", "status": "failed" }, { "step": "app.screenshot follow-up-result", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"Press the key once more, waiting up to 4 minutes.\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Stop generation\") → hidden", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")", "status": "passed" }, { "step": "app.screenshot follow-up-result", "status": "passed" } ] }, "captures": [ "", "", "" ], "videos": [ "", "" ], "markdown": "### Scenario: ACP holds a follow-up until the background agent accepts it\n\n**Proven: the scenario fails on base `f03db4fbef` and passes on head `cf62e93a9e`.**\n\n| | Base `f03db4fbef` | Head `cf62e93a9e` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toBeVisible failed
locator: getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")
expected: visible
observed: no node (match count 0) | ✅ passed |\n| follow up result | ![Base f03db4fbef: follow up result](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc0bc36648d55eff/001-follow-up-result.png) | ![Head cf62e93a9e: follow up result](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75861a85afbea90d/001-follow-up-result.png) |\n| failure | ![Base f03db4fbef: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33eefce69d8da51e/002-failure.png) | |\n", "base": { "sha": "f03db4fbef59c42113e37c32897bf4d25d31cb2b", "status": "failed", "title": "ACP holds a follow-up until the background agent accepts it", "message": "ASSERTION_FAILED: expect.toBeVisible failed\nlocator: getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")\nexpected: visible\nobserved: no node (match count 0)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"Press the key once more, waiting up to 4 minutes.\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Stop generation\") → hidden", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")", "status": "failed" }, { "step": "app.screenshot follow-up-result", "status": "passed" } ], "captures": [ "", "" ], "videos": [ "" ] }, "head": { "sha": "cf62e93a9e705802ef7a3dfd68678d3fe5080d5e", "status": "passed", "title": "ACP holds a follow-up until the background agent accepts it", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"Press the key once more, waiting up to 4 minutes.\") → visible", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Stop generation\") → hidden", "status": "passed" }, { "step": "locator.fill getByRole(\"textbox\")", "status": "passed" }, { "step": "locator.press getByRole(\"textbox\")", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Received pressed. Background job complete; the follow-up was delivered.\")", "status": "passed" }, { "step": "app.screenshot follow-up-result", "status": "passed" } ], "captures": [ "" ], "videos": [ "" ] } }