$ cd apps/admin && pnpm build >/dev/null 2>&1 && ZOEN_EVIDENCE_TASK=WEB-213 pnpm exec playwright test tests/e2e/players.spec.ts tests/e2e/approvals.spec.ts --workers=1 --reporter=line # cwd /Users/king/Desktop/Workspace/SRO/zoen # exit 1 Running 30 tests using 1 worker [1/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as owner [2/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as developer [3/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as qa [4/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as gm [5/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as moderator [6/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as support [7/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as marketing [8/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as analyst [9/30] [setup] › tests/e2e/auth.setup.ts:14:3 › sign in as read_only [10/30] [desktop] › tests/e2e/approvals.spec.ts:17:3 › approvals inbox › @approvals a GM request waits for someone else; the owner approves it with a reason 1) [desktop] › tests/e2e/approvals.spec.ts:17:3 › approvals inbox › @approvals a GM request waits for someone else; the owner approves it with a reason Error: expect(locator).toBeVisible() failed Locator: getByText('Your request was approved') Expected: visible Error: strict mode violation: getByText('Your request was approved') resolved to 2 elements: 1)
Your request was approved
aka getByRole('link', { name: 'Your request was approved e2e-muudabsp grant 5 Awakening Seeds to Aedra just now' }) 2)Your request was approved
aka getByRole('link', { name: 'Your request was approved e2e-muu5gl9d grant 5 field reports to Laleh 4 hr. ago' }) Call log: - Expect "toBeVisible" getByText('Your request was approved') with timeout 10000ms - waiting for getByText('Your request was approved') 43 | await gmPage.reload(); 44 | await gmPage.getByRole('button', { name: /Notifications/ }).click(); > 45 | await expect(gmPage.getByText('Your request was approved')).toBeVisible(); | ^ 46 | }); 47 | 48 | test('@approvals inbox is clean on every screen size', async ({ browser }, info) => { at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/approvals.spec.ts:45:65 Error Context: ../../logs/evidence/pw-artifacts/admin/approvals-approvals-inbox--91ccf-r-approves-it-with-a-reason-desktop/error-context.md Error Context: ../../logs/evidence/pw-artifacts/admin/approvals-approvals-inbox--91ccf-r-approves-it-with-a-reason-desktop/error-context.md attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/approvals-approvals-inbox--91ccf-r-approves-it-with-a-reason-desktop/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/approvals-approvals-inbox--91ccf-r-approves-it-with-a-reason-desktop/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [11/30] [desktop] › tests/e2e/approvals.spec.ts:48:3 › approvals inbox › @approvals inbox is clean on every screen size [12/30] [desktop] › tests/e2e/players.spec.ts:8:3 › players (demo) › @players support finds a player, sees masked data and no actions 2) [desktop] › tests/e2e/players.spec.ts:8:3 › players (demo) › @players support finds a player, sees masked data and no actions Error: expect(locator).toHaveCount(expected) failed Locator: getByText('Sign-ins') Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" getByText('Sign-ins') with timeout 10000ms - waiting for getByText('Sign-ins') 24 × locator resolved to 1 element - unexpected value "1" 18 | await expect(page.getByRole('button', { name: 'Reveal' })).toHaveCount(0); 19 | await expect(page.getByRole('group', { name: 'Sanctions' })).toHaveCount(0); > 20 | await expect(page.getByText('Sign-ins')).toHaveCount(0); | ^ 21 | await page.getByRole('link', { name: new RegExp(target.character.name) }).click(); 22 | await expect(page.getByRole('heading', { level: 1, name: target.character.name })).toBeVisible(); 23 | await expect(page.getByText('Main Hand', { exact: false }).first()).toBeVisible(); at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:20:46 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-15186--masked-data-and-no-actions-desktop/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-15186--masked-data-and-no-actions-desktop/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-15186--masked-data-and-no-actions-desktop/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [13/30] [desktop] › tests/e2e/players.spec.ts:27:3 › players (demo) › @players a GM mutes and lifts; a grant waits for approval, then the owner approves and it lands in the bag 3) [desktop] › tests/e2e/players.spec.ts:27:3 › players (demo) › @players a GM mutes and lifts; a grant waits for approval, then the owner approves and it lands in the bag Error: expect(locator).toBeVisible() failed Locator: locator('li').filter({ hasText: 'e2e: spam in General chat' }).first().getByText('lifted') Expected: visible Error: strict mode violation: locator('li').filter({ hasText: 'e2e: spam in General chat' }).first().getByText('lifted') resolved to 2 elements: 1) … aka getByText('lifted', { exact: true }) 2) … aka getByText('Oct 5, 2026, 6:03 AM→ Oct 6,') Call log: - Expect "toBeVisible" locator('li').filter({ hasText: 'e2e: spam in General chat' }).first().getByText('lifted') with timeout 10000ms - waiting for locator('li').filter({ hasText: 'e2e: spam in General chat' }).first().getByText('lifted') 38 | await row.getByRole('button', { name: 'Lift' }).click(); 39 | await confirmAction(gm, { reason: 'e2e: wrong player', role: 'gm' }); > 40 | await expect(row.getByText('lifted')).toBeVisible(); | ^ 41 | 42 | await gm.goto(`/players/characters/${target.character.id}`); 43 | await gm.getByRole('button', { name: 'Request grant…' }).click(); at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:40:43 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-c14cd-ves-and-it-lands-in-the-bag-desktop/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-c14cd-ves-and-it-lands-in-the-bag-desktop/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-c14cd-ves-and-it-lands-in-the-bag-desktop/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [14/30] [desktop] › tests/e2e/players.spec.ts:63:3 › players (demo) › @players the owner reveals an e-mail, bans with confirmation and lifts, renames and resets position 4) [desktop] › tests/e2e/players.spec.ts:63:3 › players (demo) › @players the owner reveals an e-mail, bans with confirmation and lifts, renames and resets position Error: expect(locator).toBeVisible() failed Locator: locator('li').filter({ hasText: 'e2e: speed hack evidence' }).first().getByText('lifted') Expected: visible Error: strict mode violation: locator('li').filter({ hasText: 'e2e: speed hack evidence' }).first().getByText('lifted') resolved to 2 elements: 1) … aka getByText('lifted', { exact: true }) 2) … aka getByText('Oct 5, 2026, 6:03 AM· lifted') Call log: - Expect "toBeVisible" locator('li').filter({ hasText: 'e2e: speed hack evidence' }).first().getByText('lifted') with timeout 10000ms - waiting for locator('li').filter({ hasText: 'e2e: speed hack evidence' }).first().getByText('lifted') 77 | await row.getByRole('button', { name: 'Lift' }).click(); 78 | await confirmAction(page, { reason: 'e2e: wrong account' }); > 79 | await expect(row.getByText('lifted')).toBeVisible(); | ^ 80 | 81 | const fresh = `Etest${Date.now().toString(36).replace(/[^a-z]/g, '').slice(0, 6)}`.replace(/^./, 'E'); 82 | await page.goto(`/players/characters/${target.character.id}`); at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:79:43 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-14b82-renames-and-resets-position-desktop/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-14b82-renames-and-resets-position-desktop/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-14b82-renames-and-resets-position-desktop/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [15/30] [desktop] › tests/e2e/players.spec.ts:96:3 › players (demo) › @players other roles cannot open it [16/30] [desktop] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size 5) [desktop] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "link-in-text-block: Links must be distinguishable without relying on color (1) — .hover\\:underline [The link has insufficient color contrast of 1.05:1 with the surrounding text. (Minimum contrast is 3:1, link text: #8a5a]", + ] at helpers.ts:42 40 | const result = await axe.analyze(); 41 | const bad = result.violations.filter((v) => v.impact === 'serious' || v.impact === 'critical'); > 42 | expect(bad.map((v) => `${v.id}: ${v.help} (${v.nodes.length}) — ${v.nodes.slice(0, 4).map((n) => `${n.target.join(' ')} [${(n.any[0]?.message ?? '').slice(0, 120)}]`).join(' | ')}`)).toEqual([]); | ^ 43 | } 44 | 45 | // Modules still being built (W4): sidebar prefetches of these routes 404 until their pages land. Shrinks to []. at expectNoSeriousA11y (/Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/helpers.ts:42:186) at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:111:7 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-desktop/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-desktop/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-desktop/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [17/30] [tablet] › tests/e2e/approvals.spec.ts:17:3 › approvals inbox › @approvals a GM request waits for someone else; the owner approves it with a reason [18/30] [tablet] › tests/e2e/approvals.spec.ts:48:3 › approvals inbox › @approvals inbox is clean on every screen size [19/30] [tablet] › tests/e2e/players.spec.ts:8:3 › players (demo) › @players support finds a player, sees masked data and no actions [20/30] [tablet] › tests/e2e/players.spec.ts:27:3 › players (demo) › @players a GM mutes and lifts; a grant waits for approval, then the owner approves and it lands in the bag [21/30] [tablet] › tests/e2e/players.spec.ts:63:3 › players (demo) › @players the owner reveals an e-mail, bans with confirmation and lifts, renames and resets position [22/30] [tablet] › tests/e2e/players.spec.ts:96:3 › players (demo) › @players other roles cannot open it [23/30] [tablet] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size 6) [tablet] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "link-in-text-block: Links must be distinguishable without relying on color (1) — .hover\\:underline [The link has insufficient color contrast of 1.05:1 with the surrounding text. (Minimum contrast is 3:1, link text: #8a5a]", + ] at helpers.ts:42 40 | const result = await axe.analyze(); 41 | const bad = result.violations.filter((v) => v.impact === 'serious' || v.impact === 'critical'); > 42 | expect(bad.map((v) => `${v.id}: ${v.help} (${v.nodes.length}) — ${v.nodes.slice(0, 4).map((n) => `${n.target.join(' ')} [${(n.any[0]?.message ?? '').slice(0, 120)}]`).join(' | ')}`)).toEqual([]); | ^ 43 | } 44 | 45 | // Modules still being built (W4): sidebar prefetches of these routes 404 until their pages land. Shrinks to []. at expectNoSeriousA11y (/Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/helpers.ts:42:186) at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:111:7 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-tablet/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-tablet/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-tablet/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── [24/30] [mobile] › tests/e2e/approvals.spec.ts:17:3 › approvals inbox › @approvals a GM request waits for someone else; the owner approves it with a reason [25/30] [mobile] › tests/e2e/approvals.spec.ts:48:3 › approvals inbox › @approvals inbox is clean on every screen size [26/30] [mobile] › tests/e2e/players.spec.ts:8:3 › players (demo) › @players support finds a player, sees masked data and no actions [27/30] [mobile] › tests/e2e/players.spec.ts:27:3 › players (demo) › @players a GM mutes and lifts; a grant waits for approval, then the owner approves and it lands in the bag [28/30] [mobile] › tests/e2e/players.spec.ts:63:3 › players (demo) › @players the owner reveals an e-mail, bans with confirmation and lifts, renames and resets position [29/30] [mobile] › tests/e2e/players.spec.ts:96:3 › players (demo) › @players other roles cannot open it [30/30] [mobile] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size 7) [mobile] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "link-in-text-block: Links must be distinguishable without relying on color (1) — .hover\\:underline [The link has insufficient color contrast of 1.05:1 with the surrounding text. (Minimum contrast is 3:1, link text: #8a5a]", + ] at helpers.ts:42 40 | const result = await axe.analyze(); 41 | const bad = result.violations.filter((v) => v.impact === 'serious' || v.impact === 'critical'); > 42 | expect(bad.map((v) => `${v.id}: ${v.help} (${v.nodes.length}) — ${v.nodes.slice(0, 4).map((n) => `${n.target.join(' ')} [${(n.any[0]?.message ?? '').slice(0, 120)}]`).join(' | ')}`)).toEqual([]); | ^ 43 | } 44 | 45 | // Modules still being built (W4): sidebar prefetches of these routes 404 until their pages land. Shrinks to []. at expectNoSeriousA11y (/Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/helpers.ts:42:186) at /Users/king/Desktop/Workspace/SRO/zoen/apps/admin/tests/e2e/players.spec.ts:111:7 Error Context: ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-mobile/error-context.md attachment #2: trace (application/zip) ───────────────────────────────────────────────────────── ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-mobile/trace.zip Usage: pnpm exec playwright show-trace ../../logs/evidence/pw-artifacts/admin/players-players-demo-playe-aac33--clean-on-every-screen-size-mobile/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 7 failed [desktop] › tests/e2e/approvals.spec.ts:17:3 › approvals inbox › @approvals a GM request waits for someone else; the owner approves it with a reason [desktop] › tests/e2e/players.spec.ts:8:3 › players (demo) › @players support finds a player, sees masked data and no actions [desktop] › tests/e2e/players.spec.ts:27:3 › players (demo) › @players a GM mutes and lifts; a grant waits for approval, then the owner approves and it lands in the bag [desktop] › tests/e2e/players.spec.ts:63:3 › players (demo) › @players the owner reveals an e-mail, bans with confirmation and lifts, renames and resets position [desktop] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size [tablet] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size [mobile] › tests/e2e/players.spec.ts:103:3 › players (demo) › @players pages are clean on every screen size 10 skipped 13 passed (54.6s)