prove-1.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 25m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 224, reused 224, downloaded 0, added 209 Progress: resolved 442, reused 442, downloaded 0, added 427 Progress: resolved 624, reused 624, downloaded 0, added 609 Progress: resolved 720, reused 720, downloaded 0, added 705 Progress: resolved 849, reused 849, downloaded 0, added 834 Progress: resolved 983, reused 983, downloaded 0, added 968 Progress: resolved 1039, reused 1039, downloaded 0, added 1024 Progress: resolved 1153, reused 1153, downloaded 0, added 1138 Progress: resolved 1358, reused 1358, downloaded 0, added 1343 Progress: resolved 1520, reused 1520, downloaded 0, added 1506 Progress: resolved 1705, reused 1705, downloaded 0, added 1692 Progress: resolved 1765, reused 1765, downloaded 0, added 1758 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done .../esbuild@0.28.2/node_modules/esbuild postinstall$ node install.js .../node_modules/node-pty install$ node scripts/prebuild.js || node-gyp rebuild .../esbuild@0.28.2/node_modules/esbuild postinstall: Done .../react-native-enriched-markdown postinstall$ node postinstall.mjs .../node_modules/node-pty install: > Checking prebuilds... .../node_modules/node-pty install: Done .../node_modules/node-pty postinstall$ node scripts/post-install.js .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] restoring vendored native assets ... .../node_modules/node-pty postinstall: > Cleaning release folder... .../node_modules/node-pty postinstall: > Moving conpty.dll... .../node_modules/node-pty postinstall: SKIPPED (not Windows) .../node_modules/node-pty postinstall: Done .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching runtime v0.26.3 from https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v0.26.3.tar.gz .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] runtime -> react-native-enriched-markdown/cpp/highlight/vendor/tree-sitter/src .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-json@0.24.8 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-html@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-css@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading @tree-sitter-grammars/tree-sitter-markdown@0.3.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading @tree-sitter-grammars/tree-sitter-yaml@0.7.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-go@0.23.4 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-java@0.23.5 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-javascript@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-python@0.23.6 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-c@0.23.5 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-rust@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-bash@0.23.3 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-typescript@0.23.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-cpp@0.23.4 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-swift@0.7.0 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-php@0.24.2 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-ruby@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] downloading tree-sitter-c-sharp@0.23.1 ... .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] json -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/json .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] html -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/html .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] css -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/css .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] markdown -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/markdown .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] yaml -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/yaml .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] go -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/go .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] java -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/java .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] javascript -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/javascript .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] python -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/python .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] c -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/c .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] rust -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/rust .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] bash -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/bash .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] typescript -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/typescript .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] tsx -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/tsx .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] cpp -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/cpp .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] swift -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/swift .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] php -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/php .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] ruby -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/ruby .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] c-sharp -> react-native-enriched-markdown/cpp/highlight/vendor/grammars/c-sharp .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] grammar sources ready. .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] done. .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching xcframework from https://github.com/erweixin/RaTeX/releases/download/v0.1.15/RaTeX.xcframework.zip .../react-native-enriched-markdown postinstall: [react-native-enriched-markdown] fetching source from https://github.com/erweixin/RaTeX/archive/refs/tags/v0.1.15.tar.gz [local path or pairing credential redacted] .../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 28.2s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf3-f28a-7c83-af22-91f30a747172 · targets: web, ios ✓ target "web" command at http://127.0.0.1:36749/.well-known/t3/environment ready 14.56s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 27.56s → locator matched 3 nodes, expected exactly one: getByRole("combobox") ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 27.56s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole("combobox") ❯ scenarios/azure-encoded-repository.e2e.ts:12:3 10| await t3.open(thread); 11| await browser.keyboard.press("Control+k"); 12| await screen.getByRole("combobox").fill("Link pull request to threa… | ^ 13| await screen.getByText("Link pull request to thread", { exact: true… 14| await screen.getByPlaceholder("Pull request URL or #42").fill("http… ❯ at http://127.0.0.1:36749/1a92e71c-b594-4aff-9649-04cefc0f17bd/mcp:cac967d1-52b1-4a13-b7d5-5dee61cb95f6 ❯ on screen #n6008 combobox "Search threads" ❯ on screen #n6009 combobox "Filter threads by project" ❯ on screen #n6078 combobox "Branch: main" [disabled] ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:26:01 Duration 44.06s (startup 14.56s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:12 > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole("combobox") trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 27m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 468, reused 468, downloaded 0, added 453 Progress: resolved 761, reused 761, downloaded 0, added 746 Progress: resolved 1089, reused 1089, downloaded 0, added 1074 Progress: resolved 1291, reused 1291, downloaded 0, added 1276 Progress: resolved 1634, reused 1634, downloaded 0, added 1621 Progress: resolved 1761, reused 1761, downloaded 0, added 1754 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 9.9s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf5-0762-7a6e-95be-2779d9602ee8 · targets: web, ios ✓ target "web" command at http://127.0.0.1:43997/.well-known/t3/environment ready 10.48s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 23.88s → locator matched 3 nodes, expected exactly one: getByRole("combobox") ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 23.88s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole("combobox") ❯ scenarios/azure-encoded-repository.e2e.ts:12:3 10| await t3.open(thread); 11| await browser.keyboard.press("Control+k"); 12| await screen.getByRole("combobox").fill("Link pull request to threa… | ^ 13| await screen.getByText("Link pull request to thread", { exact: true… 14| await screen.getByPlaceholder("Pull request URL or #42").fill("http… ❯ at http://127.0.0.1:43997/bc5e7d65-eada-4bfb-b75f-0d5838524b8b/mcp:df7e8b4c-8485-4bac-b623-fafe359a97fb ❯ on screen #n6008 combobox "Search threads" ❯ on screen #n6009 combobox "Filter threads by project" ❯ on screen #n6068 combobox "Branch: main" [disabled] ❯ app 1 warning logged ❯ trace .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:27:11 Duration 35.42s (startup 10.48s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Markdown .e2e/prove/head/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:12 > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole("combobox") trace .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md { "scenario": "Azure pull request resolves a repository with encoded parentheses", "failsOnBase": false, "passesOnHead": false, "couldNotRun": "scenario", "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\")). 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 /1a92e71c-b594-4aff-9649-04cefc0f17bd/mcp:cac967d1-52b1-4a13-b7d5-5dee61cb95f6", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"combobox\")", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /bc5e7d65-eada-4bfb-b75f-0d5838524b8b/mcp:df7e8b4c-8485-4bac-b623-fafe359a97fb", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"combobox\")", "status": "failed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: Azure pull request resolves a repository with encoded parentheses\n\n**Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\")). The app ran and the scenario stopped before its assertion: fix the scenario and run it again.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ⚠️ could not run
LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\") | ⚠️ could not run
LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\") |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae855df339eb1822/001-failure.png) | ![Head 1d2d92ec02: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/691d1c690cd55b6d/001-failure.png) |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "error", "stopped": "scenario", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\")", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /1a92e71c-b594-4aff-9649-04cefc0f17bd/mcp:cac967d1-52b1-4a13-b7d5-5dee61cb95f6", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"combobox\")", "status": "failed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "error", "stopped": "scenario", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "LOCATOR_AMBIGUOUS: locator matched 3 nodes, expected exactly one: getByRole(\"combobox\")", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /bc5e7d65-eada-4bfb-b75f-0d5838524b8b/mcp:df7e8b4c-8485-4bac-b623-fafe359a97fb", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByRole(\"combobox\")", "status": "failed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-2.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 28m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 801, reused 801, downloaded 0, added 786 Progress: resolved 1419, reused 1419, downloaded 0, added 1403 Progress: resolved 1772, reused 1772, downloaded 0, added 1766 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 5.1s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf6-12c7-7da7-ae5c-5b138f99d494 · targets: web, ios ✓ target "web" command at http://127.0.0.1:40813/.well-known/t3/environment ready 5.18s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 14.40s → locator matched 2 nodes, expected exactly one: getByRole("link", name: /… ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 14.40s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole("link", name: /323/) ❯ scenarios/azure-encoded-repository.e2e.ts:20:3 18| await screen.getByPlaceholder("Search commands, projects, and threa… 19| await screen.getByText("Show linked pull requests", { exact: true }… 20| await screen.getByRole("link", { name: /323/ }).tap(); | ^ 21| await screen.getByText("Could not load pull requests", { exact: tru… 22| await app.screenshot("encoded-pull-request"); ❯ at http://127.0.0.1:40813/84633dbf-cb9c-4e0e-acac-4f604b0ecebe/mcp:b07a5cbd-ccb3-4c55-b8d7-d99b4c6ac352 ❯ on screen #n21023 link "PR #323, status pending" href="https://dev.azure.com/t3code-factory-test/Sample%20%28Beta%29%2036929/_git/Sample%20%28Beta%29%2036929/pullrequest/323" ❯ on screen #n21076 link "#323 t3code-factory-test/sample%20%28beta%29%2036929/_git/sample%20%28beta%29%2036929 dev.azure.com/t3code-factory-test/sample%20%28beta%29%2036929/_git/sample%20%28beta%29%2036929" href="https://dev.azure.com/t3code-factory-test/Sample%20%28Beta%29%2036929/_git/Sample%20%28Beta%29%2036929/pullrequest/323" [focused] ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:28:19 Duration 20.63s (startup 5.18s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:20 > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole("link", name: /323/) trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 29m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 482, reused 482, downloaded 0, added 466 Progress: resolved 1065, reused 1065, downloaded 0, added 1049 Progress: resolved 1634, reused 1634, 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 5.5s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf6-a2be-7f68-a32e-5f4477dbe35a · targets: web, ios ✓ target "web" command at http://127.0.0.1:42203/.well-known/t3/environment ready 5.83s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 13.16s → locator matched 2 nodes, expected exactly one: getByRole("link", name: /… ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 13.16s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole("link", name: /323/) ❯ scenarios/azure-encoded-repository.e2e.ts:20:3 18| await screen.getByPlaceholder("Search commands, projects, and threa… 19| await screen.getByText("Show linked pull requests", { exact: true }… 20| await screen.getByRole("link", { name: /323/ }).tap(); | ^ 21| await screen.getByText("Could not load pull requests", { exact: tru… 22| await app.screenshot("encoded-pull-request"); ❯ at http://127.0.0.1:42203/3312b209-678a-44bf-ae69-a2c3074486e3/mcp:d4c0aaa4-54a7-4f66-a4b1-3cae7e4264ec ❯ on screen #n21023 link "PR #323, status pending" href="https://dev.azure.com/t3code-factory-test/Sample%20%28Beta%29%2036929/_git/Sample%20%28Beta%29%2036929/pullrequest/323" ❯ on screen #n21076 link "#323 t3code-factory-test/sample%20(beta)%2036929/_git/sample%20(beta)%2036929 dev.azure.com/t3code-factory-test/sample%20(beta)%2036929/_git/sample%20(beta)%2036929" href="https://dev.azure.com/t3code-factory-test/Sample%20%28Beta%29%2036929/_git/Sample%20%28Beta%29%2036929/pullrequest/323" [focused] ❯ app 1 warning logged ❯ trace .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:28:56 Duration 20.02s (startup 5.83s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Markdown .e2e/prove/head/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:20 > Azure pull request resolves a repository with encoded parentheses LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole("link", name: /323/) trace .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md { "scenario": "Azure pull request resolves a repository with encoded parentheses", "failsOnBase": false, "passesOnHead": false, "couldNotRun": "scenario", "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/)). 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 /84633dbf-cb9c-4e0e-acac-4f604b0ecebe/mcp:b07a5cbd-ccb3-4c55-b8d7-d99b4c6ac352", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.tap getByRole(\"link\", name: /323/)", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3312b209-678a-44bf-ae69-a2c3074486e3/mcp:d4c0aaa4-54a7-4f66-a4b1-3cae7e4264ec", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.tap getByRole(\"link\", name: /323/)", "status": "failed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: Azure pull request resolves a repository with encoded parentheses\n\n**Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/)). The app ran and the scenario stopped before its assertion: fix the scenario and run it again.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ⚠️ could not run
LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/) | ⚠️ could not run
LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/) |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0412e20444dd8b25/001-failure.png) | ![Head 1d2d92ec02: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc934f549aec1ee6/001-failure.png) |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "error", "stopped": "scenario", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /84633dbf-cb9c-4e0e-acac-4f604b0ecebe/mcp:b07a5cbd-ccb3-4c55-b8d7-d99b4c6ac352", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.tap getByRole(\"link\", name: /323/)", "status": "failed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "error", "stopped": "scenario", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "LOCATOR_AMBIGUOUS: locator matched 2 nodes, expected exactly one: getByRole(\"link\", name: /323/)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3312b209-678a-44bf-ae69-a2c3074486e3/mcp:d4c0aaa4-54a7-4f66-a4b1-3cae7e4264ec", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.tap getByRole(\"link\", name: /323/)", "status": "failed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-3.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 30m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 569, reused 569, downloaded 0, added 554 Progress: resolved 1068, reused 1068, downloaded 0, added 1053 Progress: resolved 1658, reused 1658, downloaded 0, added 1643 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.9s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf7-562f-747e-aff0-e9f7653fc956 · targets: web, ios ✓ target "web" command at http://127.0.0.1:36441/.well-known/t3/environment ready 4.74s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 75.53s → locator did not become visible: getByText("Could not load pull requests"… ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 75.53s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses LOCATOR_NOT_FOUND: locator did not become visible: getByText("Could not load pull requests").or(getByText("Verify encoded repository link")).first() ❯ scenarios/azure-encoded-repository.e2e.ts:22:3 20| await screen.getByRole("dialog", "Command palette").waitFor({ state… 21| await screen.getByRole("region", "Workspace panel: Pull requests").… 22| await screen.getByText("Could not load pull requests", { exact: tru… | ^ 23| await app.screenshot("encoded-pull-request"); 24| await expect(screen.getByText("Verify encoded repository link", { e… ❯ at http://127.0.0.1:36441/96073f24-f3e0-46db-bff3-b9f051e90493/mcp:f8d5f90b-efed-413a-b7a2-194ec7bfc56c ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:29:42 Duration 80.98s (1m 21s, startup 4.74s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:22 > Azure pull request resolves a repository with encoded parentheses LOCATOR_NOT_FOUND: locator did not become visible: getByText("Could not load pull requests").or(getByText("Verify encoded repository link")).first() trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md 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. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 625, reused 625, downloaded 0, added 610 Progress: resolved 1210, reused 1210, downloaded 0, added 1195 Progress: resolved 1678, reused 1678, downloaded 0, added 1665 Progress: resolved 1779, reused 1775, downloaded 0, added 1775 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 5.3s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf8-d901-7bfd-9472-3cb1c3710ceb · targets: web, ios ✓ target "web" command at http://127.0.0.1:38449/.well-known/t3/environment ready 6.01s ✓ |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 13.95s ✓ |web| scenarios/azure-encoded-repository.e2e.ts (1 test) 13.95s Test Files 1 passed (1) Tests 1 passed (1) Start at 21:31:21 Duration 21.10s (startup 6.01s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/001-encoded-pull-request.png Markdown .e2e/prove/head/summary.md { "scenario": "Azure pull request resolves a repository with encoded parentheses", "failsOnBase": false, "passesOnHead": true, "couldNotRun": "scenario", "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_NOT_FOUND: locator did not become visible: getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first()). 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 /96073f24-f3e0-46db-bff3-b9f051e90493/mcp:f8d5f90b-efed-413a-b7a2-194ec7bfc56c", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first() → visible", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /07e628e5-1507-41ed-be34-1bd8d0871170/mcp:9631539b-4ebb-4b07-b1ba-e9aa14d2e72a", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first() → visible", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: Azure pull request resolves a repository with encoded parentheses\n\n**Not proven: the scenario could not run on base `c76ba848ab` (LOCATOR_NOT_FOUND: locator did not become visible: getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first()). The app ran and the scenario stopped before its assertion: fix the scenario and run it again.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ⚠️ could not run
LOCATOR_NOT_FOUND: locator did not become visible: getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first() | ✅ passed |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/255d91ea81dd0953/001-failure.png) | |\n| encoded pull request | | ![Head 1d2d92ec02: encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d6e9c7e5b236606/001-encoded-pull-request.png) |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "error", "stopped": "scenario", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "LOCATOR_NOT_FOUND: locator did not become visible: getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first()", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /96073f24-f3e0-46db-bff3-b9f051e90493/mcp:f8d5f90b-efed-413a-b7a2-194ec7bfc56c", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first() → visible", "status": "failed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "passed", "title": "Azure pull request resolves a repository with encoded parentheses", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /07e628e5-1507-41ed-be34-1bd8d0871170/mcp:9631539b-4ebb-4b07-b1ba-e9aa14d2e72a", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Could not load pull requests\").or(getByText(\"Verify encoded repository link\")).first() → visible", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-4.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled 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. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 484, reused 484, downloaded 0, added 469 Progress: resolved 832, reused 832, downloaded 0, added 817 Progress: resolved 1246, reused 1246, downloaded 0, added 1231 Progress: resolved 1638, reused 1638, downloaded 0, added 1622 Progress: resolved 1771, reused 1771, downloaded 0, added 1768 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 6.6s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbf9-a649-7524-9099-a3db25d058c2 · targets: web, ios ✓ target "web" command at http://127.0.0.1:35259/.well-known/t3/environment ready 7.34s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 74.94s → expect.toBeVisible failed ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 74.94s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses ASSERTION_FAILED: expect.toBeVisible failed locator: getByText("Verify encoded repository link").first() expected: visible observed: no node (match count 0) ❯ scenarios/azure-encoded-repository.e2e.ts:23:5 21| await screen.getByRole("region", "Workspace panel: Pull requests").… 22| try { 23| await expect(screen.getByText("Verify encoded repository link", {… | ^ 24| } finally { 25| await app.screenshot("encoded-pull-request"); ❯ at http://127.0.0.1:35259/6361ae14-4d26-47f7-a803-45681016df98/mcp:7a9dee0c-c876-47d0-b2d5-eb34fdaff7f3 ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:32:14 Duration 83.28s (1m 23s, startup 7.34s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/001-encoded-pull-request.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:23 > Azure pull request resolves a repository with encoded parentheses ASSERTION_FAILED: expect.toBeVisible failed trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/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. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 533, reused 533, downloaded 0, added 518 Progress: resolved 853, reused 853, downloaded 0, added 840 Progress: resolved 1205, reused 1205, downloaded 0, added 1191 Progress: resolved 1418, reused 1418, downloaded 0, added 1405 Progress: resolved 1710, reused 1710, downloaded 0, added 1701 Progress: resolved 1775, reused 1775, downloaded 0, added 1775 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 8.3s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbfb-4216-7580-937a-f8d117f191d1 · targets: web, ios ✓ target "web" command at http://127.0.0.1:44013/.well-known/t3/environment ready 9.08s ✓ |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 17.60s ✓ |web| scenarios/azure-encoded-repository.e2e.ts (1 test) 17.60s Test Files 1 passed (1) Tests 1 passed (1) Start at 21:33:59 Duration 27.60s (startup 9.08s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/001-encoded-pull-request.png Markdown .e2e/prove/head/summary.md { "scenario": "Azure pull request resolves a repository with encoded parentheses", "failsOnBase": true, "passesOnHead": true, "couldNotRun": null, "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6361ae14-4d26-47f7-a803-45681016df98/mcp:7a9dee0c-c876-47d0-b2d5-eb34fdaff7f3", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /5c58df37-b1cf-48e3-a16f-57390eae0746/mcp:70fa0aa7-434e-445c-b62c-b41f9ffc2270", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: Azure pull request resolves a repository with encoded parentheses\n\n**Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toBeVisible failed
locator: getByText(\"Verify encoded repository link\").first()
expected: visible
observed: no node (match count 0) | ✅ passed |\n| encoded pull request | ![Base c76ba848ab: encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7e8ba122d3d2730/001-encoded-pull-request.png) | ![Head 1d2d92ec02: encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/734fb99474bc561e/001-encoded-pull-request.png) |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa1aa6a8301739ee/002-failure.png) | |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "failed", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "ASSERTION_FAILED: expect.toBeVisible failed\nlocator: getByText(\"Verify encoded repository link\").first()\nexpected: visible\nobserved: no node (match count 0)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6361ae14-4d26-47f7-a803-45681016df98/mcp:7a9dee0c-c876-47d0-b2d5-eb34fdaff7f3", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "passed", "title": "Azure pull request resolves a repository with encoded parentheses", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /5c58df37-b1cf-48e3-a16f-57390eae0746/mcp:70fa0aa7-434e-445c-b62c-b41f9ffc2270", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-5.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled 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. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 567, reused 567, downloaded 0, added 552 Progress: resolved 846, reused 846, downloaded 0, added 831 Progress: resolved 1282, reused 1282, downloaded 0, added 1267 Progress: resolved 1738, reused 1738, downloaded 0, added 1727 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 6.3s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbfc-eb52-7310-8850-0e5852bee8fe · targets: web, ios ✓ target "web" command at http://127.0.0.1:34049/.well-known/t3/environment ready 10.87s × |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 94.86s → expect.toBeVisible failed ❯ |web| scenarios/azure-encoded-repository.e2e.ts (1 test | 1 failed) 94.86s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses ASSERTION_FAILED: expect.toBeVisible failed locator: getByText("Verify encoded repository link").first() expected: visible observed: no node (match count 0) ❯ scenarios/azure-encoded-repository.e2e.ts:35:5 33| await linkAndOpen(thread, "Encoded repository link", "https://dev.a… 34| try { 35| await expect(screen.getByText("Verify encoded repository link", {… | ^ 36| await screen.getByText(body, { exact: true }).waitFor({ timeout: … 37| } finally { ❯ at http://127.0.0.1:34049/b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd ❯ app 1 error, 2 warnings logged × network error: GET https://spsprodcus7.vssps.visualstudio.com/_signin?realm=dev.azure.com&reply_to=https%3A%2F%2Fdev.azure.com%2Ft3code-factory-test%2F_api%2F_common%2FidentityImage%3Fid%3D045e40d6-c17e-66c1-9649-dc1f0141a3a3&redirect=1&protocol=entra.web.3&hid=4fee8751-7cd0-4fd4-beba-fbca878cd2d4&context=eyJodCI… ❯ trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md ❯ video .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:35:48 Duration 106.78s (1m 47s, startup 10.87s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/001-bare-parentheses-control.png .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/002-encoded-pull-request.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-encoded-repository.e2e.ts:35 > Azure pull request resolves a repository with encoded parentheses ASSERTION_FAILED: expect.toBeVisible failed trace .e2e/prove/base/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 38m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 540, reused 540, downloaded 0, added 525 Progress: resolved 994, reused 994, downloaded 0, added 980 Progress: resolved 1302, reused 1302, downloaded 0, added 1288 Progress: resolved 1559, reused 1559, downloaded 0, added 1549 Progress: resolved 1774, reused 1774, 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 6.9s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dbfe-e0d5-735b-b262-af3dcbc81097 · targets: web, ios ✓ target "web" command at http://127.0.0.1:43615/.well-known/t3/environment ready 5.69s ✓ |web| scenarios/azure-encoded-repository.e2e.ts > Azure pull request resolves a repository with encoded parentheses 41.41s ✓ |web| scenarios/azure-encoded-repository.e2e.ts (1 test) 41.41s Test Files 1 passed (1) Tests 1 passed (1) Start at 21:37:57 Duration 48.24s (startup 5.69s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/001-bare-parentheses-control.png .e2e/prove/head/results/azure-encoded-repository-azure-pull-request-resolves-a-0e057d5aa9f2b56e/attempt-1/screenshots/002-encoded-pull-request.png Markdown .e2e/prove/head/summary.md { "scenario": "Azure pull request resolves a repository with encoded parentheses", "failsOnBase": true, "passesOnHead": true, "couldNotRun": null, "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:3b4c7cba-ed62-43a6-880e-393ba7b0764a", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Bare parentheses control\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot bare-parentheses-control", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6b652469-2625-4433-a8f0-9851fb93009f/mcp:c77520ea-d896-4fec-a77f-787043866d97", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Bare parentheses control\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot bare-parentheses-control", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6b652469-2625-4433-a8f0-9851fb93009f/mcp:eb10f60b-dd12-46f5-b5df-592060f53768", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: Azure pull request resolves a repository with encoded parentheses\n\n**Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toBeVisible failed
locator: getByText(\"Verify encoded repository link\").first()
expected: visible
observed: no node (match count 0) | ✅ passed |\n| bare parentheses control | ![Base c76ba848ab: bare parentheses control](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e9253c5ec819ebf8/001-bare-parentheses-control.png) | ![Head 1d2d92ec02: bare parentheses control](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e98d06015c565d4/001-bare-parentheses-control.png) |\n| encoded pull request | ![Base c76ba848ab: encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2de9998735e1114f/002-encoded-pull-request.png) | ![Head 1d2d92ec02: encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9d89b3fdb3f2495/002-encoded-pull-request.png) |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd85dca9a0838be4/003-failure.png) | |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "failed", "title": "Azure pull request resolves a repository with encoded parentheses", "message": "ASSERTION_FAILED: expect.toBeVisible failed\nlocator: getByText(\"Verify encoded repository link\").first()\nexpected: visible\nobserved: no node (match count 0)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:3b4c7cba-ed62-43a6-880e-393ba7b0764a", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Bare parentheses control\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot bare-parentheses-control", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "passed", "title": "Azure pull request resolves a repository with encoded parentheses", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6b652469-2625-4433-a8f0-9851fb93009f/mcp:c77520ea-d896-4fec-a77f-787043866d97", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Bare parentheses control\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot bare-parentheses-control", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /6b652469-2625-4433-a8f0-9851fb93009f/mcp:eb10f60b-dd12-46f5-b5df-592060f53768", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Link pull request to thread\")", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Pull request URL or #42\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Link\")", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "app.screenshot encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-upgrade-2.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-saved-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 42m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 604, reused 604, downloaded 0, added 589 Progress: resolved 1231, reused 1231, downloaded 0, added 1216 Progress: resolved 1775, reused 1775, downloaded 0, added 1771 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 5.3s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dc02-812b-70b3-8d56-b7b385e7aef3 · targets: web, ios ✓ target "web" command at http://127.0.0.1:35511/.well-known/t3/environment ready 5.01s × |web| scenarios/azure-saved-encoded-repository.e2e.ts > An encoded Azure link saved on base recovers without relinking 74.11s → expect.toBeVisible failed ❯ |web| scenarios/azure-saved-encoded-repository.e2e.ts (1 test | 1 failed) 74.11s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/azure-saved-encoded-repository.e2e.ts > An encoded Azure link saved on base recovers without relinking ASSERTION_FAILED: expect.toBeVisible failed locator: getByText("Verify encoded repository link").first() expected: visible observed: no node (match count 0) ❯ scenarios/azure-saved-encoded-repository.e2e.ts:16:5 14| await screen.getByRole("region", "Workspace panel: Pull requests").… 15| try { 16| await expect(screen.getByText("Verify encoded repository link", {… | ^ 17| await screen.getByText("Encoding proof: this pull request should … 18| await expect(screen.getByRole("button", { name: /^Encoded reposit… ❯ at http://127.0.0.1:35511/b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd ❯ app 1 warning logged ❯ trace .e2e/prove/base/results/azure-saved-encoded-repository-an-encoded-azure-link-saved-on-d73f926287734cb0/trace.md ❯ video .e2e/prove/base/results/azure-saved-encoded-repository-an-encoded-azure-link-saved-on-d73f926287734cb0/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 21:41:54 Duration 80.32s (1m 20s, startup 5.01s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/azure-saved-encoded-repository-an-encoded-azure-link-saved-on-d73f926287734cb0/attempt-1/screenshots/001-saved-encoded-pull-request.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/azure-saved-encoded-repository.e2e.ts:16 > An encoded Azure link saved on base recovers without relinking ASSERTION_FAILED: expect.toBeVisible failed trace .e2e/prove/base/results/azure-saved-encoded-repository-an-encoded-azure-link-saved-on-d73f926287734cb0/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 44m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 320, reused 320, downloaded 0, added 305 Progress: resolved 538, reused 538, downloaded 0, added 523 Progress: resolved 732, reused 732, downloaded 0, added 717 Progress: resolved 977, reused 977, downloaded 0, added 962 Progress: resolved 1173, reused 1173, downloaded 0, added 1158 Progress: resolved 1396, reused 1396, downloaded 0, added 1381 Progress: resolved 1576, reused 1576, downloaded 0, added 1562 Progress: resolved 1763, reused 1763, downloaded 0, added 1755 Progress: resolved 1775, reused 1775, downloaded 0, added 1775 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 12.9s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dc04-3bf5-729e-9cbb-4a472a0d8341 · targets: web, ios ✓ target "web" command at http://127.0.0.1:40733/.well-known/t3/environment ready 8.77s ✓ |web| scenarios/azure-saved-encoded-repository.e2e.ts > An encoded Azure link saved on base recovers without relinking 32.40s ✓ |web| scenarios/azure-saved-encoded-repository.e2e.ts (1 test) 32.40s Test Files 1 passed (1) Tests 1 passed (1) Start at 21:43:48 Duration 42.86s (startup 8.77s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/azure-saved-encoded-repository-an-encoded-azure-link-saved-on-d73f926287734cb0/attempt-1/screenshots/001-saved-encoded-pull-request.png Markdown .e2e/prove/head/summary.md { "scenario": "An encoded Azure link saved on base recovers without relinking", "failsOnBase": true, "passesOnHead": true, "couldNotRun": null, "baseSha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "headSha": "1d2d92ec02db12a421b7d390c6806213f0810584", "verdict": "Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot saved-encoded-pull-request", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"button\", name: /^Encoded repository link, Sample/) >> getByRole(\"link\", name: /Open: Verify encoded repository link/)", "status": "passed" }, { "step": "app.screenshot saved-encoded-pull-request", "status": "passed" } ] }, "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "markdown": "### Scenario: An encoded Azure link saved on base recovers without relinking\n\n**Proven: the scenario fails on base `c76ba848ab` and passes on head `1d2d92ec02`.**\n\n| | Base `c76ba848ab` | Head `1d2d92ec02` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toBeVisible failed
locator: getByText(\"Verify encoded repository link\").first()
expected: visible
observed: no node (match count 0) | ✅ passed |\n| saved encoded pull request | ![Base c76ba848ab: saved encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5475a1b4cf339bf1/001-saved-encoded-pull-request.png) | ![Head 1d2d92ec02: saved encoded pull request](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8df39a94ee02868b/001-saved-encoded-pull-request.png) |\n| failure | ![Base c76ba848ab: failure](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bdfe5c3568aa99b5/002-failure.png) | |\n", "base": { "sha": "c76ba848ab5d83e1babfd1db731bd5ce92ff4312", "status": "failed", "title": "An encoded Azure link saved on base recovers without relinking", "message": "ASSERTION_FAILED: expect.toBeVisible failed\nlocator: getByText(\"Verify encoded repository link\").first()\nexpected: visible\nobserved: no node (match count 0)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "failed" }, { "step": "app.screenshot saved-encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] }, "head": { "sha": "1d2d92ec02db12a421b7d390c6806213f0810584", "status": "passed", "title": "An encoded Azure link saved on base recovers without relinking", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /b9045d94-271e-4abc-b461-93c1734c9fcc/mcp:b4b670ca-f10c-46bc-b58c-de5ed32cc2dd", "status": "passed" }, { "step": "locator.waitFor getByRole(\"textbox\", name: \"Message Encoded repository link\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+k", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search commands, projects, and threads...\")", "status": "passed" }, { "step": "locator.tap getByText(\"Show linked pull requests\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\", name: \"Command palette\") → hidden", "status": "passed" }, { "step": "locator.tap getByRole(\"region\", name: \"Workspace panel: Pull requests\") >> getByRole(\"link\", name: /323/)", "status": "passed" }, { "step": "expect.toBeVisible getByText(\"Verify encoded repository link\").first()", "status": "passed" }, { "step": "locator.waitFor getByText(\"Encoding proof: this pull request should load for either spelling of the repository path.\") → visible", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"button\", name: /^Encoded repository link, Sample/) >> getByRole(\"link\", name: /Open: Verify encoded repository link/)", "status": "passed" }, { "step": "app.screenshot saved-encoded-pull-request", "status": "passed" } ], "captures": [ [local path or pairing credential redacted] ], "videos": [ [local path or pairing credential redacted] ] } } prove-upgrade.log $ node scripts/prove-scenario.ts scripts/scenarios/azure-saved-encoded-repository.e2e.ts --base c76ba848ab5d83e1babfd1db731bd5ce92ff4312 --head 1d2d92ec02db12a421b7d390c6806213f0810584 --upload-command 'ghdrop upload' ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 40m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. [local path or pairing credential redacted] Virtual store is at: node_modules/.pnpm Progress: resolved 610, reused 610, downloaded 0, added 595 Progress: resolved 1215, reused 1215, downloaded 0, added 1200 Progress: resolved 1733, reused 1733, downloaded 0, added 1718 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 5.5s using pnpm v12.14.0 [local path or pairing credential redacted] run 01a1dc00-bd42-71e9-987f-fdfa9b486bf2 · targets: web, ios ✓ target "web" command at http://127.0.0.1:42225/.well-known/t3/environment ready 6.17s