Skip to content

fix: resolve Jest syntax error in setup file #867

fix: resolve Jest syntax error in setup file

fix: resolve Jest syntax error in setup file #867

Triggered via push August 10, 2026 01:08
Status Failure
Total duration 11m 1s
Artifacts 3

ci.yml

on: push
Backend Build & Test
37s
Backend Build & Test
Frontend Build & Test
3m 21s
Frontend Build & Test
Frontend E2E (Playwright)
10m 58s
Frontend E2E (Playwright)
Contracts Build & Test
2m 42s
Contracts Build & Test
Fit to window
Zoom out
Zoom in

Annotations

12 errors, 4 warnings, and 1 notice
Backend Build & Test
Process completed with exit code 1.
Frontend Build & Test
Process completed with exit code 1.
[chromium] › e2e/tests/auth.spec.ts:124:7 › protected-route access › denies a role-gated route to an authenticated user without the required role: frontend/e2e/tests/auth.spec.ts#L129
4) [chromium] › e2e/tests/auth.spec.ts:124:7 › protected-route access › denies a role-gated route to an authenticated user without the required role Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/access denied/i) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText(/access denied/i) 127 | await loginAs(page, '/simulator', user); 128 | > 129 | await expect(page.getByText(/access denied/i)).toBeVisible(); | ^ 130 | await expect(page.getByRole('heading', { name: /Network Simulator/i })).not.toBeVisible(); 131 | }); 132 | }); at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:129:52
[chromium] › e2e/tests/auth.spec.ts:124:7 › protected-route access › denies a role-gated route to an authenticated user without the required role: frontend/e2e/tests/auth.spec.ts#L129
4) [chromium] › e2e/tests/auth.spec.ts:124:7 › protected-route access › denies a role-gated route to an authenticated user without the required role Error: expect(locator).toBeVisible() failed Locator: getByText(/access denied/i) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText(/access denied/i) 127 | await loginAs(page, '/simulator', user); 128 | > 129 | await expect(page.getByText(/access denied/i)).toBeVisible(); | ^ 130 | await expect(page.getByRole('heading', { name: /Network Simulator/i })).not.toBeVisible(); 131 | }); 132 | }); at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:129:52
[chromium] › e2e/tests/auth.spec.ts:114:7 › protected-route access › grants access to a role-gated route for an authenticated: frontend/e2e/tests/auth.spec.ts#L119
3) [chromium] › e2e/tests/auth.spec.ts:114:7 › protected-route access › grants access to a role-gated route for an authenticated, authorized user Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Network Simulator/i }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Network Simulator/i }) 117 | await loginAs(page, '/simulator', user); 118 | > 119 | await expect(page.getByRole('heading', { name: /Network Simulator/i })).toBeVisible(); | ^ 120 | await expect(page.getByText(/access denied/i)).not.toBeVisible(); 121 | await expect(page.getByLabel(/sign out/i)).toBeVisible(); 122 | }); at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:119:77
[chromium] › e2e/tests/auth.spec.ts:114:7 › protected-route access › grants access to a role-gated route for an authenticated: frontend/e2e/tests/auth.spec.ts#L119
3) [chromium] › e2e/tests/auth.spec.ts:114:7 › protected-route access › grants access to a role-gated route for an authenticated, authorized user Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Network Simulator/i }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Network Simulator/i }) 117 | await loginAs(page, '/simulator', user); 118 | > 119 | await expect(page.getByRole('heading', { name: /Network Simulator/i })).toBeVisible(); | ^ 120 | await expect(page.getByText(/access denied/i)).not.toBeVisible(); 121 | await expect(page.getByLabel(/sign out/i)).toBeVisible(); 122 | }); at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:119:77
[chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully: frontend/e2e/tests/auth.spec.ts#L100
2) [chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully, without unlocking the app, when a wallet connection fails Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for getByRole('button', { name: /Albedo/ }) 98 | 99 | const connectButton = page.getByRole('button', { name: /Albedo/ }); > 100 | await connectButton.click(); | ^ 101 | 102 | // The gate stays up — no crash, no silent false "connected" state — and 103 | // the button recovers to a re-clickable state instead of hanging on at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:100:25
[chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully: frontend/e2e/tests/auth.spec.ts#L0
2) [chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully, without unlocking the app, when a wallet connection fails Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 60000ms exceeded.
[chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully: frontend/e2e/tests/auth.spec.ts#L100
2) [chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully, without unlocking the app, when a wallet connection fails Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for getByRole('button', { name: /Albedo/ }) 98 | 99 | const connectButton = page.getByRole('button', { name: /Albedo/ }); > 100 | await connectButton.click(); | ^ 101 | 102 | // The gate stays up — no crash, no silent false "connected" state — and 103 | // the button recovers to a re-clickable state instead of hanging on at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:100:25
[chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully: frontend/e2e/tests/auth.spec.ts#L0
2) [chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully, without unlocking the app, when a wallet connection fails Test timeout of 60000ms exceeded.
[chromium] › e2e/tests/auth.spec.ts:75:7 › wallet authentication journey › connecting the dev mock wallet unlocks the app behind WalletGate: frontend/e2e/tests/auth.spec.ts#L79
1) [chromium] › e2e/tests/auth.spec.ts:75:7 › wallet authentication journey › connecting the dev mock wallet unlocks the app behind WalletGate Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Authentication Required/i }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Authentication Required/i }) 77 | 78 | // Every route but "/" is blocked behind WalletGate until a wallet connects. > 79 | await expect(page.getByRole('heading', { name: /Authentication Required/i })).toBeVisible(); | ^ 80 | 81 | await page.getByRole('button', { name: /Dev Mock Wallet/ }).click(); 82 | at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:79:83
[chromium] › e2e/tests/auth.spec.ts:75:7 › wallet authentication journey › connecting the dev mock wallet unlocks the app behind WalletGate: frontend/e2e/tests/auth.spec.ts#L79
1) [chromium] › e2e/tests/auth.spec.ts:75:7 › wallet authentication journey › connecting the dev mock wallet unlocks the app behind WalletGate Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Authentication Required/i }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Authentication Required/i }) 77 | 78 | // Every route but "/" is blocked behind WalletGate until a wallet connects. > 79 | await expect(page.getByRole('heading', { name: /Authentication Required/i })).toBeVisible(); | ^ 80 | 81 | await page.getByRole('button', { name: /Dev Mock Wallet/ }).click(); 82 | at /home/runner/work/Web3-Student-Lab/Web3-Student-Lab/frontend/e2e/tests/auth.spec.ts:79:83
Backend Build & Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Contracts Build & Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Frontend Build & Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Frontend E2E (Playwright)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, 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
15 failed [chromium] › e2e/tests/auth.spec.ts:75:7 › wallet authentication journey › connecting the dev mock wallet unlocks the app behind WalletGate [chromium] › e2e/tests/auth.spec.ts:96:7 › wallet authentication journey › recovers gracefully, without unlocking the app, when a wallet connection fails [chromium] › e2e/tests/auth.spec.ts:114:7 › protected-route access › grants access to a role-gated route for an authenticated, authorized user [chromium] › e2e/tests/auth.spec.ts:124:7 › protected-route access › denies a role-gated route to an authenticated user without the required role [chromium] › e2e/tests/auth.spec.ts:135:7 › session recovery and logout › recovers safely when the session has expired: clears storage and returns to login [chromium] › e2e/tests/auth.spec.ts:153:7 › session recovery and logout › logs out from an authenticated session and clears local state [chromium] › e2e/tests/navigation.spec.ts:4:7 › critical learning journeys › opens the simulator and playground with mocked realtime transport [chromium] › e2e/tests/offline.spec.ts:13:7 › offline experience › shows an accessible offline banner when connectivity drops, and clears it when restored [chromium] › e2e/tests/offline.spec.ts:38:7 › offline experience › does not repeat the offline notice while the connection stays down [chromium] › e2e/tests/offline.spec.ts:60:7 › offline experience › the offline recovery page stays reachable with no wallet connected, and reflects live connectivity [chromium] › e2e/tests/responsive.spec.ts:76:9 › mobile-first responsive layout › wallet authentication prompt › connect wallet options render without overflow [chromium] › e2e/tests/responsive.spec.ts:112:9 › mobile-first responsive layout › learning dashboard with wallet › renders curriculum dashboard without overflow [chromium] › e2e/tests/responsive.spec.ts:159:9 › mobile-first responsive layout › login page wallet connection › wallet connect card renders without overflow when connected [chromium] › e2e/tests/wallet.spec.ts:4:7 › wallet onboarding › installs mocked Stellar and Ethereum wallet providers [chromium] › e2e/tests/wallet.spec.ts:28:7 › wallet onboarding › restores wallet state into the transaction state chart 6 skipped 5 passed (9.0m)

Artifacts

Produced during runtime
Name Size Digest
playwright-report
13.5 MB
sha256:b45be09f52fc6dfecd8ea1c3dcaaa22f91161ef1a385676fd9ce29e0cdb99b2f
playwright-test-results
16.6 MB
sha256:4c4b327fb22eb6d12a56210cbcf92f2380de0c93f058db02e4b7517090cf69f5
sbom-frontend
152 Bytes
sha256:fb4e9cf3136eb4702312605b4e18c6fe799e647ff62dec3bdbfcaad317817c08