test(e2e): harden workspace collaboration coverage #17024
ci.yml
on: pull_request
Resolve runner profiles
11s
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 31s
Workspace unit tests
1m 8s
Windows tools-pack payload tests
0s
Web workspace tests
0s
E2E Vitest
6m 23s
Runtime summary
5s
Annotations
42 errors, 3 warnings, and 5 notices
|
[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#L167
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
Retry #1 βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Error: expect(locator).toBeVisible() failed
Locator: locator('.ws-tab[role="tab"]').filter({ has: locator('.ws-tab-label').filter({ hasText: 'manual-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: 'manual-reference.png' }) }).first()
165 | const manualFileTab = tabBySuffix(page, 'manual-reference.png');
166 | await expect(artifactTab).toBeVisible();
> 167 | await expect(manualFileTab).toBeVisible();
| ^
168 |
169 | await manualFileTab.click();
170 | await expect(manualFileTab).toHaveAttribute('aria-selected', 'true');
at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:167:31
|
|
[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#L189
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(locator).toBeVisible() failed
Locator: locator('.msg.assistant').filter({ hasText: 'workspace-artifact.html' }).first().getByRole('button', { name: 'workspace-artifact.html', exact: true })
Expected: visible
Timeout: 10000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 10000ms
- waiting for locator('.msg.assistant').filter({ hasText: 'workspace-artifact.html' }).first().getByRole('button', { name: 'workspace-artifact.html', exact: true })
187 | exact: true,
188 | });
> 189 | await expect(artifactButton).toBeVisible();
| ^
190 | await artifactButton.click();
191 |
192 | await expect(restoredArtifactTab).toBeVisible();
at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:189:34
|
|
[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' })
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: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#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
Retry #1 βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
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-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
|
|
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:335:1 βΊ [P0] @critical non-AMR model failures promote Open Design AMR and auto-retry after sign-in:
e2e/ui/amr-run-failure-recovery.test.ts#L446
5) [chromium] βΊ ui/amr-run-failure-recovery.test.ts:335:1 βΊ [P0] @critical non-AMR model failures promote Open Design AMR and auto-retry after sign-in
Error: expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
Call Log:
- Timeout 60000ms exceeded while waiting on the predicate
444 |
445 | await expect.poll(() => loginRequested, { timeout: T.medium }).toBe(true);
> 446 | await expect.poll(() => runRequestBodies.some((body) => body.agentId === 'amr'), { timeout: T.long }).toBe(true);
| ^
447 | await expect(page.getByText('AMR promotion retry recovered.').first()).toBeVisible({ timeout: T.long });
448 | });
449 |
at /home/runner/work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:446:105
|
|
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:236:1 βΊ [P0] @critical AMR model catalog invalid-key failures authorize and auto-recover:
e2e/ui/amr-run-failure-recovery.test.ts#L332
4) [chromium] βΊ ui/amr-run-failure-recovery.test.ts:236:1 βΊ [P0] @critical AMR model catalog invalid-key failures authorize and auto-recover
Retry #1 βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Error: expect(locator).toBeVisible() failed
Locator: getByText('AMR model catalog auth retry recovered.').first()
Expected: visible
Timeout: 60000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 60000ms
- waiting for getByText('AMR model catalog auth retry recovered.').first()
330 | await expect.poll(() => loginRequested, { timeout: T.medium }).toBe(true);
331 | await expect(settingsSurface(page)).toHaveCount(0);
> 332 | await expect(page.getByText('AMR model catalog auth retry recovered.').first()).toBeVisible({ timeout: T.long });
| ^
333 | });
334 |
335 | test('[P0] @critical non-AMR model failures promote Open Design AMR and auto-retry after sign-in', async ({ page }) => {
at /home/runner/work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:332:83
|
|
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:236:1 βΊ [P0] @critical AMR model catalog invalid-key failures authorize and auto-recover:
e2e/ui/amr-run-failure-recovery.test.ts#L332
4) [chromium] βΊ ui/amr-run-failure-recovery.test.ts:236:1 βΊ [P0] @critical AMR model catalog invalid-key failures authorize and auto-recover
Error: expect(locator).toBeVisible() failed
Locator: getByText('AMR model catalog auth retry recovered.').first()
Expected: visible
Timeout: 60000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 60000ms
- waiting for getByText('AMR model catalog auth retry recovered.').first()
330 | await expect.poll(() => loginRequested, { timeout: T.medium }).toBe(true);
331 | await expect(settingsSurface(page)).toHaveCount(0);
> 332 | await expect(page.getByText('AMR model catalog auth retry recovered.').first()).toBeVisible({ timeout: T.long });
| ^
333 | });
334 |
335 | test('[P0] @critical non-AMR model failures promote Open Design AMR and auto-retry after sign-in', async ({ page }) => {
at /home/runner/work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:332:83
|
|
[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')
23 Γ 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: 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
|
|
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')
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
|
|
[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')
22 Γ 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')
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/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-2TwbIt/gh-stub.mjs api repos/nexu-io/open-design/compare/1111111111111111111111111111111111111111...2222222222222222222222222222222222222222
|
|
π Playwright Run Summary
3 skipped
17 passed (3.1m)
|
|
π Playwright Run Summary
18 passed (4.2m)
|
|
π Playwright Run Summary
7 failed
[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: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
1 flaky
[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
17 passed (19.5m)
|
|
π 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
25 passed (30.6m)
|
|
π Playwright Run Summary
8 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:113:1 βΊ [P0] @critical AMR insufficient-balance failures surface Top up AMR and recover after manual Retry
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:179:1 βΊ [P0] @critical AMR auth failures offer inline Authorize & retry sign-in and auto-recover
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:236:1 βΊ [P0] @critical AMR model catalog invalid-key failures authorize and auto-recover
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:335:1 βΊ [P0] @critical non-AMR model failures promote Open Design AMR and auto-retry after sign-in
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:450:1 βΊ [P0] @critical Settings reopens AMR with the configured profile, account badge, and model catalog
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:609:1 βΊ [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes
[chromium] βΊ ui/amr-run-failure-recovery.test.ts:689:1 βΊ [P0] after an AMR failure the user can switch to Codex and complete a fresh run
14 passed (32.8m)
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
handoff-report-visual-pr
|
437 Bytes |
sha256:3ba2d4b6c710a5b23f5d4231cd196c8471b2172f8afb52275aeeba336b6f1292
|
|
|
ui-p0-ci-30626497947-entry-settings
|
114 MB |
sha256:4c4754b4db172487c9d9df1866251baadbe4c4a370d5f19b8abffaddc81898c8
|
|
|
ui-p0-ci-30626497947-project-runtime
|
107 MB |
sha256:abf988e278a206a57de3da748386af7f3676ba5ae057cf5fc03cd192c33aadeb
|
|
|
ui-p0-ci-30626497947-project-workspace
|
73.3 MB |
sha256:315df7ad21a2f68c0f605e5c4accd1de8a7b833c5bf4bc6de9c0899b5da3931d
|
|
|
ui-p0-ci-30626497947-workspace-restoration
|
80.9 MB |
sha256:027249b1cca45d17f25ce04d46cd451b26b2b1b8cde7f02fe2c938cd60ac8c68
|
|
|
visual-pr-capture-6312-30626497947-entry-navigation
|
4.34 MB |
sha256:d95111437bd1fc3daa5ce40a903ac3f9b1075debe6ab8f33946ba4dddf965372
|
|
|
visual-pr-capture-6312-30626497947-settings-workspace
|
3.14 MB |
sha256:25168ca7d7bdc6e9d529ffc60e9a93763263852a0a46a01cbcd1f73763d2d302
|
|