fix(workspace): preserve scoped projects after main sync #17060
ci.yml
on: pull_request
Resolve runner profiles
11s
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 47s
Workspace unit tests
1m 56s
Windows tools-pack payload tests
2m 23s
Web workspace tests
9m 5s
E2E Vitest
4m 41s
Runtime summary
3s
Annotations
8 errors, 4 warnings, and 7 notices
|
UI P0 (workspace-restoration)
Process completed with exit code 1.
|
|
[chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends:
e2e/ui/app-restoration.test.ts#L1249
1) [chromium] › ui/app-restoration.test.ts:1217: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' })
1247 | hasText: 'error-cross-tab.html',
1248 | });
> 1249 | await expect(crossFileRow).toBeVisible();
| ^
1250 | // #5517: one click on the row opens the file — no preview card in between.
1251 | await crossFileRow.getByRole('button').first().click();
1252 | 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:1249:30
|
|
[chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends:
e2e/ui/app-restoration.test.ts#L1251
1) [chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends
Error: locator.click: Test timeout of 90000ms exceeded.
Call log:
- waiting for locator('[data-testid^="design-file-row-"]').filter({ hasText: 'error-cross-tab.html' }).getByRole('button').first()
1249 | await expect(crossFileRow).toBeVisible();
1250 | // #5517: one click on the row opens the file — no preview card in between.
> 1251 | await crossFileRow.getByRole('button').first().click();
| ^
1252 | await expect(page.getByRole('tab', { name: /error-cross-tab\.html/i })).toHaveAttribute('aria-selected', 'true');
1253 | await expect(artifactPreviewFrame(page).getByRole('heading', { name: 'Error cross tab' })).toBeVisible();
1254 |
at /home/runner/work/open-design/open-design/e2e/ui/app-restoration.test.ts:1251:50
|
|
[chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends:
e2e/ui/app-restoration.test.ts#L0
1) [chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends
Test timeout of 90000ms exceeded.
|
|
UI P0 (project-workspace)
Process completed with exit code 1.
|
|
[chromium] › ui/app-manual-edit.test.ts:769:1 › [P0] @critical edited HTML file restores selected tab and preview after reload:
e2e/ui/app-manual-edit.test.ts#L795
1) [chromium] › ui/app-manual-edit.test.ts:769:1 › [P0] @critical edited HTML file restores selected tab and preview after reload
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: locator.click: Error: strict mode violation: getByTestId('manual-edit-mode-toggle') resolved to 2 elements:
1) <button title="Edit" type="button" aria-label="Edit" data-tooltip="Edit" aria-pressed="false" data-tooltip-placement="bottom" data-testid="manual-edit-mode-toggle" class="viewer-action viewer-action-icon od-tooltip">…</button> aka getByTestId('file-workspace').getByRole('button', { name: 'Edit' })
2) <button title="Edit" type="button" aria-label="Edit" data-tooltip="Edit" aria-pressed="false" data-tooltip-placement="bottom" data-testid="manual-edit-mode-toggle" class="viewer-action viewer-action-icon od-tooltip">…</button> aka getByTestId('manual-edit-mode-toggle').nth(1)
Call log:
- waiting for getByTestId('manual-edit-mode-toggle')
793 | const frame = artifactPreviewFrame(page);
794 | await expect(frame.getByRole('heading', { name: 'Original Hero' })).toBeVisible();
> 795 | await page.getByTestId('manual-edit-mode-toggle').click();
| ^
796 | await selectPreviewElementThroughBridge(page, frame, '[data-od-id="hero-title"]', 'Parameters');
797 | const parameters = inspectorSection(page, 'Parameters');
798 | const fontSizeInput = parameters.locator('.cc-row').filter({ hasText: 'Font size' }).locator('input');
at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:795:53
|
|
[chromium] › ui/app-manual-edit.test.ts:769:1 › [P0] @critical edited HTML file restores selected tab and preview after reload:
e2e/ui/app-manual-edit.test.ts#L795
1) [chromium] › ui/app-manual-edit.test.ts:769:1 › [P0] @critical edited HTML file restores selected tab and preview after reload
Error: locator.click: Error: strict mode violation: getByTestId('manual-edit-mode-toggle') resolved to 2 elements:
1) <button title="Edit" type="button" aria-label="Edit" data-tooltip="Edit" aria-pressed="false" data-tooltip-placement="bottom" data-testid="manual-edit-mode-toggle" class="viewer-action viewer-action-icon od-tooltip">…</button> aka getByTestId('manual-edit-mode-toggle').first()
2) <button title="Edit" type="button" aria-label="Edit" data-tooltip="Edit" aria-pressed="false" data-tooltip-placement="bottom" data-testid="manual-edit-mode-toggle" class="viewer-action viewer-action-icon od-tooltip">…</button> aka getByTestId('file-workspace').getByRole('button', { name: 'Edit' })
Call log:
- waiting for getByTestId('manual-edit-mode-toggle')
793 | const frame = artifactPreviewFrame(page);
794 | await expect(frame.getByRole('heading', { name: 'Original Hero' })).toBeVisible();
> 795 | await page.getByTestId('manual-edit-mode-toggle').click();
| ^
796 | await selectPreviewElementThroughBridge(page, frame, '[data-od-id="hero-title"]', 'Parameters');
797 | const parameters = inspectorSection(page, 'Parameters');
798 | const fontSizeInput = parameters.locator('.cc-row').filter({ hasText: 'Font size' }).locator('input');
at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:795:53
|
|
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-OoQhRZ/gh-stub.mjs api repos/nexu-io/open-design/compare/1111111111111111111111111111111111111111...2222222222222222222222222222222222222222
|
|
Slow Test:
e2e/[chromium] › ui/amr-onboarding.test.ts#L0
e2e/[chromium] › ui/amr-onboarding.test.ts took 5.4m
|
|
🎭 Playwright Run Summary
3 skipped
17 passed (2.7m)
|
|
🎭 Playwright Run Summary
18 passed (4.3m)
|
|
🎭 Playwright Run Summary
4 passed (1.6m)
|
|
🎭 Playwright Run Summary
22 passed (4.5m)
|
|
🎭 Playwright Run Summary
1 skipped
53 passed (8.1m)
|
|
🎭 Playwright Run Summary
1 failed
[chromium] › ui/app-restoration.test.ts:1217:1 › [P0] @critical daemon error details persist between failed sends
28 passed (9.0m)
|
|
🎭 Playwright Run Summary
1 failed
[chromium] › ui/app-manual-edit.test.ts:769:1 › [P0] @critical edited HTML file restores selected tab and preview after reload
33 passed (11.6m)
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
handoff-report-visual-pr
|
438 Bytes |
sha256:c6a75cd739bba685a64060561b795a4beae6d59390e52002b51d9b1cdbe36632
|
|
|
ui-p0-ci-30730869397-entry-settings
|
367 KB |
sha256:bdb4f134fc0a7b410190c3714308995ce3259f62ca5a1fe4625cee24dadf5959
|
|
|
ui-p0-ci-30730869397-project-runtime
|
289 KB |
sha256:ec04fe94980dece16c689eafa8e2fac87ccf15d1f32395608ce7af6c30f70b97
|
|
|
ui-p0-ci-30730869397-project-runtime-domain
|
343 KB |
sha256:0b8e4ba93f40a1f40f409456cb92590daa4571d43ea75d30041cb6e65fb363d5
|
|
|
ui-p0-ci-30730869397-project-workspace
|
10.2 MB |
sha256:cf281b0baac18c80bb34df32e798802a25e26c2019130f13368406212f21eb8f
|
|
|
ui-p0-ci-30730869397-workspace-restoration
|
11.7 MB |
sha256:abed60cde5eeba786f7826733ec27143e58f4eafff586351a2db72321fc9da1c
|
|
|
visual-pr-capture-6320-30730869397-entry-navigation
|
5.5 MB |
sha256:85f033283289205b154e43d4be2fac8c3ba0f0408e61bd395338d3d848c458b3
|
|
|
visual-pr-capture-6320-30730869397-settings-workspace
|
3.17 MB |
sha256:13484787110c3eaa0c7cbb72626a7da1b5d38bee5b8a0aebd654e3c64824defc
|
|