Skip to content

feat(workspace-team): team workspaces, shared resources, workspace-scoped billing, and the #5517 redesign #17118

feat(workspace-team): team workspaces, shared resources, workspace-scoped billing, and the #5517 redesign

feat(workspace-team): team workspaces, shared resources, workspace-scoped billing, and the #5517 redesign #17118

Triggered via pull request August 3, 2026 01:20
Status Failure
Total duration 15m 31s
Artifacts 8

ci.yml

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

Annotations

11 errors, 4 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
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-17SHuX/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 (3.2m)
🎭 Playwright Run Summary
18 passed (4.2m)
🎭 Playwright Run Summary
4 passed (1.8m)
🎭 Playwright Run Summary
22 passed (5.0m)
🎭 Playwright Run Summary
29 passed (7.6m)
🎭 Playwright Run Summary
1 skipped 70 passed (11.0m)
🎭 Playwright Run Summary
37 passed (12.5m)

Artifacts

Produced during runtime
Name Size Digest
handoff-report-visual-pr
438 Bytes
sha256:cdc90eb445f2dc788f883b1d6a9f409108d64a5b586f06d5c834a1cd0fd615cc
ui-p0-ci-30776648570-entry-settings
389 KB
sha256:f784d8d9c5899daedd6e06467c13ae0aebba377d0a35dc0bdf29f5865f8d4a87
ui-p0-ci-30776648570-project-runtime
287 KB
sha256:5d068a8b61b48c61963ac1be62d4b5f8ea7516ef2945bd80de9d2ace7c26aeaa
ui-p0-ci-30776648570-project-runtime-domain
340 KB
sha256:d1750b9b5ebcd1670f0f2dddddc0bfd0854ad183871637f2cbb4a5863ca1fc77
ui-p0-ci-30776648570-project-workspace
407 KB
sha256:fc094d8ce093149bd4fcd56d18f7013500df6c61b26839789f781f9f5ceed2be
ui-p0-ci-30776648570-workspace-restoration
380 KB
sha256:c0fefe4e659179ccafeb7b133306662ef4b8a8ffe1c777935b070366cdb3e2fb
visual-pr-capture-6142-30776648570-entry-navigation
5.5 MB
sha256:f72c0d17a28987bada262419e36b55f9b28825d2ef0e71e0537460ae082468e9
visual-pr-capture-6142-30776648570-settings-workspace
3.14 MB
sha256:28b417119765ac2c22b7712430646981267089e388d4c23f2b276fed430069e0