fix(web): remove message center entry points #17111
ci.yml
on: pull_request
Resolve runner profiles
13s
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Preflight
3m 51s
Workspace unit tests
1m 8s
Windows tools-pack payload tests
Web workspace tests
8m 55s
E2E Vitest
5m 57s
Runtime summary
5s
Annotations
13 errors, 3 warnings, and 7 notices
|
Web workspace tests
Process completed with exit code 1.
|
|
tests/components/App.project-create-race.test.tsx > App project creation routing > does not open a project bound to another workspace through a non-hint path:
apps/web/tests/components/App.project-create-race.test.tsx#L1856
AssertionError: expected "vi.fn()" to be called with arguments: [ 'project-bound-a', …(1) ]
Received:
1st vi.fn() call:
@@ -24,8 +24,9 @@
"seatLimit": 5,
"usedSeats": 1,
},
"workspaceId": "ws-b",
"workspaceMemberId": "member-ws-b",
+ "workspaceName": "ws-b",
"workspaceType": "team",
},
]
Number of calls: 1
Ignored nodes: comments, script, style
<html
data-od-app-mounted="1"
data-theme="light"
style="--accent: #353535; --accent-strong: color-mix(in srgb, #353535 82%, var(--text-strong)); --accent-soft: color-mix(in srgb, #353535 12%, var(--bg-subtle)); --accent-tint: color-mix(in srgb, #353535 6%, var(--bg-panel)); --accent-hover: color-mix(in srgb, #353535 86%, var(--text-strong));"
>
<head />
<body>
<div>
<div
data-reduced-motion="user"
data-testid="motion-config"
>
<div
class="workspace-shell workspace-shell--web"
data-client-type="web"
>
<span
data-testid="workspace-tabs-active-project-workspace"
>
unresolved
</span>
<div
class="workspace-shell__body"
>
<main>
<div
data-testid="entry-home-surface"
/>
<div
data-testid="amr-login-status"
>
null
</div>
<button
type="button"
>
Create project
</button>
<button
type="button"
>
Create prompted project
</button>
<button
type="button"
>
Create plugin share project
</button>
<button
type="button"
>
Create project with working dir
</button>
<button
type="button"
>
Create project with context dirs
</button>
<button
type="button"
>
Host import folder
</button>
<button
type="button"
>
Refresh agents
</button>
<button
type="button"
>
Open settings from home
</button>
<button
type="button"
>
Open missing project
</button>
<button
type="button"
>
Open catalog project
</button>
<button
type="button"
>
Open updated catalog project
</button>
<button
type="button"
>
Open own unbound project
</button>
<button
type="button"
>
Open workspace A project
</button>
<button
type="button"
>
Open stale own workspace A project
</button>
<div
data-testid="entry-agent-list"
/>
<div
data-testid="entry-project-project-bound-a"
>
<span>
Workspace A local
</span>
<button
type="button"
>
Open
Workspace A local
</button>
<button
type="button"
>
Delete
Workspace A local
</button>
</div>
</main>
</div>
</div>
<div
aria-live="assertive"
class="od-toast tone-error placement-bottom"
role="alert"
>
<div
|
|
tests/components/App.project-create-race.test.tsx > App project creation routing > uses a title hint only after loading the workspace-bound local row:
apps/web/tests/components/App.project-create-race.test.tsx#L1683
AssertionError: expected "vi.fn()" to be called with arguments: [ 'project-shared', …(1) ]
Received:
1st vi.fn() call:
@@ -24,8 +24,9 @@
"seatLimit": 5,
"usedSeats": 1,
},
"workspaceId": "ws-1",
"workspaceMemberId": "wm-1",
+ "workspaceName": "ws-1",
"workspaceType": "team",
},
]
Number of calls: 1
❯ tests/components/App.project-create-race.test.tsx:1683:30
|
|
tests/components/App.project-create-race.test.tsx > App project creation routing > switches to the picked working dir before uploading staged Home attachments:
apps/web/tests/components/App.project-create-race.test.tsx#L1552
AssertionError: expected "vi.fn()" to be called with arguments: [ 'project-new', …(3) ]
Received:
1st vi.fn() call:
@@ -26,8 +26,9 @@
"seatLimit": 5,
"usedSeats": 1,
},
"workspaceId": "ws-create",
"workspaceMemberId": "wm-create",
+ "workspaceName": "ws-create",
"workspaceType": "team",
},
]
Number of calls: 1
❯ tests/components/App.project-create-race.test.tsx:1552:44
|
|
tests/useWorkspaceContext.sign-in-refresh.test.tsx > useWorkspaceContext sign-in refresh > keeps showing a resolved workspace while an identity refresh re-reads:
apps/web/tests/useWorkspaceContext.sign-in-refresh.test.tsx#L141
AssertionError: expected { workspaceType: 'team', …(12) } to deeply equal { workspaceType: 'team', …(11) }
Ignored nodes: comments, script, style
<html>
<head />
<body>
<div />
</body>
</html>
- Expected
+ Received
@@ -22,7 +22,8 @@
"usedSeats": 2,
},
"teamName": "Acme",
"workspaceId": "ws-1",
"workspaceMemberId": "member-1",
+ "workspaceName": "Acme",
"workspaceType": "team",
}
❯ tests/useWorkspaceContext.sign-in-refresh.test.tsx:141:56
❯ runWithExpensiveErrorDiagnosticsDisabled ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/config.js:47:12
❯ checkCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:124:77
❯ Timeout.checkRealTimersCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:118:16
|
|
tests/useWorkspaceContext.sign-in-refresh.test.tsx > useWorkspaceContext sign-in refresh > stops reporting signed-out while an explicit post-sign-in re-read is in flight:
apps/web/tests/useWorkspaceContext.sign-in-refresh.test.tsx#L111
AssertionError: expected { workspaceType: 'team', …(12) } to deeply equal { workspaceType: 'team', …(11) }
Ignored nodes: comments, script, style
<html>
<head />
<body>
<div />
</body>
</html>
- Expected
+ Received
@@ -22,7 +22,8 @@
"usedSeats": 2,
},
"teamName": "Acme",
"workspaceId": "ws-1",
"workspaceMemberId": "member-1",
+ "workspaceName": "Acme",
"workspaceType": "team",
}
❯ tests/useWorkspaceContext.sign-in-refresh.test.tsx:111:56
❯ runWithExpensiveErrorDiagnosticsDisabled ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/config.js:47:12
❯ checkCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:124:77
❯ Timeout.checkRealTimersCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:118:16
|
|
tests/use-project-collab.context-seed.test.tsx > useProjectCollab workspace-context seeding > marks a catalog-named teammate project as shared non-owner before status names them:
apps/web/tests/use-project-collab.context-seed.test.tsx#L281
AssertionError: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/use-project-collab.context-seed.test.tsx:281:53
|
|
tests/use-project-collab.context-seed.test.tsx > useProjectCollab workspace-context seeding > treats catalog-named owners as effective owners while status omits ownerMemberId:
apps/web/tests/use-project-collab.context-seed.test.tsx#L235
AssertionError: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/use-project-collab.context-seed.test.tsx:235:53
|
|
tests/use-project-collab.context-seed.test.tsx > useProjectCollab workspace-context seeding > does not fail closed for a shared project the viewer owns:
apps/web/tests/use-project-collab.context-seed.test.tsx#L193
AssertionError: expected true to be false // Object.is equality
- Expected
+ Received
- false
+ true
❯ tests/use-project-collab.context-seed.test.tsx:193:47
|
|
tests/use-project-collab.context-seed.test.tsx > useProjectCollab workspace-context seeding > does not fail closed for a project the hub catalog does not list:
apps/web/tests/use-project-collab.context-seed.test.tsx#L156
AssertionError: expected true to be false // Object.is equality
Ignored nodes: comments, script, style
<html>
<head />
<body>
<div />
<div />
<div />
</body>
</html>
- Expected
+ Received
- false
+ true
❯ tests/use-project-collab.context-seed.test.tsx:156:49
❯ runWithExpensiveErrorDiagnosticsDisabled ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/config.js:47:12
❯ checkCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:124:77
❯ Timeout.checkRealTimersCallback ../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/wait-for.js:118:16
|
|
[chromium] › ui/app-manual-edit.test.ts:211:1 › [P0] manual edit mode preserves a runtime-rendered mobile app page:
e2e/ui/app-manual-edit.test.ts#L233
2) [chromium] › ui/app-manual-edit.test.ts:211:1 › [P0] manual edit mode preserves a runtime-rendered mobile app page
Error: expect(locator).toBeVisible() failed
Locator: locator('[data-testid="artifact-preview-frame"]:visible, [data-testid="artifact-preview-frame-url-load"]:visible, [data-testid="artifact-preview-frame-srcdoc"]:visible, [data-testid="live-artifact-preview-frame"]:visible').contentFrame().getByTestId('mobile-page-profile')
Expected: visible
Timeout: 10000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 10000ms
- waiting for locator('[data-testid="artifact-preview-frame"]:visible, [data-testid="artifact-preview-frame-url-load"]:visible, [data-testid="artifact-preview-frame-srcdoc"]:visible, [data-testid="live-artifact-preview-frame"]:visible').contentFrame().getByTestId('mobile-page-profile')
231 |
232 | await expect(page.getByTestId('manual-edit-mode-toggle')).toHaveAttribute('aria-pressed', 'true');
> 233 | await expect(preview.getByTestId('mobile-page-profile')).toBeVisible();
| ^
234 | await expect(preview.getByRole('heading', { name: 'Profile page' })).toBeVisible();
235 | await expect(preview.getByRole('heading', { name: 'Today page' })).toHaveCount(0);
236 | await expect(preview.getByTestId('mobile-page-today')).toHaveCount(0);
at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:233:60
|
|
[chromium] › ui/app-manual-edit.test.ts:145:1 › [P0] manual edit mode preserves the current page in a multi-page mobile app:
e2e/ui/app-manual-edit.test.ts#L163
1) [chromium] › ui/app-manual-edit.test.ts:145:1 › [P0] manual edit mode preserves the current page in a multi-page mobile app
Error: expect(locator).toBeVisible() failed
Locator: locator('[data-testid="artifact-preview-frame"]:visible, [data-testid="artifact-preview-frame-url-load"]:visible, [data-testid="artifact-preview-frame-srcdoc"]:visible, [data-testid="live-artifact-preview-frame"]:visible').contentFrame().getByTestId('mobile-page-profile')
Expected: visible
Received: hidden
Timeout: 10000ms
Call log:
- Expect "toBeVisible" with timeout 10000ms
- waiting for locator('[data-testid="artifact-preview-frame"]:visible, [data-testid="artifact-preview-frame-url-load"]:visible, [data-testid="artifact-preview-frame-srcdoc"]:visible, [data-testid="live-artifact-preview-frame"]:visible').contentFrame().getByTestId('mobile-page-profile')
24 × locator resolved to <main hidden="" data-page="profile" data-od-id="mobile-page-profile" data-testid="mobile-page-profile">…</main>
- unexpected value "hidden"
161 |
162 | await preview.getByRole('button', { name: 'Profile' }).click();
> 163 | await expect(preview.getByTestId('mobile-page-profile')).toBeVisible();
| ^
164 | await expect(preview.getByTestId('mobile-page-home')).toBeHidden();
165 |
166 | await page.getByTestId('manual-edit-mode-toggle').click();
at /home/runner/work/open-design/open-design/e2e/ui/app-manual-edit.test.ts:163:60
|
|
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-2zTwnv/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
1 skipped
70 passed (7.1m)
|
|
🎭 Playwright Run Summary
4 passed (1.8m)
|
|
🎭 Playwright Run Summary
22 passed (4.9m)
|
|
🎭 Playwright Run Summary
29 passed (8.0m)
|
|
🎭 Playwright Run Summary
2 flaky
[chromium] › ui/app-manual-edit.test.ts:145:1 › [P0] manual edit mode preserves the current page in a multi-page mobile app
[chromium] › ui/app-manual-edit.test.ts:211:1 › [P0] manual edit mode preserves a runtime-rendered mobile app page
35 passed (11.8m)
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
handoff-report-visual-pr
|
438 Bytes |
sha256:b78278d51e863aee6f9a374f47b0ff365a274c6ac178b9eb4ef5a0513d9e765d
|
|
|
ui-p0-ci-30766174758-entry-settings
|
323 KB |
sha256:4bdac6298afa59c0949489734357243891842116a289aa393d3198c0c153682c
|
|
|
ui-p0-ci-30766174758-project-runtime
|
221 KB |
sha256:8b5af73bd8d6c70aaee2a115154c46836dd840970f2df3a40104d830f73da679
|
|
|
ui-p0-ci-30766174758-project-runtime-domain
|
274 KB |
sha256:c40060c874cf15e93415cbb41a79ad82663591bddd09c224f3a9847732570be6
|
|
|
ui-p0-ci-30766174758-project-workspace
|
21.7 MB |
sha256:6a2635ff93d86380236d8ac40f50b1753fd60c4db89e577642c120697ce4870b
|
|
|
ui-p0-ci-30766174758-workspace-restoration
|
315 KB |
sha256:4f03431b0432a68a4fd9804fdc438ca8f27de205c74608323689c0c4f0d9329c
|
|
|
visual-pr-capture-6347-30766174758-entry-navigation
|
5.43 MB |
sha256:5e7c78305b483bfa7e2d61ec7785964cab062e6950871dd45bcde84a59b394a3
|
|
|
visual-pr-capture-6347-30766174758-settings-workspace
|
3.09 MB |
sha256:937d7f1c1223bef8c53ff26e346a9a84b1ac79b755f6a0e56f24f42ab3be33a2
|
|