$ node scripts/prove-scenario.ts scripts/scenarios/usage-token-rounding.e2e.ts --base 39ab6a2d2ff5337c60f545c80262714c46510bad --head 6c8576aa6218fe4075805b0a4b87eb2180ed8e23 ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 20m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: Virtual store is at: node_modules/.pnpm Progress: resolved 860, reused 860, downloaded 0, added 845 Progress: resolved 1440, reused 1440, downloaded 0, added 1429 Progress: resolved 1772, reused 1772, downloaded 0, added 1769 Packages: +1779 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1779, reused 1775, downloaded 0, added 1779, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 4.7s using pnpm v12.14.0 RUN e2e v0.23.0 /scripts run 01a1d1dc-f91e-7c95-805f-2837acb7ed05 · targets: web, ios ✓ target "web" command at http://127.0.0.1:39441/.well-known/t3/environment ready 12.62s ✓ target "ios" command at http://127.0.0.1:8190/status ready 10.33s × |web| scenarios/usage-token-rounding.e2e.ts > Usage promotes rounded token counts to millions 45.25s → expect.toBeVisible failed ❯ |web| scenarios/usage-token-rounding.e2e.ts (1 test | 1 failed) 45.25s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/usage-token-rounding.e2e.ts > Usage promotes rounded token counts to millions ASSERTION_FAILED: expect.toBeVisible failed locator: getByRole("row").filter({ hasText: "claude" }) >> getByText("1M") expected: visible observed: no node (match count 0) ❯ scenarios/usage-token-rounding.e2e.ts:12:3 10| await screen.getByText("claude", { exact: true }).first().waitFor({… 11| await app.screenshot("usage-tokens"); 12| await expect(screen.getByRole("row").filter({ hasText: "claude" }).… | ^ 13| await expect(screen.getByText("1000K", { exact: true })).toHaveCoun… 14| }); ❯ at http://127.0.0.1:39441/usage ❯ trace .e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/trace.md ❯ video .e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 22:24:43 Duration 69.98s (1m 10s, startup 22.95s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/usage-token-rounding.e2e.ts:12 > Usage promotes rounded token counts to millions ASSERTION_FAILED: expect.toBeVisible failed trace .e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 22m ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: Virtual store is at: node_modules/.pnpm Progress: resolved 586, reused 586, downloaded 0, added 571 Progress: resolved 1187, reused 1187, downloaded 0, added 1172 Progress: resolved 1678, reused 1678, downloaded 0, added 1664 Progress: resolved 1751, reused 1750, downloaded 0, added 1739 Progress: resolved 1774, reused 1774, downloaded 0, added 1767 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 7.5s using pnpm v12.14.0 RUN e2e v0.23.0 /scripts run 01a1d1de-67cc-7ce8-8b58-b0fe17448167 · targets: web, ios ✓ target "web" command at http://127.0.0.1:39617/.well-known/t3/environment ready 9.85s ✓ target "ios" command at http://127.0.0.1:8190/status ready 11.35s ✓ |web| scenarios/usage-token-rounding.e2e.ts > Usage promotes rounded token counts to millions 21.31s ✓ |web| scenarios/usage-token-rounding.e2e.ts (1 test) 21.31s Test Files 1 passed (1) Tests 1 passed (1) Start at 22:26:17 Duration 43.87s (startup 21.21s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png Markdown .e2e/prove/head/summary.md { "scenario": "Usage promotes rounded token counts to millions", "failsOnBase": true, "passesOnHead": true, "baseSha": "39ab6a2d2ff5337c60f545c80262714c46510bad", "headSha": "6c8576aa6218fe4075805b0a4b87eb2180ed8e23", "verdict": "Proven: the scenario fails on base `39ab6a2d2f` and passes on head `6c8576aa62`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByText(\"usage-demo\").first() → visible", "status": "passed" }, { "step": "app.open /usage", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Tokens\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"claude\").first() → visible", "status": "passed" }, { "step": "app.screenshot usage-tokens", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")", "status": "failed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByText(\"usage-demo\").first() → visible", "status": "passed" }, { "step": "app.open /usage", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Tokens\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"claude\").first() → visible", "status": "passed" }, { "step": "app.screenshot usage-tokens", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")", "status": "passed" }, { "step": "expect.toHaveCount getByText(\"1000K\")", "status": "passed" } ] }, "captures": [ "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png", "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/002-failure.png", "/scripts/.e2e/prove/head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png" ], "videos": [ "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/video/video.webm", "/scripts/.e2e/prove/head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/video/video.webm" ], "markdown": "### Scenario: Usage promotes rounded token counts to millions\n\n**Proven: the scenario fails on base `39ab6a2d2f` and passes on head `6c8576aa62`.**\n\n| | Base `39ab6a2d2f` | Head `6c8576aa62` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expect.toBeVisible failed
locator: getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")
expected: visible
observed: no node (match count 0) | ✅ passed |\n| usage tokens | ![Base 39ab6a2d2f: usage tokens](base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png) | ![Head 6c8576aa62: usage tokens](head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png) |\n| failure | ![Base 39ab6a2d2f: failure](base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/002-failure.png) | |\n", "base": { "sha": "39ab6a2d2ff5337c60f545c80262714c46510bad", "status": "failed", "title": "Usage promotes rounded token counts to millions", "message": "ASSERTION_FAILED: expect.toBeVisible failed\nlocator: getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")\nexpected: visible\nobserved: no node (match count 0)", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByText(\"usage-demo\").first() → visible", "status": "passed" }, { "step": "app.open /usage", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Tokens\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"claude\").first() → visible", "status": "passed" }, { "step": "app.screenshot usage-tokens", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")", "status": "failed" } ], "captures": [ "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png", "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/002-failure.png" ], "videos": [ "/scripts/.e2e/prove/base/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/video/video.webm" ] }, "head": { "sha": "6c8576aa6218fe4075805b0a4b87eb2180ed8e23", "status": "passed", "title": "Usage promotes rounded token counts to millions", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "locator.waitFor getByText(\"usage-demo\").first() → visible", "status": "passed" }, { "step": "app.open /usage", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Tokens\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"claude\").first() → visible", "status": "passed" }, { "step": "app.screenshot usage-tokens", "status": "passed" }, { "step": "expect.toBeVisible getByRole(\"row\").filter({ hasText: \"claude\" }) >> getByText(\"1M\")", "status": "passed" }, { "step": "expect.toHaveCount getByText(\"1000K\")", "status": "passed" } ], "captures": [ "/scripts/.e2e/prove/head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/screenshots/001-usage-tokens.png" ], "videos": [ "/scripts/.e2e/prove/head/results/usage-token-rounding-usage-promotes-rounded-token-d2fae71167db0b83/attempt-1/video/video.webm" ] } }