Skip to content

fix(collab): align unbound project mutation identity #16843

fix(collab): align unbound project mutation identity

fix(collab): align unbound project mutation identity #16843

Triggered via pull request July 29, 2026 14:00
Status Cancelled
Total duration 18m 11s
Artifacts 6

ci.yml

on: pull_request
Resolve runner profiles
14s
Resolve runner profiles
Detect validation scopes
15s
Detect validation scopes
Static gate
15s
Static gate
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 30s
Preflight
Workspace unit tests
1m 42s
Workspace unit tests
Windows tools-pack payload tests
0s
Windows tools-pack payload tests
Web workspace tests
8m 16s
Web workspace tests
E2E Vitest
4m 27s
E2E Vitest
Validate workspace
2s
Validate workspace
Runtime summary
5s
Runtime summary
Fit to window
Zoom out
Zoom in

Annotations

33 errors, 3 warnings, and 2 notices
UI P0 (workspace-restoration)
Canceling since a higher priority waiting request for ci-6231 exists
UI P0 (workspace-restoration)
The operation was canceled.
UI P0 (project-runtime)
Canceling since a higher priority waiting request for ci-6231 exists
UI P0 (project-runtime)
The operation was canceled.
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:179:1 β€Ί [P0] @critical AMR auth failures offer inline Authorize & retry sign-in and auto-recover: e2e/lib/playwright/amr.ts#L237
3) [chromium] β€Ί ui/amr-run-failure-recovery.test.ts:179:1 β€Ί [P0] @critical AMR auth failures offer inline Authorize & retry sign-in and auto-recover 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:222:3
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:179:1 β€Ί [P0] @critical AMR auth failures offer inline Authorize & retry sign-in and auto-recover: e2e/lib/playwright/amr.ts#L237
3) [chromium] β€Ί ui/amr-run-failure-recovery.test.ts:179:1 β€Ί [P0] @critical AMR auth failures offer inline Authorize & retry sign-in and auto-recover 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:222:3
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:113: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:113: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:149:3
[chromium] β€Ί ui/amr-run-failure-recovery.test.ts:113: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:113: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:149: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: expect.toHaveURL: 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
UI P0 (entry-settings)
Canceling since a higher priority waiting request for ci-6231 exists
UI P0 (entry-settings)
The operation was canceled.
[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') 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/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
UI P0 (project-workspace)
Canceling since a higher priority waiting request for ci-6231 exists
[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
UI P0 (project-workspace)
The operation was canceled.
[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/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/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/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/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') 19 Γ— 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/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/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/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#L0
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: Command failed: pnpm tools-dev start web --namespace playwright-5269-w4 --tools-dev-root /home/runner/work/open-design/open-design/.tmp/e2e/playwright-5269-w4/scratch/tools-dev --daemon-port 35611 --web-port 41757 --json web did not expose status in time web log tail (/home/runner/work/open-design/open-design/.tmp/e2e/playwright-5269-w4/scratch/tools-dev/playwright-5269-w4/logs/web/latest.log): [tools-dev] launching web at 2026-07-29T14:10:12.763Z [tools-dev] proxying web API requests to daemon port 35611 Attention: Next.js now collects completely anonymous telemetry regarding usage. This information is used to shape Next.js' roadmap and prioritize features. You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL: https://nextjs.org/telemetry
[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
[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#L495
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: /trash-me\.png/i }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByRole('tab', { name: /trash-me\.png/i }) 493 | }); 494 | > 495 | await expect(page.getByRole('tab', { name: /trash-me\.png/i })).toBeVisible(); | ^ 496 | await openAllProjectFiles(page); 497 | 498 | const fileRow = designFileRow(page, 'trash-me.png'); at runDesignFilesDeleteFlow (/home/runner/work/open-design/open-design/e2e/ui/app-design-files.test.ts:495:67) 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
Validate workspace
Process completed with exit code 1.
ci
Canceling since a higher priority waiting request for ci-6231 exists
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-IlopZC/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
18 passed (4.2m)

Artifacts

Produced during runtime
Name Size Digest
handoff-report-visual-pr Expired
437 Bytes
sha256:f577f0d78b6d48b9f1e8c0acdc5526ed581d169a2f2ff82d73a0edcbd63f495f
ui-p0-ci-30458745627-entry-settings Expired
25.5 MB
sha256:9023bf59e6eba7f7b454d62a228ef2f11454edcc9e30e0048b5ecdc8696aa5f7
ui-p0-ci-30458745627-project-runtime Expired
25.1 MB
sha256:00fcae2374c2d0f1aaefb04889f9570aae240fb258398e080c07644d42f53367
ui-p0-ci-30458745627-project-workspace Expired
19.3 MB
sha256:e71d7eebcde5c1a8eadfa8b6878ab6c77d4194a7caa40d00356976d4668294ae
visual-pr-capture-6231-30458745627-entry-navigation Expired
4.34 MB
sha256:67fdbb2abd67445db7b95171cc7f2c11b31dced3c7c517ec2d94e765ec218603
visual-pr-capture-6231-30458745627-settings-workspace Expired
3.13 MB
sha256:07f5390adb1e279746988fe184e05b6f41f507c722cddc243d48d57163f7c457