Skip to content

e2e

e2e #54

Triggered via schedule August 28, 2026 05:43
Status Failure
Total duration 12m 7s
Artifacts –

e2e.yml

on: schedule
Playwright E2E journeys
12m 3s
Playwright E2E journeys
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 1 warning, and 2 notices
[chromium] › e2e/funding-gate.spec.ts:93:1 › balance lookup failure blocks an offramp: apps/dashboard/e2e/funding-gate.spec.ts#L101
5) [chromium] › e2e/funding-gate.spec.ts:93:1 › balance lookup failure blocks an offramp ───────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toContainText(expected) failed Locator: getByRole('alert') Expected substring: "Could not verify your USDC balance on Polygon" Received string: "Could not verify your USDC balance on Base.Retry balance check" Timeout: 20000ms Call log: - Expect "toContainText" with timeout 20000ms - waiting for getByRole('alert') 42 × locator resolved to <div role="alert" class="flex items-start gap-2 text-destructive text-sm">…</div> - unexpected value "Could not verify your USDC balance on Base.Retry balance check" 99 | await page.locator("#token-amount").fill("54.054054"); 100 | > 101 | await expect(page.getByRole("alert")).toContainText("Could not verify your USDC balance on Polygon", { | ^ 102 | timeout: 20_000 103 | }); 104 | await expect(page.getByRole("button", { name: /^Send/ })).toBeDisabled(); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:101:41
[chromium] › e2e/funding-gate.spec.ts:93:1 › balance lookup failure blocks an offramp: apps/dashboard/e2e/funding-gate.spec.ts#L101
5) [chromium] › e2e/funding-gate.spec.ts:93:1 › balance lookup failure blocks an offramp ───────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toContainText(expected) failed Locator: getByRole('alert') Expected substring: "Could not verify your USDC balance on Polygon" Received string: "Could not verify your USDC balance on Base.Retry balance check" Timeout: 20000ms Call log: - Expect "toContainText" with timeout 20000ms - waiting for getByRole('alert') 44 × locator resolved to <div role="alert" class="flex items-start gap-2 text-destructive text-sm">…</div> - unexpected value "Could not verify your USDC balance on Base.Retry balance check" 99 | await page.locator("#token-amount").fill("54.054054"); 100 | > 101 | await expect(page.getByRole("alert")).toContainText("Could not verify your USDC balance on Polygon", { | ^ 102 | timeout: 20_000 103 | }); 104 | await expect(page.getByRole("button", { name: /^Send/ })).toBeDisabled(); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:101:41
[chromium] › e2e/funding-gate.spec.ts:74:1 › registration rechecks balance after quote refresh: apps/dashboard/e2e/funding-gate.spec.ts#L84
4) [chromium] › e2e/funding-gate.spec.ts:74:1 › registration rechecks balance after quote refresh Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeEnabled() failed Locator: getByRole('button', { name: /^Send/ }) Expected: enabled Received: disabled Timeout: 20000ms Call log: - Expect "toBeEnabled" with timeout 20000ms - waiting for getByRole('button', { name: /^Send/ }) 43 × locator resolved to <button disabled type="button" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-[color,background-color,border-color,box-shadow,opacity,scale] active:scale-[0.96] motion-reduce:active:scale-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 outline-none aria-in…>…</button> - unexpected value "disabled" 82 | await page.locator("#token-amount").fill("54.054054"); 83 | const sendButton = page.getByRole("button", { name: /^Send/ }); > 84 | await expect(sendButton).toBeEnabled({ timeout: 20_000 }); | ^ 85 | await sendButton.click(); 86 | 87 | await expect(page.getByText("Could not start transfer", { exact: true })).toBeVisible({ timeout: 20_000 }); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:84:28
[chromium] › e2e/funding-gate.spec.ts:74:1 › registration rechecks balance after quote refresh: apps/dashboard/e2e/funding-gate.spec.ts#L84
4) [chromium] › e2e/funding-gate.spec.ts:74:1 › registration rechecks balance after quote refresh Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeEnabled() failed Locator: getByRole('button', { name: /^Send/ }) Expected: enabled Received: disabled Timeout: 20000ms Call log: - Expect "toBeEnabled" with timeout 20000ms - waiting for getByRole('button', { name: /^Send/ }) 44 × locator resolved to <button disabled type="button" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-[color,background-color,border-color,box-shadow,opacity,scale] active:scale-[0.96] motion-reduce:active:scale-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 outline-none aria-in…>…</button> - unexpected value "disabled" 82 | await page.locator("#token-amount").fill("54.054054"); 83 | const sendButton = page.getByRole("button", { name: /^Send/ }); > 84 | await expect(sendButton).toBeEnabled({ timeout: 20_000 }); | ^ 85 | await sendButton.click(); 86 | 87 | await expect(page.getByText("Could not start transfer", { exact: true })).toBeVisible({ timeout: 20_000 }); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:84:28
[chromium] › e2e/funding-gate.spec.ts:49:1 › balance check follows the selected payin network: apps/dashboard/e2e/funding-gate.spec.ts#L62
3) [chromium] › e2e/funding-gate.spec.ts:49:1 › balance check follows the selected payin network, not the wallet chain Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeEnabled() failed Locator: getByRole('button', { name: /^Send/ }) Expected: enabled Received: disabled Timeout: 20000ms Call log: - Expect "toBeEnabled" with timeout 20000ms - waiting for getByRole('button', { name: /^Send/ }) 43 × locator resolved to <button disabled type="button" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-[color,background-color,border-color,box-shadow,opacity,scale] active:scale-[0.96] motion-reduce:active:scale-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 outline-none aria-in…>…</button> - unexpected value "disabled" 60 | await page.locator("#token-amount").fill("54.054054"); 61 | const sendButton = page.getByRole("button", { name: /^Send/ }); > 62 | await expect(sendButton).toBeEnabled({ timeout: 20_000 }); | ^ 63 | 64 | await page.getByRole("combobox").filter({ hasText: "Polygon" }).click(); 65 | await page.getByRole("option", { exact: true, name: "Arbitrum One" }).click(); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:62:28
[chromium] › e2e/funding-gate.spec.ts:49:1 › balance check follows the selected payin network: apps/dashboard/e2e/funding-gate.spec.ts#L62
3) [chromium] › e2e/funding-gate.spec.ts:49:1 › balance check follows the selected payin network, not the wallet chain Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeEnabled() failed Locator: getByRole('button', { name: /^Send/ }) Expected: enabled Received: disabled Timeout: 20000ms Call log: - Expect "toBeEnabled" with timeout 20000ms - waiting for getByRole('button', { name: /^Send/ }) 44 × locator resolved to <button disabled type="button" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-[color,background-color,border-color,box-shadow,opacity,scale] active:scale-[0.96] motion-reduce:active:scale-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 outline-none aria-in…>…</button> - unexpected value "disabled" 60 | await page.locator("#token-amount").fill("54.054054"); 61 | const sendButton = page.getByRole("button", { name: /^Send/ }); > 62 | await expect(sendButton).toBeEnabled({ timeout: 20_000 }); | ^ 63 | 64 | await page.getByRole("combobox").filter({ hasText: "Polygon" }).click(); 65 | await page.getByRole("option", { exact: true, name: "Arbitrum One" }).click(); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:62:28
[chromium] › e2e/funding-gate.spec.ts:35:1 › insufficient selected-network USDC balance blocks an offramp: apps/dashboard/e2e/funding-gate.spec.ts#L43
2) [chromium] › e2e/funding-gate.spec.ts:35:1 › insufficient selected-network USDC balance blocks an offramp Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Available: 50 USDC on Polygon', { exact: true }) Expected: visible Timeout: 20000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 20000ms - waiting for getByText('Available: 50 USDC on Polygon', { exact: true }) 41 | await page.locator("#token-amount").fill("54.054054"); 42 | > 43 | await expect(page.getByText("Available: 50 USDC on Polygon", { exact: true })).toBeVisible({ timeout: 20_000 }); | ^ 44 | await expect(page.getByText(/Insufficient USDC balance.*54\.054 USDC on Polygon/)).toBeVisible(); 45 | await expect(page.getByRole("button", { name: /^Send/ })).toBeDisabled(); 46 | expect(backend.registerRequests).toHaveLength(0); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:43:82
[chromium] › e2e/funding-gate.spec.ts:35:1 › insufficient selected-network USDC balance blocks an offramp: apps/dashboard/e2e/funding-gate.spec.ts#L43
2) [chromium] › e2e/funding-gate.spec.ts:35:1 › insufficient selected-network USDC balance blocks an offramp Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Available: 50 USDC on Polygon', { exact: true }) Expected: visible Timeout: 20000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 20000ms - waiting for getByText('Available: 50 USDC on Polygon', { exact: true }) 41 | await page.locator("#token-amount").fill("54.054054"); 42 | > 43 | await expect(page.getByText("Available: 50 USDC on Polygon", { exact: true })).toBeVisible({ timeout: 20_000 }); | ^ 44 | await expect(page.getByText(/Insufficient USDC balance.*54\.054 USDC on Polygon/)).toBeVisible(); 45 | await expect(page.getByRole("button", { name: /^Send/ })).toBeDisabled(); 46 | expect(backend.registerRequests).toHaveLength(0); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:43:82
[chromium] › e2e/funding-gate.spec.ts:11:1 › funding panel offers connected-wallet submission only: apps/dashboard/e2e/funding-gate.spec.ts#L26
1) [chromium] › e2e/funding-gate.spec.ts:11:1 › funding panel offers connected-wallet submission only Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Available: 1,000 USDC on Polygon', { exact: true }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('Available: 1,000 USDC on Polygon', { exact: true }) 24 | 25 | await expect(page.getByText("Send crypto")).toHaveCount(0); > 26 | await expect(page.getByText("Available: 1,000 USDC on Polygon", { exact: true })).toBeVisible(); | ^ 27 | await expect(page.getByRole("button", { name: /^Send/ })).toBeEnabled(); 28 | await expect(page.getByText(/reach out to/)).toHaveCount(0); 29 | expect(backend.balanceRequests.at(-1)).toMatchObject({ network: "polygon-mainnet" }); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:26:85
[chromium] › e2e/funding-gate.spec.ts:11:1 › funding panel offers connected-wallet submission only: apps/dashboard/e2e/funding-gate.spec.ts#L26
1) [chromium] › e2e/funding-gate.spec.ts:11:1 › funding panel offers connected-wallet submission only Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Available: 1,000 USDC on Polygon', { exact: true }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('Available: 1,000 USDC on Polygon', { exact: true }) 24 | 25 | await expect(page.getByText("Send crypto")).toHaveCount(0); > 26 | await expect(page.getByText("Available: 1,000 USDC on Polygon", { exact: true })).toBeVisible(); | ^ 27 | await expect(page.getByRole("button", { name: /^Send/ })).toBeEnabled(); 28 | await expect(page.getByText(/reach out to/)).toHaveCount(0); 29 | expect(backend.balanceRequests.at(-1)).toMatchObject({ network: "polygon-mainnet" }); at /home/runner/work/vortex/vortex/apps/dashboard/e2e/funding-gate.spec.ts:26:85
Playwright E2E journeys
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v3, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
10 failed [chromium] › e2e/funding-gate.spec.ts:11:1 › funding panel offers connected-wallet submission only [chromium] › e2e/funding-gate.spec.ts:35:1 › insufficient selected-network USDC balance blocks an offramp [chromium] › e2e/funding-gate.spec.ts:49:1 › balance check follows the selected payin network, not the wallet chain [chromium] › e2e/funding-gate.spec.ts:74:1 › registration rechecks balance after quote refresh ─ [chromium] › e2e/funding-gate.spec.ts:93:1 › balance lookup failure blocks an offramp ────────── [chromium] › e2e/funding-gate.spec.ts:109:1 › balance gate checks the selected ERC-20 rather than another held token [chromium] › e2e/funding-gate.spec.ts:127:1 › native POL uses the portfolio native balance ───── [chromium] › e2e/transfer-mxn-journey.spec.ts:40:1 › SELL MXN transfer: quote, register, ephemeral presigning, wallet broadcast, start, tracking [chromium] › e2e/transfer-mxn-journey.spec.ts:127:1 › SELL refreshes a near-expiry quote before registration [chromium] › e2e/transfer-mxn-journey.spec.ts:166:1 › SELL MXN transfer: choosing a different payout account registers against that account 62 passed (9.4m)
🎭 Playwright Run Summary
15 passed (1.6m)