Skip to content

fix(web): scope desktop vibrancy to macOS #16671

fix(web): scope desktop vibrancy to macOS

fix(web): scope desktop vibrancy to macOS #16671

Triggered via pull request July 28, 2026 13:18
Status Failure
Total duration 54m 44s
Artifacts 7

ci.yml

on: pull_request
Resolve runner profiles
11s
Resolve runner profiles
Detect validation scopes
20s
Detect validation scopes
Static gate
19s
Static gate
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 44s
Preflight
Workspace unit tests
1m 32s
Workspace unit tests
Windows tools-pack payload tests
0s
Windows tools-pack payload tests
Web workspace tests
7m 43s
Web workspace tests
E2E Vitest
3m 44s
E2E Vitest
Validate workspace
5s
Validate workspace
Runtime summary
8s
Runtime summary
Fit to window
Zoom out
Zoom in

Annotations

47 errors, 3 warnings, and 5 notices
UI P0 (project-runtime)
Process completed with exit code 1.
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:105:1 β€Ί [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry: e2e/lib/playwright/amr.ts#L237
2) [chromium] β€Ί ui/amr-run-failure-recovery.test.ts:105:1 β€Ί [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeEnabled() failed Locator: getByTestId('chat-send') Expected: enabled Received: disabled Timeout: 10000ms Call log: - Expect "toBeEnabled" with timeout 10000ms - waiting for getByTestId('chat-send') 24 Γ— locator resolved to <button disabled title="Send" type="button" aria-label="Send" data-tooltip="Send" data-testid="chat-send" class="composer-send od-tooltip">…</button> - unexpected value "disabled" at ../lib/playwright/amr.ts:237 235 | await input.click(); 236 | await input.fill(prompt); > 237 | await expect(page.getByTestId('chat-send')).toBeEnabled(); | ^ 238 | await input.press('Enter'); 239 | } 240 | at sendPrompt (/home/runner/work/open-design/open-design/e2e/lib/playwright/amr.ts:237:47) at /home/runner/work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:141:3
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:105:1 β€Ί [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry: e2e/lib/playwright/amr.ts#L237
2) [chromium] β€Ί ui/amr-run-failure-recovery.test.ts:105:1 β€Ί [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry Error: expect(locator).toBeEnabled() failed Locator: getByTestId('chat-send') Expected: enabled Received: disabled Timeout: 10000ms Call log: - Expect "toBeEnabled" with timeout 10000ms - waiting for getByTestId('chat-send') 24 Γ— locator resolved to <button disabled title="Send" type="button" aria-label="Send" data-tooltip="Send" data-testid="chat-send" class="composer-send od-tooltip">…</button> - unexpected value "disabled" at ../lib/playwright/amr.ts:237 235 | await input.click(); 236 | await input.fill(prompt); > 237 | await expect(page.getByTestId('chat-send')).toBeEnabled(); | ^ 238 | await input.press('Enter'); 239 | } 240 | at sendPrompt (/home/runner/work/open-design/open-design/e2e/lib/playwright/amr.ts:237:47) at /home/runner/work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:141:3
[chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out: e2e/lib/playwright/amr.ts#L90
1) [chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out, AMR runs require re-login and Settings keeps AMR selected Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: frame._expect: Target page, context or browser has been closed at ../lib/playwright/amr.ts:90 88 | export async function expectWorkspaceReady(page: Page) { 89 | await waitForLoadingToClear(page); > 90 | await expect(page).toHaveURL(/\/projects\//); | ^ 91 | await expect(page.getByTestId('chat-composer')).toBeVisible(); 92 | await expect(page.getByTestId('chat-composer-input')).toBeVisible(); 93 | } at expectWorkspaceReady (/home/runner/work/open-design/open-design/e2e/lib/playwright/amr.ts:90:22) at gotoProject (/home/runner/work/open-design/open-design/e2e/lib/playwright/amr.ts:264:3) at /home/runner/work/open-design/open-design/e2e/ui/amr-logout-requires-relogin.test.ts:145:3
[chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out: e2e/ui/amr-logout-requires-relogin.test.ts#L0
1) [chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out, AMR runs require re-login and Settings keeps AMR selected Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded.
[chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out: e2e/ui/amr-logout-requires-relogin.test.ts#L131
1) [chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out, AMR runs require re-login and Settings keeps AMR selected Error: expect(locator).toHaveAttribute(expected) failed Locator: locator('.modal-settings').first().getByTestId('settings-agent-card-amr').getByRole('button').first() Expected: "true" Timeout: 10000ms Error: element(s) not found Call log: - Expect "toHaveAttribute" with timeout 10000ms - waiting for locator('.modal-settings').first().getByTestId('settings-agent-card-amr').getByRole('button').first() 129 | }); 130 | const reopenedSettings = await openSettingsDialog(page); > 131 | await expect(amrAgentToggle(reopenedSettings)).toHaveAttribute('aria-pressed', 'true'); | ^ 132 | await expect(reopenedSettings.getByRole('button', { name: /^Authorize$|^Sign in$/i })).toBeVisible(); 133 | await page.keyboard.press('Escape'); 134 | await expect(reopenedSettings).toHaveCount(0); at /home/runner/work/open-design/open-design/e2e/ui/amr-logout-requires-relogin.test.ts:131:50
Playwright visual (settings-workspace)
Process completed with exit code 1.
Playwright visual (settings-workspace)
Process completed with exit code 1.
ui/visual-workspace.test.ts:204:1 β€Ί [P2] captures the topbar BYOK execution switcher surface: e2e/ui/visual-workspace.test.ts#L237
4) ui/visual-workspace.test.ts:204:1 β€Ί [P2] captures the topbar BYOK execution switcher surface ── Error: expect(locator).toContainText(expected) failed Locator: getByTestId('inline-model-switcher-popover').locator('.inline-switcher__hint') Expected pattern: /Settings/i Timeout: 10000ms Error: element(s) not found Call log: - Expect "toContainText" with timeout 10000ms - waiting for getByTestId('inline-model-switcher-popover').locator('.inline-switcher__hint') 235 | await expect(popover.getByTestId('inline-model-switcher-mode-api')).toHaveCount(0); 236 | await expect(popover.getByTestId('inline-model-switcher-api-model')).toHaveCount(0); > 237 | await expect(popover.locator('.inline-switcher__hint')).toContainText(/Settings/i); | ^ 238 | await expect(popover.getByTestId('inline-model-switcher-open-settings')).toBeVisible(); 239 | 240 | await captureVisual(page, 'visual-topbar-byok-switcher'); at /home/runner/work/open-design/open-design/e2e/ui/visual-workspace.test.ts:237:59
ui/visual-settings.test.ts:198:1 β€Ί [P2] captures the settings BYOK model dropdown surface: e2e/ui/visual-settings.test.ts#L213
3) ui/visual-settings.test.ts:198:1 β€Ί [P2] captures the settings BYOK model dropdown surface ───── Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for locator('.modal-settings').first().getByRole('tab', { name: 'BYOK' }) 211 | 212 | const dialog = await prepareVisualSettingsDialog(page); > 213 | await dialog.getByRole('tab', { name: 'BYOK' }).click(); | ^ 214 | await dialog.getByRole('tab', { name: 'OpenAI', exact: true }).click(); 215 | const modelSelect = dialog.getByRole('combobox', { name: 'Model', exact: true }); 216 | await expect(modelSelect).toBeVisible(); at /home/runner/work/open-design/open-design/e2e/ui/visual-settings.test.ts:213:51
ui/visual-settings.test.ts:198:1 β€Ί [P2] captures the settings BYOK model dropdown surface: e2e/ui/visual-settings.test.ts#L0
3) ui/visual-settings.test.ts:198:1 β€Ί [P2] captures the settings BYOK model dropdown surface ───── Test timeout of 120000ms exceeded.
ui/visual-settings.test.ts:175:1 β€Ί [P2] captures the settings BYOK OpenAI surface: e2e/ui/visual-settings.test.ts#L190
2) ui/visual-settings.test.ts:175:1 β€Ί [P2] captures the settings BYOK OpenAI surface ───────────── Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for locator('.modal-settings').first().getByRole('tab', { name: 'BYOK' }) 188 | 189 | const dialog = await prepareVisualSettingsDialog(page); > 190 | await dialog.getByRole('tab', { name: 'BYOK' }).click(); | ^ 191 | await dialog.getByRole('tab', { name: 'OpenAI', exact: true }).click(); 192 | await expect(dialog.getByRole('heading', { name: 'OpenAI API' })).toBeVisible(); 193 | await waitForVisualFonts(page); at /home/runner/work/open-design/open-design/e2e/ui/visual-settings.test.ts:190:51
ui/visual-settings.test.ts:175:1 β€Ί [P2] captures the settings BYOK OpenAI surface: e2e/ui/visual-settings.test.ts#L0
2) ui/visual-settings.test.ts:175:1 β€Ί [P2] captures the settings BYOK OpenAI surface ───────────── Test timeout of 120000ms exceeded.
ui/visual-settings.test.ts:161:1 β€Ί [P2] captures the settings BYOK surface: e2e/ui/visual-settings.test.ts#L167
1) ui/visual-settings.test.ts:161:1 β€Ί [P2] captures the settings BYOK surface ──────────────────── Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for locator('.modal-settings').first().getByRole('tab', { name: 'BYOK' }) 165 | 166 | const dialog = await prepareVisualSettingsDialog(page); > 167 | await dialog.getByRole('tab', { name: 'BYOK' }).click(); | ^ 168 | await expect(dialog.getByRole('tablist', { name: 'API protocol' })).toBeVisible(); 169 | await expect(dialog.getByRole('heading', { name: 'Anthropic API' })).toBeVisible(); 170 | await waitForVisualFonts(page); at /home/runner/work/open-design/open-design/e2e/ui/visual-settings.test.ts:167:51
ui/visual-settings.test.ts:161:1 β€Ί [P2] captures the settings BYOK surface: e2e/ui/visual-settings.test.ts#L0
1) ui/visual-settings.test.ts:161:1 β€Ί [P2] captures the settings BYOK surface ──────────────────── Test timeout of 120000ms exceeded.
[chromium] β€Ί ui/app-restoration.test.ts:1359:1 β€Ί [P0] returning from a file deep-link to the project root keeps the chosen file tab active: e2e/ui/app-restoration.test.ts#L1432
6) [chromium] β€Ί ui/app-restoration.test.ts:1359:1 β€Ί [P0] returning from a file deep-link to the project root keeps the chosen file tab active Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-root-file.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-root-file.png' }) }).first() 1430 | }); 1431 | const uploadedFileTab = tabBySuffix(page, 'conversation-root-file.png'); > 1432 | await expect(uploadedFileTab).toBeVisible(); | ^ 1433 | const uploadedName = await uploadedFileTab.getAttribute('title'); 1434 | expect(uploadedName).toBeTruthy(); 1435 | at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1432:33
[chromium] β€Ί ui/app-restoration.test.ts:1134:1 β€Ί [P0] opening an uploaded file route keeps the older conversation present in history: e2e/ui/app-restoration.test.ts#L1208
5) [chromium] β€Ί ui/app-restoration.test.ts:1134:1 β€Ί [P0] opening an uploaded file route keeps the older conversation present in history Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-surface-reference.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-surface-reference.png' }) }).first() 1206 | }); 1207 | const uploadedFileTab = tabBySuffix(page, 'conversation-surface-reference.png'); > 1208 | await expect(uploadedFileTab).toBeVisible(); | ^ 1209 | const uploadedName = await uploadedFileTab.getAttribute('title'); 1210 | expect(uploadedName).toBeTruthy(); 1211 | at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1208:33
[chromium] β€Ί ui/app-restoration.test.ts:1134:1 β€Ί [P0] opening an uploaded file route keeps the older conversation present in history: e2e/ui/app-restoration.test.ts#L1208
5) [chromium] β€Ί ui/app-restoration.test.ts:1134:1 β€Ί [P0] opening an uploaded file route keeps the older conversation present in history Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-surface-reference.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'conversation-surface-reference.png' }) }).first() 1206 | }); 1207 | const uploadedFileTab = tabBySuffix(page, 'conversation-surface-reference.png'); > 1208 | await expect(uploadedFileTab).toBeVisible(); | ^ 1209 | const uploadedName = await uploadedFileTab.getAttribute('title'); 1210 | expect(uploadedName).toBeTruthy(); 1211 | at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1208:33
[chromium] β€Ί ui/app-restoration.test.ts:945:1 β€Ί [P0] returning from workspace surfaces keeps the older conversation reachable from history: e2e/ui/app-restoration.test.ts#L1018
4) [chromium] β€Ί ui/app-restoration.test.ts:945:1 β€Ί [P0] returning from workspace surfaces keeps the older conversation reachable from history Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'surface-restore.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'surface-restore.png' }) }).first() 1016 | ), 1017 | }); > 1018 | await expect(tabBySuffix(page, 'surface-restore.png')).toBeVisible(); | ^ 1019 | 1020 | await page.getByTestId('conversation-history-trigger').click(); 1021 | const historyList = page.getByTestId('conversation-list'); at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1018:58
[chromium] β€Ί ui/app-restoration.test.ts:945:1 β€Ί [P0] returning from workspace surfaces keeps the older conversation reachable from history: e2e/ui/app-restoration.test.ts#L1018
4) [chromium] β€Ί ui/app-restoration.test.ts:945:1 β€Ί [P0] returning from workspace surfaces keeps the older conversation reachable from history Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'surface-restore.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'surface-restore.png' }) }).first() 1016 | ), 1017 | }); > 1018 | await expect(tabBySuffix(page, 'surface-restore.png')).toBeVisible(); | ^ 1019 | 1020 | await page.getByTestId('conversation-history-trigger').click(); 1021 | const historyList = page.getByTestId('conversation-list'); at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1018:58
[chromium] β€Ί ui/app-restoration.test.ts:309:1 β€Ί [P0] @critical visiting an uploaded design file route restores its tab and file workspace surface: e2e/ui/app-restoration.test.ts#L344
3) [chromium] β€Ί ui/app-restoration.test.ts:309:1 β€Ί [P0] @critical visiting an uploaded design file route restores its tab and file workspace surface Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'deep-linked-reference.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'deep-linked-reference.png' }) }).first() 342 | await expect((await uploadResponse).ok()).toBeTruthy(); 343 | const fileTab = tabBySuffix(page, 'deep-linked-reference.png'); > 344 | await expect(fileTab).toBeVisible(); | ^ 345 | const uploadedName = await fileTab.getAttribute('title'); 346 | expect(uploadedName).toBeTruthy(); 347 | at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:344:25
[chromium] β€Ί ui/app-restoration.test.ts:309:1 β€Ί [P0] @critical visiting an uploaded design file route restores its tab and file workspace surface: e2e/ui/app-restoration.test.ts#L344
3) [chromium] β€Ί ui/app-restoration.test.ts:309:1 β€Ί [P0] @critical visiting an uploaded design file route restores its tab and file workspace surface Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'deep-linked-reference.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'deep-linked-reference.png' }) }).first() 342 | await expect((await uploadResponse).ok()).toBeTruthy(); 343 | const fileTab = tabBySuffix(page, 'deep-linked-reference.png'); > 344 | await expect(fileTab).toBeVisible(); | ^ 345 | const uploadedName = await fileTab.getAttribute('title'); 346 | expect(uploadedName).toBeTruthy(); 347 | at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:344:25
[chromium] β€Ί ui/app-restoration.test.ts:203:1 β€Ί [P0] switching between projects restores each project workspace to its last active file tab: e2e/ui/app-restoration.test.ts#L242
2) [chromium] β€Ί ui/app-restoration.test.ts:203:1 β€Ί [P0] switching between projects restores each project workspace to its last active file tab Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'alpha-primary.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'alpha-primary.png' }) }).first() 240 | }); 241 | await expect((await alphaPrimaryUpload).ok()).toBeTruthy(); > 242 | await expect(tabBySuffix(page, 'alpha-primary.png')).toBeVisible(); | ^ 243 | const alphaSecondaryUpload = page.waitForResponse( 244 | (resp: Response) => resp.url().includes('/upload') && resp.request().method() === 'POST', 245 | { timeout: 5000 }, at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:242:56
[chromium] β€Ί ui/app-restoration.test.ts:203:1 β€Ί [P0] switching between projects restores each project workspace to its last active file tab: e2e/ui/app-restoration.test.ts#L242
2) [chromium] β€Ί ui/app-restoration.test.ts:203:1 β€Ί [P0] switching between projects restores each project workspace to its last active file tab Error: expect(locator).toBeVisible() failed Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'alpha-primary.png' }) }).first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'alpha-primary.png' }) }).first() 240 | }); 241 | await expect((await alphaPrimaryUpload).ok()).toBeTruthy(); > 242 | await expect(tabBySuffix(page, 'alpha-primary.png')).toBeVisible(); | ^ 243 | const alphaSecondaryUpload = page.waitForResponse( 244 | (resp: Response) => resp.url().includes('/upload') && resp.request().method() === 'POST', 245 | { timeout: 5000 }, at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:242:56
[chromium] β€Ί ui/app-restoration.test.ts:84:1 β€Ί [P0] @critical workspace restores the last manually selected file tab after reload instead of jumping back to the generated artifact: e2e/ui/app-restoration.test.ts#L3865
1) [chromium] β€Ί ui/app-restoration.test.ts:84:1 β€Ί [P0] @critical workspace restores the last manually selected file tab after reload instead of jumping back to the generated artifact Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false Call Log: - Timeout 20000ms exceeded while waiting on the predicate 3863 | ); 3864 | }, { timeout: T.medium }) > 3865 | .toBe(true); | ^ 3866 | } 3867 | 3868 | async function expectProjectFilesToIncludeSuffixes( at expectPersistedArtifactMessage (/home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:3865:6) at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:144:9
[chromium] β€Ί ui/app-manual-edit.test.ts:325:1 β€Ί [P0] @critical preview toolbar keeps share: e2e/ui/app-manual-edit.test.ts#L333
5) [chromium] β€Ί ui/app-manual-edit.test.ts:325:1 β€Ί [P0] @critical preview toolbar keeps share, download, comment, and zoom actions reachable Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveCount(expected) failed Locator: getByRole('tablist', { name: 'View mode' }) Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" with timeout 10000ms - waiting for getByRole('tablist', { name: 'View mode' }) 24 Γ— locator resolved to 1 element - unexpected value "1" 331 | 332 | await expect(page.getByTestId('artifact-preview-frame')).toBeVisible(); > 333 | await expect(page.getByRole('tablist', { name: 'View mode' })).toHaveCount(0); | ^ 334 | 335 | await page.getByRole('button', { name: /^Share$/ }).click(); 336 | const shareMenu = page.locator('.share-menu-popover[role="menu"]'); at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:333:66
[chromium] β€Ί ui/app-manual-edit.test.ts:325:1 β€Ί [P0] @critical preview toolbar keeps share: e2e/ui/app-manual-edit.test.ts#L333
5) [chromium] β€Ί ui/app-manual-edit.test.ts:325:1 β€Ί [P0] @critical preview toolbar keeps share, download, comment, and zoom actions reachable Error: expect(locator).toHaveCount(expected) failed Locator: getByRole('tablist', { name: 'View mode' }) Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" with timeout 10000ms - waiting for getByRole('tablist', { name: 'View mode' }) 23 Γ— locator resolved to 1 element - unexpected value "1" 331 | 332 | await expect(page.getByTestId('artifact-preview-frame')).toBeVisible(); > 333 | await expect(page.getByRole('tablist', { name: 'View mode' })).toHaveCount(0); | ^ 334 | 335 | await page.getByRole('button', { name: /^Share$/ }).click(); 336 | const shareMenu = page.locator('.share-menu-popover[role="menu"]'); at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:333:66
[chromium] β€Ί ui/app-manual-edit.test.ts:61:1 β€Ί [P0] manual edit inspector previews and persists page and selected element styles: e2e/ui/app-manual-edit.test.ts#L322
4) [chromium] β€Ί ui/app-manual-edit.test.ts:61:1 β€Ί [P0] manual edit inspector previews and persists page and selected element styles Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toContainText(expected) failed Locator: locator('.manual-edit-modal') Expected substring: "TYPOGRAPHY" Received string: "Hero titleCONTENTTextOriginal HeroParametersText colorBackgroundOpacityβˆ’+FontinheritSpace GroteskInterTimesArialRobotoHelveticaGeorgiamonospaceβ–ΎFont sizeβˆ’+Weight700100200300400500600700800900β–ΎLine heightβˆ’+Letter spacingβˆ’+Radiusβˆ’+Border colorBorder widthβˆ’+Border style–SolidDashedDottedDoubleNoneβ–ΎWidthβˆ’+Heightβˆ’+Paddingβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Marginβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Direction–HorizontalHorizontal reverseVerticalVertical reverseβ–ΎDistributionnormal–StartCenterEndSpace betweenSpace aroundSpace evenlyβ–ΎGapβˆ’+Alignstart–Align leftAlign centerAlign rightβ–ΎLayout controls are available for flex or grid containers.CancelSave" Timeout: 10000ms Call log: - Expect "toContainText" with timeout 10000ms - waiting for locator('.manual-edit-modal') 23 Γ— locator resolved to <section class="manual-edit-modal cc-panel">…</section> - unexpected value "Hero titleCONTENTTextOriginal HeroParametersText colorBackgroundOpacityβˆ’+FontinheritSpace GroteskInterTimesArialRobotoHelveticaGeorgiamonospaceβ–ΎFont sizeβˆ’+Weight700100200300400500600700800900β–ΎLine heightβˆ’+Letter spacingβˆ’+Radiusβˆ’+Border colorBorder widthβˆ’+Border style–SolidDashedDottedDoubleNoneβ–ΎWidthβˆ’+Heightβˆ’+Paddingβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Marginβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Direction–HorizontalHorizontal reverseVerticalVertical reverseβ–ΎDistributionnormal–StartCenterEndSpace betweenSpace aroundSpace evenlyβ–ΎGapβˆ’+Alignstart–Align leftAlign centerAlign rightβ–ΎLayout controls are available for flex or grid containers.CancelSave" 320 | await expect(frame.locator(`${selector}[data-od-edit-selected="true"]`)).toHaveCount(1, { timeout: 2_000 }); 321 | }).toPass({ timeout: 30_000 }); > 322 | await expect(page.locator('.manual-edit-modal')).toContainText(section); | ^ 323 | } 324 | 325 | test('[P0] @critical preview toolbar keeps share, download, comment, and zoom actions reachable', async ({ page }) => { at selectPreviewElementThroughBridge (/home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:322:52) at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:91:3
[chromium] β€Ί ui/app-manual-edit.test.ts:61:1 β€Ί [P0] manual edit inspector previews and persists page and selected element styles: e2e/ui/app-manual-edit.test.ts#L322
4) [chromium] β€Ί ui/app-manual-edit.test.ts:61:1 β€Ί [P0] manual edit inspector previews and persists page and selected element styles Error: expect(locator).toContainText(expected) failed Locator: locator('.manual-edit-modal') Expected substring: "TYPOGRAPHY" Received string: "Hero titleCONTENTTextOriginal HeroParametersText colorBackgroundOpacityβˆ’+FontinheritSpace GroteskInterTimesArialRobotoHelveticaGeorgiamonospaceβ–ΎFont sizeβˆ’+Weight700100200300400500600700800900β–ΎLine heightβˆ’+Letter spacingβˆ’+Radiusβˆ’+Border colorBorder widthβˆ’+Border style–SolidDashedDottedDoubleNoneβ–ΎWidthβˆ’+Heightβˆ’+Paddingβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Marginβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Direction–HorizontalHorizontal reverseVerticalVertical reverseβ–ΎDistributionnormal–StartCenterEndSpace betweenSpace aroundSpace evenlyβ–ΎGapβˆ’+Alignstart–Align leftAlign centerAlign rightβ–ΎLayout controls are available for flex or grid containers.CancelSave" Timeout: 10000ms Call log: - Expect "toContainText" with timeout 10000ms - waiting for locator('.manual-edit-modal') 23 Γ— locator resolved to <section class="manual-edit-modal cc-panel">…</section> - unexpected value "Hero titleCONTENTTextOriginal HeroParametersText colorBackgroundOpacityβˆ’+FontinheritSpace GroteskInterTimesArialRobotoHelveticaGeorgiamonospaceβ–ΎFont sizeβˆ’+Weight700100200300400500600700800900β–ΎLine heightβˆ’+Letter spacingβˆ’+Radiusβˆ’+Border colorBorder widthβˆ’+Border style–SolidDashedDottedDoubleNoneβ–ΎWidthβˆ’+Heightβˆ’+Paddingβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Marginβ–ΎTopβˆ’+Rightβˆ’+Bottomβˆ’+Leftβˆ’+Direction–HorizontalHorizontal reverseVerticalVertical reverseβ–ΎDistributionnormal–StartCenterEndSpace betweenSpace aroundSpace evenlyβ–ΎGapβˆ’+Alignstart–Align leftAlign centerAlign rightβ–ΎLayout controls are available for flex or grid containers.CancelSave" 320 | await expect(frame.locator(`${selector}[data-od-edit-selected="true"]`)).toHaveCount(1, { timeout: 2_000 }); 321 | }).toPass({ timeout: 30_000 }); > 322 | await expect(page.locator('.manual-edit-modal')).toContainText(section); | ^ 323 | } 324 | 325 | test('[P0] @critical preview toolbar keeps share, download, comment, and zoom actions reachable', async ({ page }) => { at selectPreviewElementThroughBridge (/home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:322:52) at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:91:3
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-tab-persistence: Open file tabs survive refresh with the correct active tab: e2e/ui/app-design-files.test.ts#L919
3) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-tab-persistence: Open file tabs survive refresh with the correct active tab Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /second-tab\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /second-tab\.png/i }) 917 | const secondTab = page.getByRole('tab', { name: /second-tab\.png/i }); 918 | await expect(firstTab).toBeVisible(); > 919 | await expect(secondTab).toBeVisible(); | ^ 920 | 921 | await firstTab.click(); 922 | await expect(firstTab).toHaveAttribute('aria-selected', 'true'); at runDesignFilesTabPersistenceFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:919:27) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:100:7
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-tab-persistence: Open file tabs survive refresh with the correct active tab: e2e/ui/app-design-files.test.ts#L909
3) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-tab-persistence: Open file tabs survive refresh with the correct active tab Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /first-tab\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /first-tab\.png/i }) 907 | buffer: pngBytes, 908 | }); > 909 | await expect(page.getByRole('tab', { name: /first-tab\.png/i })).toBeVisible(); | ^ 910 | 911 | await page.getByTestId('design-files-upload-input').setInputFiles({ 912 | name: 'second-tab.png', at runDesignFilesTabPersistenceFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:909:68) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:100:7
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-delete: Design Files panel deletes an uploaded file and clears its tab: e2e/ui/app-design-files.test.ts#L487
2) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-delete: Design Files panel deletes an uploaded file and clears its tab Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /keep-me\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /keep-me\.png/i }) 485 | buffer: pngBytes, 486 | }); > 487 | await expect(page.getByRole('tab', { name: /keep-me\.png/i })).toBeVisible(); | ^ 488 | 489 | await page.getByTestId('design-files-upload-input').setInputFiles({ 490 | name: 'trash-me.png', at runDesignFilesDeleteFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:487:66) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:96:7
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-delete: Design Files panel deletes an uploaded file and clears its tab: e2e/ui/app-design-files.test.ts#L487
2) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-delete: Design Files panel deletes an uploaded file and clears its tab Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /keep-me\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /keep-me\.png/i }) 485 | buffer: pngBytes, 486 | }); > 487 | await expect(page.getByRole('tab', { name: /keep-me\.png/i })).toBeVisible(); | ^ 488 | 489 | await page.getByTestId('design-files-upload-input').setInputFiles({ 490 | name: 'trash-me.png', at runDesignFilesDeleteFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:487:66) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:96:7
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-upload: Design Files panel uploads an image and opens it in the workspace: e2e/ui/app-design-files.test.ts#L450
1) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-upload: Design Files panel uploads an image and opens it in the workspace Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /moodboard\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /moodboard\.png/i }) 448 | }); 449 | > 450 | await expect(page.getByRole('tab', { name: /moodboard\.png/i })).toBeVisible(); | ^ 451 | await openAllProjectFiles(page); 452 | // #5517 deleted the preview pane that used to spell out kind / size / 453 | // download for the picked file. The panel's category tab bar is what states at runDesignFilesUploadFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:450:68) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:92:7
[chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-upload: Design Files panel uploads an image and opens it in the workspace: e2e/ui/app-design-files.test.ts#L450
1) [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-upload: Design Files panel uploads an image and opens it in the workspace Error: expect(locator).toBeVisible() failed Locator: getByRole('tab', { name: /moodboard\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /moodboard\.png/i }) 448 | }); 449 | > 450 | await expect(page.getByRole('tab', { name: /moodboard\.png/i })).toBeVisible(); | ^ 451 | await openAllProjectFiles(page); 452 | // #5517 deleted the preview pane that used to spell out kind / size / 453 | // download for the picked file. The panel's category tab bar is what states at runDesignFilesUploadFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:450:68) at /home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:92:7
UI P0 (entry-settings)
The job has exceeded the maximum execution time of 45m0s
[chromium] β€Ί ui/amr-onboarding.test.ts:299:1 β€Ί [P0] @critical onboarding signed-in AMR path finishes setup with the AMR runtime: e2e/ui/amr-onboarding.test.ts#L1123
5) [chromium] β€Ί ui/amr-onboarding.test.ts:299:1 β€Ί [P0] @critical onboarding signed-in AMR path finishes setup with the AMR runtime Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:314:3
[chromium] β€Ί ui/amr-onboarding.test.ts:299:1 β€Ί [P0] @critical onboarding signed-in AMR path finishes setup with the AMR runtime: e2e/ui/amr-onboarding.test.ts#L1123
5) [chromium] β€Ί ui/amr-onboarding.test.ts:299:1 β€Ί [P0] @critical onboarding signed-in AMR path finishes setup with the AMR runtime Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:314:3
[chromium] β€Ί ui/entry-chrome-flows.test.ts:2222:1 β€Ί [P0] @critical clearing the home working directory removes linked dirs from project creation: e2e/ui/entry-chrome-flows.test.ts#L2252
4) [chromium] β€Ί ui/entry-chrome-flows.test.ts:2222:1 β€Ί [P0] @critical clearing the home working directory removes linked dirs from project creation Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toContainText(expected) failed Locator: getByTestId('working-dir-trigger') Expected substring: "Select working directory" Received string: "Working directory" Timeout: 10000ms Call log: - Expect "toContainText" with timeout 10000ms - waiting for getByTestId('working-dir-trigger') 21 Γ— locator resolved to <button type="button" aria-expanded="false" data-testid="working-dir-trigger" class="WorkingDirPicker_trigger__9ua3U" title="Let the agent read this local folder (not imported into Design Files)">…</button> - unexpected value "Working directory" 2250 | await page.getByTestId('working-dir-trigger').click(); 2251 | await page.getByTestId('working-dir-clear').click(); > 2252 | await expect(page.getByTestId('working-dir-trigger')).toContainText('Select working directory'); | ^ 2253 | 2254 | await page.getByTestId('home-hero-input').fill('Create a premium dashboard without local folder context.'); 2255 | at /home/runner/work/open-design/open-design/e2e/ui/entry-chrome-flows.test.ts:2252:57
[chromium] β€Ί ui/entry-chrome-flows.test.ts:2222:1 β€Ί [P0] @critical clearing the home working directory removes linked dirs from project creation: e2e/ui/entry-chrome-flows.test.ts#L2252
4) [chromium] β€Ί ui/entry-chrome-flows.test.ts:2222:1 β€Ί [P0] @critical clearing the home working directory removes linked dirs from project creation Error: expect(locator).toContainText(expected) failed Locator: getByTestId('working-dir-trigger') Expected substring: "Select working directory" Received string: "Working directory" Timeout: 10000ms Call log: - Expect "toContainText" with timeout 10000ms - waiting for getByTestId('working-dir-trigger') 22 Γ— locator resolved to <button type="button" aria-expanded="false" data-testid="working-dir-trigger" class="WorkingDirPicker_trigger__9ua3U" title="Let the agent read this local folder (not imported into Design Files)">…</button> - unexpected value "Working directory" 2250 | await page.getByTestId('working-dir-trigger').click(); 2251 | await page.getByTestId('working-dir-clear').click(); > 2252 | await expect(page.getByTestId('working-dir-trigger')).toContainText('Select working directory'); | ^ 2253 | 2254 | await page.getByTestId('home-hero-input').fill('Create a premium dashboard without local folder context.'); 2255 | at /home/runner/work/open-design/open-design/e2e/ui/entry-chrome-flows.test.ts:2252:57
[chromium] β€Ί ui/amr-onboarding.test.ts:137:1 β€Ί [P0] onboarding Local CLI path completes setup with the selected agent model: e2e/ui/amr-onboarding.test.ts#L1123
3) [chromium] β€Ί ui/amr-onboarding.test.ts:137:1 β€Ί [P0] onboarding Local CLI path completes setup with the selected agent model Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:159:3
[chromium] β€Ί ui/amr-onboarding.test.ts:137:1 β€Ί [P0] onboarding Local CLI path completes setup with the selected agent model: e2e/ui/amr-onboarding.test.ts#L1123
3) [chromium] β€Ί ui/amr-onboarding.test.ts:137:1 β€Ί [P0] onboarding Local CLI path completes setup with the selected agent model Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:159:3
[chromium] β€Ί ui/entry-chrome-flows.test.ts:2147:1 β€Ί [P0] @critical home composer routes free-form prompts through the design router by default: e2e/ui/entry-chrome-flows.test.ts#L2150
2) [chromium] β€Ί ui/entry-chrome-flows.test.ts:2147:1 β€Ί [P0] @critical home composer routes free-form prompts through the design router by default Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveAttribute(expected) failed Locator: getByTestId('composer-mode-trigger') Expected: "Choose a mode" Received: "Mode: Design" Timeout: 10000ms Call log: - Expect "toHaveAttribute" with timeout 10000ms - waiting for getByTestId('composer-mode-trigger') 21 Γ— locator resolved to <button type="button" title="Design" aria-haspopup="menu" aria-expanded="false" aria-label="Mode: Design" data-testid="composer-mode-trigger" class="composer-mode__trigger is-selected">…</button> - unexpected value "Mode: Design" 2148 | await gotoEntryHome(page); 2149 | > 2150 | await expect(page.getByTestId('composer-mode-trigger')).toHaveAttribute('aria-label', 'Choose a mode'); | ^ 2151 | 2152 | const input = page.getByTestId('home-hero-input'); 2153 | const prompt = at /home/runner/work/open-design/open-design/e2e/ui/entry-chrome-flows.test.ts:2150:59
[chromium] β€Ί ui/entry-chrome-flows.test.ts:2147:1 β€Ί [P0] @critical home composer routes free-form prompts through the design router by default: e2e/ui/entry-chrome-flows.test.ts#L2150
2) [chromium] β€Ί ui/entry-chrome-flows.test.ts:2147:1 β€Ί [P0] @critical home composer routes free-form prompts through the design router by default Error: expect(locator).toHaveAttribute(expected) failed Locator: getByTestId('composer-mode-trigger') Expected: "Choose a mode" Received: "Mode: Design" Timeout: 10000ms Call log: - Expect "toHaveAttribute" with timeout 10000ms - waiting for getByTestId('composer-mode-trigger') 20 Γ— locator resolved to <button type="button" title="Design" aria-haspopup="menu" aria-expanded="false" aria-label="Mode: Design" data-testid="composer-mode-trigger" class="composer-mode__trigger is-selected">…</button> - unexpected value "Mode: Design" 2148 | await gotoEntryHome(page); 2149 | > 2150 | await expect(page.getByTestId('composer-mode-trigger')).toHaveAttribute('aria-label', 'Choose a mode'); | ^ 2151 | 2152 | const input = page.getByTestId('home-hero-input'); 2153 | const prompt = at /home/runner/work/open-design/open-design/e2e/ui/entry-chrome-flows.test.ts:2150:59
[chromium] β€Ί ui/amr-onboarding.test.ts:38:1 β€Ί [P0] @critical onboarding lets AMR Cloud sign in and complete setup after the login poll succeeds: e2e/ui/amr-onboarding.test.ts#L1123
1) [chromium] β€Ί ui/amr-onboarding.test.ts:38:1 β€Ί [P0] @critical onboarding lets AMR Cloud sign in and complete setup after the login poll succeeds Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:65:3
[chromium] β€Ί ui/amr-onboarding.test.ts:38:1 β€Ί [P0] @critical onboarding lets AMR Cloud sign in and complete setup after the login poll succeeds: e2e/ui/amr-onboarding.test.ts#L1123
1) [chromium] β€Ί ui/amr-onboarding.test.ts:38:1 β€Ί [P0] @critical onboarding lets AMR Cloud sign in and complete setup after the login poll succeeds Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /What will you design with your agent today/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('heading', { name: /What will you design with your agent today/i }) 1121 | await expect(page).not.toHaveURL(/\/onboarding$/); 1122 | await dismissPrivacyDialog(page); > 1123 | await expect(page.getByRole('heading', { name: /What will you design with your agent today/i })).toBeVisible(); | ^ 1124 | } 1125 | 1126 | async function expectFinalDesignSystemStep(page: Page) { at expectOnboardingFinished (/home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:1123:100) at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:65:3
Validate workspace
Process completed with exit code 1.
Detect validation scopes
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Vitest
merge_group changed-file resolution failed; falling back to the full plan: Error: merge_group compare result reached GitHub's 300-file ceiling
E2E Vitest
merge_group changed-file resolution failed; falling back to the full plan: Error: Command failed: /opt/hostedtoolcache/node/24.18.0/x64/bin/node /tmp/scopes-test-TLb65b/gh-stub.mjs api --paginate repos/nexu-io/open-design/compare/1111111111111111111111111111111111111111...2222222222222222222222222222222222222222 --jq (.files // [])[] | .filename
🎭 Playwright Run Summary
3 skipped 17 passed (3.1m)
🎭 Playwright Run Summary
2 failed [chromium] β€Ί ui/amr-logout-requires-relogin.test.ts:51:1 β€Ί [P0] after local Sign out, AMR runs require re-login and Settings keeps AMR selected [chromium] β€Ί ui/amr-run-failure-recovery.test.ts:105:1 β€Ί [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry 8 did not run 12 passed (9.4m)
🎭 Playwright Run Summary
4 failed ui/visual-settings.test.ts:161:1 β€Ί [P2] captures the settings BYOK surface ───────────────────── ui/visual-settings.test.ts:175:1 β€Ί [P2] captures the settings BYOK OpenAI surface ────────────── ui/visual-settings.test.ts:198:1 β€Ί [P2] captures the settings BYOK model dropdown surface ────── ui/visual-workspace.test.ts:204:1 β€Ί [P2] captures the topbar BYOK execution switcher surface ─── 14 passed (9.5m)
🎭 Playwright Run Summary
7 failed [chromium] β€Ί ui/app-restoration.test.ts:203:1 β€Ί [P0] switching between projects restores each project workspace to its last active file tab [chromium] β€Ί ui/app-restoration.test.ts:309:1 β€Ί [P0] @critical visiting an uploaded design file route restores its tab and file workspace surface [chromium] β€Ί ui/app-restoration.test.ts:945:1 β€Ί [P0] returning from workspace surfaces keeps the older conversation reachable from history [chromium] β€Ί ui/app-restoration.test.ts:1134:1 β€Ί [P0] opening an uploaded file route keeps the older conversation present in history [chromium] β€Ί ui/app-restoration.test.ts:1359:1 β€Ί [P0] returning from a file deep-link to the project root keeps the chosen file tab active [chromium] β€Ί ui/app-restoration.test.ts:1560:1 β€Ί [P0] reloading a project keeps the Design Files entry reachable when it was the last active workspace surface [chromium] β€Ί ui/app-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends 3 flaky [chromium] β€Ί ui/app-restoration.test.ts:84:1 β€Ί [P0] @critical workspace restores the last manually selected file tab after reload instead of jumping back to the generated artifact [chromium] β€Ί ui/app-restoration.test.ts:1486:1 β€Ί [P0] a later completed run updates the workspace to the newest artifact tab [chromium] β€Ί ui/app-restoration.test.ts:1821:1 β€Ί [P0] sending another prompt while a run is active queues it and starts it after the first run finishes 15 passed (22.1m)
🎭 Playwright Run Summary
8 failed [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-upload: Design Files panel uploads an image and opens it in the workspace [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-delete: Design Files panel deletes an uploaded file and clears its tab [chromium] β€Ί ui/app-design-files.test.ts:84:3 β€Ί [P0] @critical design-files-tab-persistence: Open file tabs survive refresh with the correct active tab [chromium] β€Ί ui/app-manual-edit.test.ts:61:1 β€Ί [P0] manual edit inspector previews and persists page and selected element styles [chromium] β€Ί ui/app-manual-edit.test.ts:325:1 β€Ί [P0] @critical preview toolbar keeps share, download, comment, and zoom actions reachable [chromium] β€Ί ui/app-manual-edit.test.ts:746:1 β€Ί [P0] @critical edited HTML file restores selected tab and preview after reload [chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request [chromium] β€Ί ui/project-management-flows.test.ts:1513:1 β€Ί [P0] clearing the project design system removes designSystemId from the next run request 1 flaky [chromium] β€Ί ui/project-management-flows.test.ts:2304:1 β€Ί [P0] project detail share menu copies the current share link for uploaded html artifacts 23 passed (30.7m)

Artifacts

Produced during runtime
Name Size Digest
handoff-report-visual-pr Expired
437 Bytes
sha256:ccd7c5c5a139fe4198534c2e44fa1641f864dd7b2d300b564ecf1ff9ddee8c8d
ui-p0-ci-30362867705-entry-settings Expired
143 MB
sha256:10205a08e178c913fcec61571b973477acbdcba2f6b9a800a6dd1e034c5335e9
ui-p0-ci-30362867705-project-runtime Expired
47.5 MB
sha256:603dd42d90c912b69922b8de534cc87264210443bb7cbb11fe7f542707e60a38
ui-p0-ci-30362867705-project-workspace Expired
97.7 MB
sha256:b5340eae61564945a1397de1821a9c5bb719a283a11f69e426618f71b67ad087
ui-p0-ci-30362867705-workspace-restoration Expired
147 MB
sha256:e7e3e242f4b3bb7ee3bd49316c1a452246770918d1a1af6d57d55c985bf5eea3
visual-pr-capture-6171-30362867705-entry-navigation Expired
4.31 MB
sha256:bff0dc15bffb8d8e2b210d6c568b7902070bbf4c9f655913c4d430cab336de00
visual-pr-capture-6171-30362867705-settings-workspace Expired
2.35 MB
sha256:c2d4e304cd071b8eb4cde614676759d14e94daba067e3d09045aee3292a351b0