Skip to content

test(updater): join the installer-reinstall floor across release and client #16682

test(updater): join the installer-reinstall floor across release and client

test(updater): join the installer-reinstall floor across release and client #16682

Triggered via pull request July 28, 2026 14:04
Status Failure
Total duration 33m 18s
Artifacts

ci.yml

on: pull_request
Resolve runner profiles
18s
Resolve runner profiles
Detect validation scopes
15s
Detect validation scopes
Static gate
13s
Static gate
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 52s
Preflight
Workspace unit tests
1m 6s
Workspace unit tests
Windows tools-pack payload tests
Windows tools-pack payload tests
Web workspace tests
Web workspace tests
E2E Vitest
E2E Vitest
Validate workspace
5s
Validate workspace
Runtime summary
4s
Runtime summary
Fit to window
Zoom out
Zoom in

Annotations

21 errors and 2 notices
[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
6) [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-tab-persistence: Open file tabs survive refresh with the correct active tab: e2e/ui/app-design-files.test.ts#L919
5) [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
5) [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-upload: Design Files panel uploads an image and opens it in the workspace: e2e/ui/app-design-files.test.ts#L450
4) [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
[chromium] β€Ί ui/amr-onboarding.test.ts:584:1 β€Ί [P0] @critical onboarding BYOK path can fetch models: e2e/ui/amr-onboarding.test.ts#L619
3) [chromium] β€Ί ui/amr-onboarding.test.ts:584:1 β€Ί [P0] @critical onboarding BYOK path can fetch models, test the provider, and complete setup Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('BYOK') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('BYOK') 617 | 618 | await page.getByRole('button', { name: /Bring your own key/i }).click(); > 619 | await expect(page.getByText('BYOK')).toBeVisible(); | ^ 620 | const byokPanel = page.locator('.onboarding-view__setup-panel').filter({ hasText: /BYOK/ }); 621 | 622 | await fillInlineField(page, 'API key', 'test-api-key'); at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:619:40
[chromium] β€Ί ui/amr-onboarding.test.ts:584:1 β€Ί [P0] @critical onboarding BYOK path can fetch models: e2e/ui/amr-onboarding.test.ts#L619
3) [chromium] β€Ί ui/amr-onboarding.test.ts:584:1 β€Ί [P0] @critical onboarding BYOK path can fetch models, test the provider, and complete setup Error: expect(locator).toBeVisible() failed Locator: getByText('BYOK') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('BYOK') 617 | 618 | await page.getByRole('button', { name: /Bring your own key/i }).click(); > 619 | await expect(page.getByText('BYOK')).toBeVisible(); | ^ 620 | const byokPanel = page.locator('.onboarding-view__setup-panel').filter({ hasText: /BYOK/ }); 621 | 622 | await fillInlineField(page, 'API key', 'test-api-key'); at /home/runner/work/open-design/open-design/e2e/ui/amr-onboarding.test.ts:619:40
[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
2) [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
2) [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/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
[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
5) [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') 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/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request: e2e/ui/project-management-flows.test.ts#L558
4) [chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 45000ms exceeded. Call log: - waiting for getByTestId('project-ds-picker-trigger') 556 | 557 | const trigger = page.getByTestId('project-ds-picker-trigger'); > 558 | await trigger.click(); | ^ 559 | await page.getByTestId('project-ds-picker-search').fill('editorial'); 560 | const editorialOption = page.getByRole('option', { name: /^Editorial Noir$/ }); 561 | await expect(editorialOption).toBeVisible(); at /home/runner/work/open-design/open-design/e2e/ui/project-management-flows.test.ts:558:17
[chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request: e2e/ui/project-management-flows.test.ts#L0
4) [chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 45000ms exceeded.
[chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request: e2e/ui/project-management-flows.test.ts#L558
4) [chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request Error: locator.click: Test timeout of 45000ms exceeded. Call log: - waiting for getByTestId('project-ds-picker-trigger') 556 | 557 | const trigger = page.getByTestId('project-ds-picker-trigger'); > 558 | await trigger.click(); | ^ 559 | await page.getByTestId('project-ds-picker-search').fill('editorial'); 560 | const editorialOption = page.getByRole('option', { name: /^Editorial Noir$/ }); 561 | await expect(editorialOption).toBeVisible(); at /home/runner/work/open-design/open-design/e2e/ui/project-management-flows.test.ts:558:17
[chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request: e2e/ui/project-management-flows.test.ts#L0
4) [chromium] β€Ί ui/project-management-flows.test.ts:524:1 β€Ί [P0] @critical project detail header design system switch carries into the next run request Test timeout of 45000ms exceeded.
[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
3) [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') 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/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
3) [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') 15 Γ— 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-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends: e2e/ui/app-restoration.test.ts#L1662
2) [chromium] β€Ί ui/app-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[data-testid^="design-file-row-"]').filter({ hasText: 'error-cross-tab.html' }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-testid^="design-file-row-"]').filter({ hasText: 'error-cross-tab.html' }) 1660 | hasText: 'error-cross-tab.html', 1661 | }); > 1662 | await expect(crossFileRow).toBeVisible(); | ^ 1663 | // #5517: one click on the row opens the file β€” no preview card in between. 1664 | await crossFileRow.getByRole('button').first().click(); 1665 | await expect(page.getByRole('tab', { name: /error-cross-tab\.html/i })).toHaveAttribute('aria-selected', 'true'); at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1662:30
[chromium] β€Ί ui/app-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends: e2e/ui/app-restoration.test.ts#L1662
2) [chromium] β€Ί ui/app-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends Error: expect(locator).toBeVisible() failed Locator: locator('[data-testid^="design-file-row-"]').filter({ hasText: 'error-cross-tab.html' }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-testid^="design-file-row-"]').filter({ hasText: 'error-cross-tab.html' }) 1660 | hasText: 'error-cross-tab.html', 1661 | }); > 1662 | await expect(crossFileRow).toBeVisible(); | ^ 1663 | // #5517: one click on the row opens the file β€” no preview card in between. 1664 | await crossFileRow.getByRole('button').first().click(); 1665 | await expect(page.getByRole('tab', { name: /error-cross-tab\.html/i })).toHaveAttribute('aria-selected', 'true'); at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1662:30
[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
Validate workspace
Process completed with exit code 1.
🎭 Playwright Run Summary
7 failed [chromium] β€Ί ui/amr-onboarding.test.ts:38:1 β€Ί [P0] @critical onboarding lets AMR Cloud sign in and complete setup after the login poll succeeds [chromium] β€Ί ui/amr-onboarding.test.ts:299:1 β€Ί [P0] @critical onboarding signed-in AMR path finishes setup with the AMR runtime [chromium] β€Ί ui/amr-onboarding.test.ts:584:1 β€Ί [P0] @critical onboarding BYOK path can fetch models, test the provider, and complete setup [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: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 1 flaky [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 15 passed (18.6m)
🎭 Playwright Run Summary
7 failed [chromium] β€Ί ui/app-restoration.test.ts:1590:1 β€Ί [P0] @critical daemon error details persist between failed sends [chromium] β€Ί ui/entry-chrome-flows.test.ts:2147:1 β€Ί [P0] @critical home composer routes free-form prompts through the design router by default [chromium] β€Ί ui/entry-chrome-flows.test.ts:2222:1 β€Ί [P0] @critical clearing the home working directory removes linked dirs from project creation [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/settings-api-protocol.test.ts:227:1 β€Ί [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening [chromium] β€Ί ui/settings-api-protocol.test.ts:956:1 β€Ί [P0] @critical saving Local CLI updates the entry status pill with the selected agent [chromium] β€Ί ui/settings-api-protocol.test.ts:1015:1 β€Ί [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening 1 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 1 skipped 25 passed (20.6m)