prove-2.log $ node scripts/prove-scenario.ts scripts/scenarios/large-folder-proof.e2e.ts --base 154c5014a75f3f60bca6a6287434b46265c834c3 --head 1ef3a5cea983d873b7cc67ee5be01c42b396582d --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 33m 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 925, reused 925, downloaded 0, added 910 Progress: resolved 1751, reused 1750, downloaded 0, added 1739 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.5s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad3-c382-7e2e-a565-61a8d1217f8d · targets: web, ios ✓ target "web" command at http://127.0.0.1:34161/.well-known/t3/environment ready 6.14s × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 31.21s → expect.poll(...).toBe(...) timed out after 15000 ms ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 31.21s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms last: expected false to be true ❯ scenarios/large-folder-proof.e2e.ts:34:3 32| await screen.getByRole("textbox", "Message Large folder responsiven… 33| await browser.keyboard.type("Typing while the large folder opens"); 34| await expect.poll(()=>browser.evaluate(()=>{ | ^ 35| for(const el of document.querySelectorAll("*"))if(el.shadowRoot?.… 36| return false; ❯ at http://127.0.0.1:34161/c074ad7c-2ff2-487b-a134-5d1b82cc6561/mcp:c1538b18-7b44-425b-891a-28dcf25b15c7 ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:11:14 Duration 38.01s (startup 6.14s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:34 > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 34m 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 1008, reused 1008, downloaded 0, added 993 Progress: resolved 1771, reused 1771, downloaded 0, added 1764 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 01a1dad4-812b-73d3-bf75-3e6dfba55bfb · targets: web, ios ✓ target "web" command at http://127.0.0.1:41035/.well-known/t3/environment ready 7.16s × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 28.36s → expect.poll(...).toBe(...) timed out after 15000 ms ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 28.36s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms last: expected false to be true ❯ scenarios/large-folder-proof.e2e.ts:34:3 32| await screen.getByRole("textbox", "Message Large folder responsiven… 33| await browser.keyboard.type("Typing while the large folder opens"); 34| await expect.poll(()=>browser.evaluate(()=>{ | ^ 35| for(const el of document.querySelectorAll("*"))if(el.shadowRoot?.… 36| return false; ❯ at http://127.0.0.1:41035/d47ff5d9-5e21-4cf5-bbdb-a792a3d82bd3/mcp:e7c22443-80ed-4bea-a57f-18d3ff5394c0 ❯ app 1 warning logged ❯ trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:12:02 Duration 36.39s (startup 7.16s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png Markdown .e2e/prove/head/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:34 > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md { "scenario": "Opening 40000 sibling directories keeps the Files panel responsive", "failsOnBase": true, "passesOnHead": false, "couldNotRun": null, "baseSha": "154c5014a75f3f60bca6a6287434b46265c834c3", "headSha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "verdict": "Not proven: the scenario fails on base `154c5014a7` and still fails on head `1ef3a5cea9`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /c074ad7c-2ff2-487b-a134-5d1b82cc6561/mcp:c1538b18-7b44-425b-891a-28dcf25b15c7", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /d47ff5d9-5e21-4cf5-bbdb-a792a3d82bd3/mcp:e7c22443-80ed-4bea-a57f-18d3ff5394c0", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ] }, "captures": [ "", "", "", "" ], "videos": [ "", "" ], "markdown": "### Scenario: Opening 40000 sibling directories keeps the Files panel responsive\n\n**Not proven: the scenario fails on base `154c5014a7` and still fails on head `1ef3a5cea9`.**\n\n| | Base `154c5014a7` | Head `1ef3a5cea9` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms
last: expected false to be true | ❌ failed
ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms
last: expected false to be true |\n| before expansion | ![Base 154c5014a7: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79fb965f89def8b9/001-before-expansion.png) | ![Head 1ef3a5cea9: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d37db989923c569/001-before-expansion.png) |\n| failure | ![Base 154c5014a7: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/02c426a535a1ef16/002-failure.png) | ![Head 1ef3a5cea9: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/262124bbadbc78e1/002-failure.png) |\n", "base": { "sha": "154c5014a75f3f60bca6a6287434b46265c834c3", "status": "failed", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms\nlast: expected false to be true", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /c074ad7c-2ff2-487b-a134-5d1b82cc6561/mcp:c1538b18-7b44-425b-891a-28dcf25b15c7", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "captures": [ "", "" ], "videos": [ "" ] }, "head": { "sha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "status": "failed", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms\nlast: expected false to be true", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /d47ff5d9-5e21-4cf5-bbdb-a792a3d82bd3/mcp:e7c22443-80ed-4bea-a57f-18d3ff5394c0", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "captures": [ "", "" ], "videos": [ "" ] } } prove-3.log $ node scripts/prove-scenario.ts scripts/scenarios/large-folder-proof.e2e.ts --base 154c5014a75f3f60bca6a6287434b46265c834c3 --head 1ef3a5cea983d873b7cc67ee5be01c42b396582d --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 35m 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 1155, reused 1155, downloaded 0, added 1141 Progress: resolved 1775, reused 1775, downloaded 0, added 1774 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.2s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad5-6bd3-7460-b8a5-e51b920e9de0 · targets: web, ios ✓ target "web" command at http://127.0.0.1:42161/.well-known/t3/environment ready 5.40s stdout | |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive EXPANSION_METRICS {"tasks":[59,80,2068],"start":3777.100000000093,"last":7227.399999999907,"gap":2086.5999999996275} × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 48.69s → locator did not become visible: getByRole("treeitem", name: "generated-n… ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 48.69s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive LOCATOR_NOT_FOUND: locator did not become visible: getByRole("treeitem", name: "generated-new-0000.ts") ❯ scenarios/large-folder-proof.e2e.ts:46:3 44| for(let i=0;i<2000;i++) await writeFile(`${project}/src/generated-n… 45| await screen.getByRole("button","Refresh workspace files").tap(); 46| await screen.getByRole("treeitem", "generated-new-0000.ts", {exact:… | ^ 47| await app.screenshot("search-after-additions"); 48| for(let i=0;i<40000;i++) await rm(`${project}/src/generated-${Strin… ❯ at http://127.0.0.1:42161/27a8a862-d6d4-41da-9a52-655f99602adf/mcp:ed9fb698-fcbd-4a6a-b89f-2913e285498a ❯ on screen #n12015 treeitem "generated-00000" [expanded] ❯ on screen #n21034 treeitem "generated-00001" [expanded] ❯ on screen #n21037 treeitem "generated-00002" [expanded] ❯ on screen #n21040 treeitem "generated-00003" [expanded] ❯ on screen #n21043 treeitem "generated-00004" [expanded] ❯ app 1 error, 1 warning logged × console error: WebSocket connection to 'ws://127.0.0.1:42161/ws?clientSurface=web&clientAppVersion=0.1.9&clientDeviceType=desktop&clientOs=Linux&clientWebDeployment=server&clientBrowser=Chrome&connectionMethod=direct&clientDevice=8da824c2e7356df70ae44b4c7e8450a70026fb7eceebaeed6f0e9e01eed4300a&orchestrationProtoc… ❯ trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:13:02 Duration 54.81s (startup 5.40s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/002-expanded-folder.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/003-responsiveness-result.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/004-selected-existing-file.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:46 > Opening 40000 sibling directories keeps the Files panel responsive LOCATOR_NOT_FOUND: locator did not become visible: getByRole("treeitem", name: "generated-new-0000.ts") trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 36m 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 1093, reused 1093, downloaded 0, added 1078 Progress: resolved 1773, reused 1773, downloaded 0, added 1769 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.4s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad6-6dbf-7c4a-b77c-f173f086d552 · targets: web, ios ✓ target "web" command at http://127.0.0.1:33107/.well-known/t3/environment ready 5.85s stdout | |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive EXPANSION_METRICS {"tasks":[53,69,209],"start":3474.899999999907,"last":4925.200000000186,"gap":224.6999999997206} × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 44.75s → locator did not become visible: getByRole("treeitem", name: "generated-n… ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 44.75s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive LOCATOR_NOT_FOUND: locator did not become visible: getByRole("treeitem", name: "generated-new-0000.ts") ❯ scenarios/large-folder-proof.e2e.ts:46:3 44| for(let i=0;i<2000;i++) await writeFile(`${project}/src/generated-n… 45| await screen.getByRole("button","Refresh workspace files").tap(); 46| await screen.getByRole("treeitem", "generated-new-0000.ts", {exact:… | ^ 47| await app.screenshot("search-after-additions"); 48| for(let i=0;i<40000;i++) await rm(`${project}/src/generated-${Strin… ❯ at http://127.0.0.1:33107/2714f48d-3415-4d51-8991-fb97586373d4/mcp:b5e60c14-5fd3-4751-8a19-90d2fe148d2e ❯ on screen #n12015 treeitem "generated-00000" [expanded] ❯ on screen #n21034 treeitem "generated-00001" [expanded] ❯ on screen #n21037 treeitem "generated-00002" [expanded] ❯ on screen #n21040 treeitem "generated-00003" [expanded] ❯ on screen #n21043 treeitem "generated-00004" [expanded] ❯ app 1 error, 2 warnings logged × console error: WebSocket connection to 'ws://127.0.0.1:33107/ws?clientSurface=web&clientAppVersion=0.1.9&clientDeviceType=desktop&clientOs=Linux&clientWebDeployment=server&clientBrowser=Chrome&connectionMethod=direct&clientDevice=f97c1604eac89343b6445192f0802a93ed0d6be8c1b5c26c1ce0abb36c891e20&orchestrationProtoc… ❯ trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:14:08 Duration 51.21s (startup 5.85s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/002-expanded-folder.png .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/003-responsiveness-result.png .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/004-selected-existing-file.png Markdown .e2e/prove/head/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:46 > Opening 40000 sibling directories keeps the Files panel responsive LOCATOR_NOT_FOUND: locator did not become visible: getByRole("treeitem", name: "generated-new-0000.ts") trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md { "scenario": "Opening 40000 sibling directories keeps the Files panel responsive", "failsOnBase": false, "passesOnHead": false, "couldNotRun": "scenario", "baseSha": "154c5014a75f3f60bca6a6287434b46265c834c3", "headSha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "verdict": "Not proven: the scenario could not run on base `154c5014a7` (LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\")). The app ran and the scenario stopped before its assertion: fix the scenario and run it again.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /27a8a862-d6d4-41da-9a52-655f99602adf/mcp:ed9fb698-fcbd-4a6a-b89f-2913e285498a", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-00000\") → visible", "status": "passed" }, { "step": "app.screenshot expanded-folder", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot responsiveness-result", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"existing.txt\")", "status": "passed" }, { "step": "app.screenshot selected-existing-file", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Refresh workspace files\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-new-0000.ts\") → visible", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /2714f48d-3415-4d51-8991-fb97586373d4/mcp:b5e60c14-5fd3-4751-8a19-90d2fe148d2e", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-00000\") → visible", "status": "passed" }, { "step": "app.screenshot expanded-folder", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot responsiveness-result", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"existing.txt\")", "status": "passed" }, { "step": "app.screenshot selected-existing-file", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Refresh workspace files\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-new-0000.ts\") → visible", "status": "failed" } ] }, "captures": [ "", "", "", "", "", "", "", "", "", "" ], "videos": [ "", "" ], "markdown": "### Scenario: Opening 40000 sibling directories keeps the Files panel responsive\n\n**Not proven: the scenario could not run on base `154c5014a7` (LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\")). The app ran and the scenario stopped before its assertion: fix the scenario and run it again.**\n\n| | Base `154c5014a7` | Head `1ef3a5cea9` |\n| --- | --- | --- |\n| Result | ⚠️ could not run
LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\") | ⚠️ could not run
LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\") |\n| before expansion | ![Base 154c5014a7: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eaf7d4228fbfe44e/001-before-expansion.png) | ![Head 1ef3a5cea9: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8afd41fed3832488/001-before-expansion.png) |\n| expanded folder | ![Base 154c5014a7: expanded folder](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1eb218141bd7faf3/002-expanded-folder.png) | ![Head 1ef3a5cea9: expanded folder](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b3c386461cb728e/002-expanded-folder.png) |\n| responsiveness result | ![Base 154c5014a7: responsiveness result](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db52720dc91abb9d/003-responsiveness-result.png) | ![Head 1ef3a5cea9: responsiveness result](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13cbe9c772ec2257/003-responsiveness-result.png) |\n| selected existing file | ![Base 154c5014a7: selected existing file](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/880dae2708ec5f15/004-selected-existing-file.png) | ![Head 1ef3a5cea9: selected existing file](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d1969afa69ecd679/004-selected-existing-file.png) |\n| failure | ![Base 154c5014a7: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/711d2a04d1ee73e4/005-failure.png) | ![Head 1ef3a5cea9: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6a6fde55da98b16/005-failure.png) |\n", "base": { "sha": "154c5014a75f3f60bca6a6287434b46265c834c3", "status": "error", "stopped": "scenario", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\")", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /27a8a862-d6d4-41da-9a52-655f99602adf/mcp:ed9fb698-fcbd-4a6a-b89f-2913e285498a", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-00000\") → visible", "status": "passed" }, { "step": "app.screenshot expanded-folder", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot responsiveness-result", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"existing.txt\")", "status": "passed" }, { "step": "app.screenshot selected-existing-file", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Refresh workspace files\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-new-0000.ts\") → visible", "status": "failed" } ], "captures": [ "", "", "", "", "" ], "videos": [ "" ] }, "head": { "sha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "status": "error", "stopped": "scenario", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "LOCATOR_NOT_FOUND: locator did not become visible: getByRole(\"treeitem\", name: \"generated-new-0000.ts\")", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /2714f48d-3415-4d51-8991-fb97586373d4/mcp:b5e60c14-5fd3-4751-8a19-90d2fe148d2e", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.press ArrowRight", "status": "passed" }, { "step": "locator.tap getByRole(\"textbox\", name: \"Message Large folder responsiveness\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-00000\") → visible", "status": "passed" }, { "step": "app.screenshot expanded-folder", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot responsiveness-result", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"existing.txt\")", "status": "passed" }, { "step": "app.screenshot selected-existing-file", "status": "passed" }, { "step": "locator.fill getByRole(\"searchbox\", name: \"Search Large folder files\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Refresh workspace files\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"generated-new-0000.ts\") → visible", "status": "failed" } ], "captures": [ "", "", "", "", "" ], "videos": [ "" ] } } prove-4.log $ node scripts/prove-scenario.ts scripts/scenarios/large-folder-proof.e2e.ts --base 154c5014a75f3f60bca6a6287434b46265c834c3 --head 1ef3a5cea983d873b7cc67ee5be01c42b396582d --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 37m 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 1096, reused 1096, downloaded 0, added 1080 Progress: resolved 1770, reused 1770, downloaded 0, added 1765 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.8s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad7-7f8a-78c7-9bff-4f9ade7ceebc · targets: web, ios ✓ target "web" command at http://127.0.0.1:39811/.well-known/t3/environment ready 8.61s stdout | |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive EXPANSION_METRICS {"tasks":[134,157,2963],"start":8181.199999999721,"last":14232.299999999814,"gap":3006.399999999907} × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 76.02s → operation timed out: getByRole("searchbox", name: "Search Large folder f… ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 76.02s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive ACTION_FAILED: operation timed out: getByRole("searchbox", name: "Search Large folder files") ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:15:19 Duration 85.62s (1m 26s, startup 8.61s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/002-expanded-folder.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/003-responsiveness-result.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/004-selected-existing-file.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/005-search-kept-after-refresh.png .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/006-search-after-additions.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:6 > Opening 40000 sibling directories keeps the Files panel responsive ACTION_FAILED: operation timed out: getByRole("searchbox", name: "Search Large folder files") trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 39m 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 1067, reused 1067, downloaded 0, added 1052 Progress: resolved 1633, reused 1633, downloaded 0, added 1618 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 4.5s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad9-0339-7fdc-9b99-b2637c6887db · targets: web, ios ✓ target "web" command at http://127.0.0.1:34147/.well-known/t3/environment ready 10.18s prove.log $ node scripts/prove-scenario.ts scripts/scenarios/large-folder-proof.e2e.ts --base 154c5014a75f3f60bca6a6287434b46265c834c3 --head 1ef3a5cea983d873b7cc67ee5be01c42b396582d --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 31m 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 880, reused 880, downloaded 0, added 865 Progress: resolved 1586, reused 1586, downloaded 0, added 1572 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 .../node_modules/node-pty install$ node scripts/prebuild.js || node-gyp rebuild .../react-native-enriched-markdown postinstall$ node postinstall.mjs .../node_modules/node-pty install: > Checking prebuilds... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] restoring vendored native assets ... .../node_modules/node-pty install: Done .../node_modules/node-pty postinstall$ node scripts/post-install.js .../node_modules/node-pty postinstall: > Cleaning release folder... .../node_modules/node-pty postinstall: > Moving conpty.dll... .../node_modules/node-pty postinstall: SKIPPED (not Windows) .../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 .../node_modules/node-pty postinstall: Done .../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 11.8s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad1-c23f-70d1-9bb2-d5ad47c3dea4 · targets: web, ios ✓ target "web" command at http://127.0.0.1:43485/.well-known/t3/environment ready 11.83s × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 37.66s → expect.poll(...).toBe(...) timed out after 15000 ms ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 37.66s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms last: expected false to be true ❯ scenarios/large-folder-proof.e2e.ts:31:3 29| await row("src/"); 30| await browser.keyboard.type("Typing while the large folder opens"); 31| await expect.poll(()=>browser.evaluate(()=>{ | ^ 32| for(const el of document.querySelectorAll("*"))if(el.shadowRoot?.… 33| return false; ❯ at http://127.0.0.1:43485/9ec2f979-eeea-457e-96b7-6a3c2e3e7062/mcp:59b7000a-cdbd-4ef8-ae81-e8a5fc142765 ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:09:03 Duration 50.91s (startup 11.83s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:31 > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms trace .e2e/prove/base/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 32m 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 1219, reused 1219, downloaded 0, added 1204 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.2s using pnpm v12.14.0 RUN e2e v0.23.0 run 01a1dad2-bbb8-762c-91bb-9b63a1b478f6 · targets: web, ios ✓ target "web" command at http://127.0.0.1:38909/.well-known/t3/environment ready 7.64s × |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive 30.71s → expect.poll(...).toBe(...) timed out after 15000 ms ❯ |web| scenarios/large-folder-proof.e2e.ts (1 test | 1 failed) 30.71s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/large-folder-proof.e2e.ts > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms last: expected false to be true ❯ scenarios/large-folder-proof.e2e.ts:32:3 30| await screen.getByRole("treeitem", "src").tap(); 31| await browser.keyboard.type("Typing while the large folder opens"); 32| await expect.poll(()=>browser.evaluate(()=>{ | ^ 33| for(const el of document.querySelectorAll("*"))if(el.shadowRoot?.… 34| return false; ❯ at http://127.0.0.1:38909/87c3ba64-7956-498c-8b49-0cf632e4740a/mcp:d2aa5a23-9936-41fd-b53e-f283fd669d7f ❯ app 1 warning logged ❯ trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md ❯ video .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 16:10:06 Duration 39.32s (startup 7.64s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/attempt-1/screenshots/001-before-expansion.png Markdown .e2e/prove/head/summary.md Failed × |web| scenarios/large-folder-proof.e2e.ts:32 > Opening 40000 sibling directories keeps the Files panel responsive ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms trace .e2e/prove/head/results/large-folder-proof-opening-40000-sibling-4c7052e0f670d8a9/trace.md { "scenario": "Opening 40000 sibling directories keeps the Files panel responsive", "failsOnBase": true, "passesOnHead": false, "couldNotRun": null, "baseSha": "154c5014a75f3f60bca6a6287434b46265c834c3", "headSha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "verdict": "Not proven: the scenario fails on base `154c5014a7` and still fails on head `1ef3a5cea9`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /9ec2f979-eeea-457e-96b7-6a3c2e3e7062/mcp:59b7000a-cdbd-4ef8-ae81-e8a5fc142765", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /87c3ba64-7956-498c-8b49-0cf632e4740a/mcp:d2aa5a23-9936-41fd-b53e-f283fd669d7f", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ] }, "captures": [ "", "", "", "" ], "videos": [ "", "" ], "markdown": "### Scenario: Opening 40000 sibling directories keeps the Files panel responsive\n\n**Not proven: the scenario fails on base `154c5014a7` and still fails on head `1ef3a5cea9`.**\n\n| | Base `154c5014a7` | Head `1ef3a5cea9` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms
last: expected false to be true | ❌ failed
ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms
last: expected false to be true |\n| before expansion | ![Base 154c5014a7: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a33d435011d51b9/001-before-expansion.png) | ![Head 1ef3a5cea9: before expansion](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c729ab0d60f88ef4/001-before-expansion.png) |\n| failure | ![Base 154c5014a7: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/66334d2b803ed3f7/002-failure.png) | ![Head 1ef3a5cea9: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0a6056be6feddee2/002-failure.png) |\n", "base": { "sha": "154c5014a75f3f60bca6a6287434b46265c834c3", "status": "failed", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms\nlast: expected false to be true", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /9ec2f979-eeea-457e-96b7-6a3c2e3e7062/mcp:59b7000a-cdbd-4ef8-ae81-e8a5fc142765", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "captures": [ "", "" ], "videos": [ "" ] }, "head": { "sha": "1ef3a5cea983d873b7cc67ee5be01c42b396582d", "status": "failed", "title": "Opening 40000 sibling directories keeps the Files panel responsive", "message": "ASSERTION_FAILED: expect.poll(...).toBe(...) timed out after 15000 ms\nlast: expected false to be true", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /87c3ba64-7956-498c-8b49-0cf632e4740a/mcp:d2aa5a23-9936-41fd-b53e-f283fd669d7f", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Toggle right panel\")", "status": "passed" }, { "step": "locator.tap getByText(\"Files\")", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.waitFor getByRole(\"treeitem\", name: \"src\") → visible", "status": "passed" }, { "step": "app.screenshot before-expansion", "status": "passed" }, { "step": "locator.tap getByRole(\"treeitem\", name: \"src\")", "status": "passed" }, { "step": "browser.keyboard.type 35 chars", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" } ], "captures": [ "", "" ], "videos": [ "" ] } }