Repository navigation
Require MFA to unlock cloud administration #6119
Triggered via pull request
September 24, 2026 17:14
Status
Failure
Total duration
6m 30s
Artifacts
–
ci.yml
on: pull_request
Changed paths
11s
Matrix: e2e
Cloud evaluated closure
1m 30s
Desktop smoke build
1m 9s
Self-host Docker image
2m 16s
Annotations
53 errors and 76 warnings
|
E2E (cloud 1of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · add screen large spec: typing reaches an operation beyond the preview's top slice:
e2e/scenarios/health-checks-ui.test.ts#L510
TimeoutError: page.waitForURL: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/health-checks-ui.test.ts:510:26
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/health-checks-ui.test.ts:502:13
❯ src/surfaces/browser.ts:288:13
|
|
src/auth/mirror-feeders.node.test.ts > account service writes through to the mirror > updateMemberRole writes the role WorkOS returned:
apps/cloud/src/account/workos-account-service.ts#L151
AccountForbidden: Verify your identity to use organization admin settings.
❯ Array.<anonymous> src/account/workos-account-service.ts:151:25
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1289:23
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { _tag: 'AccountForbidden' }
|
|
src/auth/mirror-feeders.node.test.ts > account service writes through to the mirror > removeMember tombstones the mirror row after the WorkOS delete:
apps/cloud/src/account/workos-account-service.ts#L151
AccountForbidden: Verify your identity to use organization admin settings.
❯ Array.<anonymous> src/account/workos-account-service.ts:151:25
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1289:23
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { _tag: 'AccountForbidden' }
|
|
src/auth/mirror-feeders.node.test.ts > account service writes through to the mirror > inviteMember scans an organization the backfill never covered before counting its seats, once:
apps/cloud/src/auth/mirror-feeders.node.test.ts#L1361
AssertionError: expected AccountForbidden: Verify your identity to… { _tag: '…' } to match object { message: StringContaining{…} }
(1 matching property omitted from actual)
- Expected
+ Received
- {
- "message": StringContaining "Your plan includes 3 members",
+ AccountForbidden {
+ "message": "Verify your identity to use organization admin settings.",
+ "_tag": "AccountForbidden",
}
❯ Array.<anonymous> src/auth/mirror-feeders.node.test.ts:1361:23
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
|
|
src/auth/mirror-feeders.node.test.ts > account service writes through to the mirror > inviteMember mirrors the pending membership WorkOS created for the invitee:
apps/cloud/src/account/workos-account-service.ts#L151
AccountForbidden: Verify your identity to use organization admin settings.
❯ Array.<anonymous> src/account/workos-account-service.ts:151:25
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1289:23
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { _tag: 'AccountForbidden' }
|
|
src/auth/mirror-feeders.node.test.ts > session handlers read membership from the mirror > finishes on a retry after WorkOS already deleted the org:
apps/cloud/src/auth/mirror-feeders.node.test.ts#L924
AssertionError: expected 403 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 403
❯ src/auth/mirror-feeders.node.test.ts:924:26
|
|
src/auth/mirror-feeders.node.test.ts > session handlers read membership from the mirror > finishes on a retry after the billing cancel failed, and only purges once billing is cancelled:
apps/cloud/src/auth/mirror-feeders.node.test.ts#L883
AssertionError: the failed billing cancel is surfaced, not hidden: expected 403 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 403
❯ src/auth/mirror-feeders.node.test.ts:883:79
|
|
src/auth/mirror-feeders.node.test.ts > session handlers read membership from the mirror > revokes every member's access the moment deletion starts, even when the local purge fails, and finishes on a retry after WorkOS already deleted the org:
apps/cloud/src/auth/mirror-feeders.node.test.ts#L809
AssertionError: the failed purge is surfaced, not hidden: expected 403 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 403
❯ src/auth/mirror-feeders.node.test.ts:809:70
|
|
src/admin/admin-users-api.node.test.ts > authorizeTenant · admin session > an active admin resolves the selected org as the tenant:
apps/cloud/src/admin/admin-users-api.ts#L88
{
_tag: 'AdminUsersForbidden',
message: '',
stack: 'AdminUsersForbidden: \n' +
' at Array.<anonymous> (/home/runner/_work/executor/executor/apps/cloud/src/admin/admin-users-api.ts:88:55)\n' +
' at Generator.next (<anonymous>)\n' +
' at Object.~effect/Effect/successCont (file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/effect.js:868:26)\n' +
' at Object.~effect/Effect/evaluate (file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/core.js:312:30)\n' +
' at FiberImpl.runLoop (file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/effect.js:444:107)\n' +
' at FiberImpl.evaluate (file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/effect.js:412:23)\n' +
' at file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/effect.js:719:15\n' +
' at file:///home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/dist/internal/effect.js:687:50\n' +
' at processTicksAndRejections (node:internal/process/task_queues:103:5)',
name: 'AdminUsersForbidden',
stacks: [
{
method: 'Array.<anonymous>',
file: '/home/runner/_work/executor/executor/apps/cloud/src/admin/admin-users-api.ts',
line: 88,
column: 55
},
{
line: 1276,
column: 25,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts',
method: 'next'
},
{
line: 531,
column: 30,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts',
method: 'Object.~effect/Effect/evaluate'
},
{
line: 633,
column: 39,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts',
method: 'FiberImpl.runLoop'
},
{
line: 593,
column: 22,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts',
method: 'runLoop'
},
{
line: 1030,
column: 14,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts',
method: 'evaluate'
},
{
line: 972,
column: 13,
file: '/home/runner/_work/executor/executor/node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts',
method: 'resume'
}
]
}
❯ Array.<anonymous> src/admin/admin-users-api.ts:88:55
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:972:13
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { _tag: 'AdminUsersForbidden' }
|
|
src/account/org-api-key-revoke.node.test.ts > revokeOrgApiKey · provider boundary > a user-scoped key id fails cleanly through this path:
apps/cloud/src/account/org-api-key-revoke.node.test.ts#L243
AssertionError: expected AccountForbidden: Verify your identity to… { _tag: '…' } to be an instance of AccountError
❯ Array.<anonymous> src/account/org-api-key-revoke.node.test.ts:243:21
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
|
|
src/account/org-api-key-revoke.node.test.ts > revokeOrgApiKey · provider boundary > an org admin revokes an org-owned key:
apps/cloud/src/account/workos-account-service.ts#L151
AccountForbidden: Verify your identity to use organization admin settings.
❯ Array.<anonymous> src/account/workos-account-service.ts:151:25
❯ next ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1289:23
❯ FiberImpl.runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:972:13
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { _tag: 'AccountForbidden' }
|
|
E2E (cloud 7of16)
Process completed with exit code 1.
|
|
[cloud] cloud/billing-payment-method-update.test.ts > Billing · adding and changing the card shows the current card without a reload:
e2e/cloud/billing-payment-method-update.test.ts#L74
TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
Call log:
- waiting for getByText('Payment method', { exact: true }).locator('xpath=ancestor::div[contains(@Class,\'justify-between\')][1]').getByText('No card on file') to be visible
❯ cloud/billing-payment-method-update.test.ts:74:61
❯ step src/surfaces/browser.ts:276:15
❯ cloud/billing-payment-method-update.test.ts:65:7
❯ src/surfaces/browser.ts:288:13
|
|
E2E (cloud 13of16)
Process completed with exit code 1.
|
|
E2E (cloud 10of16)
Process completed with exit code 1.
|
|
E2E (cloud 6of16)
Process completed with exit code 1.
|
|
[cloud] cloud/mcp-workos-blip-session-survival.test.ts > MCP sessions · a revoked membership fails closed on the next request and condemns the session:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
[cloud] cloud/connect-link-multi-org.test.ts > Connect · an org-scoped connect link resolves a multi-org recipient in the SENDING org:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
E2E (cloud 9of16)
Process completed with exit code 1.
|
|
[cloud] cloud/workspace-write-permissions.test.ts > Workspace writes · cloud members are denied while Personal writes and admin writes succeed:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
[cloud] cloud/member-invite-seat-limit.test.ts > Billing · a free org fills its 3 member seats, then invites are blocked with a reason:
e2e/cloud/member-invite-seat-limit.test.ts#L59
TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
Call log:
- waiting for getByRole('button', { name: 'Invite member' }) to be visible
❯ cloud/member-invite-seat-limit.test.ts:59:67
❯ step src/surfaces/browser.ts:276:15
❯ cloud/member-invite-seat-limit.test.ts:57:7
❯ src/surfaces/browser.ts:288:13
|
|
E2E (cloud 11of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/no-auth-connection.test.ts > Connections · an agent creates a no-auth connection over the core tool and the public API answers 200:
e2e/scenarios/no-auth-connection.test.ts#L172
AssertionError: addSpec succeeded: {"ok":false,"error":{"code":"org_write_denied","message":"Adding connections or changing workspace settings requires a workspace admin."}}: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ Array.<anonymous> scenarios/no-auth-connection.test.ts:172:71
❯ next ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:972:13
|
|
[cloud] scenarios/artifact-loading-surface.test.ts > Artifacts · opening an artifact shows one loading surface, not three:
e2e/scenarios/artifact-loading-surface.test.ts#L186
AssertionError: cold open: the stage changed size mid-load at sample 3 ({"x":224,"y":85,"w":1056,"h":715} vs {"x":224,"y":48,"w":1056,"h":752}) — the artifact appeared in a different box than the skeleton held: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ expectSingleLoadingSurface scenarios/artifact-loading-surface.test.ts:186:7
❯ scenarios/artifact-loading-surface.test.ts:303:11
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/artifact-loading-surface.test.ts:302:9
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] cloud/org-delete.test.ts > Organizations · an admin deletes the organization from settings:
e2e/cloud/org-delete.test.ts#L44
TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
Call log:
- waiting for getByText('Permanently delete this organization') to be visible
❯ cloud/org-delete.test.ts:44:70
❯ step src/surfaces/browser.ts:276:15
❯ cloud/org-delete.test.ts:41:7
❯ src/surfaces/browser.ts:288:13
|
|
E2E (cloud 14of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/provider-plugins-ui.test.ts > Google and Microsoft products are registry cards that resolve into prefilled add flows:
e2e/src/scenario.ts#L138
Error: Test timed out in 120000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
❯ scenario src/scenario.ts:138:3
❯ scenarios/provider-plugins-ui.test.ts:14:1
|
|
[cloud] cloud/connection-owner-isolation.test.ts > Connections · an org-owned connection is shared with every member of the org:
e2e/cloud/connection-owner-isolation.test.ts#L83
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/connection-owner-isolation.test.ts:83:13
|
|
[cloud] cloud/connection-owner-isolation.test.ts > Connections · a user-owned connection is private to its creator, even inside the same org:
e2e/cloud/connection-owner-isolation.test.ts#L83
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/connection-owner-isolation.test.ts:83:13
|
|
E2E (cloud 15of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/openapi-add-integration-action-bar.test.ts > OpenAPI · Add integration commits the integration and the action bar is a single node:
e2e/scenarios/openapi-add-integration-action-bar.test.ts#L65
TimeoutError: page.waitForURL: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/openapi-add-integration-action-bar.test.ts:65:24
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/openapi-add-integration-action-bar.test.ts:55:9
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] scenarios/mcp-catalog-sync-ui.test.ts > MCP catalog · the Tools tab follows a server-side rename after a list_changed notification:
e2e/scenarios/mcp-catalog-sync-ui.test.ts#L48
TimeoutError: page.waitForURL: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/mcp-catalog-sync-ui.test.ts:48:22
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/mcp-catalog-sync-ui.test.ts:46:9
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] cloud/billing-trial-checkout-stale.test.ts > Billing · completing the trial checkout shows the new plan without a reload:
e2e/cloud/billing-trial-checkout-stale.test.ts#L61
TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
Call log:
- waiting for getByRole('heading', { name: 'Choose a plan' }) to be visible
❯ cloud/billing-trial-checkout-stale.test.ts:61:68
❯ step src/surfaces/browser.ts:276:15
❯ cloud/billing-trial-checkout-stale.test.ts:45:7
❯ src/surfaces/browser.ts:288:13
|
|
E2E (cloud 8of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/google-disabled-api.test.ts > Google · a disabled upstream API reads as API disabled with the enable link, not Expired:
e2e/scenarios/google-disabled-api.test.ts#L139
TimeoutError: page.waitForURL: Timeout 120000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/google-disabled-api.test.ts:139:18
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/google-disabled-api.test.ts:134:5
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] scenarios/connect-handoff.test.ts > Connect · the agentic handoff URL opens this deployment's add-account flow and the pasted key works:
e2e/scenarios/connect-handoff.test.ts#L196
AssertionError: addSpec succeeded: {"ok":false,"error":{"code":"org_write_denied","message":"Adding connections or changing workspace settings requires a workspace admin."}}: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ Array.<anonymous> scenarios/connect-handoff.test.ts:196:69
❯ next ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:972:13
|
|
[cloud] cloud/integration-creation-permissions.test.ts > Integration creation · cloud members see admin guidance and admins can add:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
[cloud] cloud/admin-users-console.test.ts > Admin · the Users page shows every member and what each has connected, and refuses a plain member:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
E2E (cloud 5of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/integrations-catalog-search.test.ts > Add page: a registry row adds in place, and falls back to the config screen:
e2e/scenarios/integrations-catalog-search.test.ts#L84
TimeoutError: locator.waitFor: Timeout 90000ms exceeded.
Call log:
- waiting for getByTestId('catalog-todoist-fab11c').getByRole('link', { name: 'View Todoist MCP' }) to be visible
❯ scenarios/integrations-catalog-search.test.ts:84:14
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/integrations-catalog-search.test.ts:73:9
❯ src/surfaces/browser.ts:288:13
|
|
E2E (cloud 12of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/google-photos-preset-ui.test.ts > Google Photos products are separate registry cards with separate add flows:
e2e/src/scenario.ts#L138
Error: Test timed out in 120000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
❯ scenario src/scenario.ts:138:3
❯ scenarios/google-photos-preset-ui.test.ts:13:1
|
|
[cloud] cloud/admin-users.test.ts > Admin · the owner sees every member of the workspace and what each has connected:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
E2E (cloud 16of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/connect-handoff-session.test.ts > Connect · developer session: agent chat → handoff link → paste key → verified send:
e2e/scenarios/connect-handoff-session.test.ts#L130
AssertionError: addSpec succeeded: {"ok":false,"error":{"code":"org_write_denied","message":"Adding connections or changing workspace settings requires a workspace admin."}}: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ Array.<anonymous> scenarios/connect-handoff-session.test.ts:130:77
❯ next ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:972:13
|
|
[cloud] scenarios/auth-methods-ui.test.ts > Auth methods · the add flow declares an API key alongside the detected method:
e2e/scenarios/auth-methods-ui.test.ts#L64
TimeoutError: page.waitForURL: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/auth-methods-ui.test.ts:64:22
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/auth-methods-ui.test.ts:61:9
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] cloud/spec-update-convergence.test.ts > Convergence · a spec refresh reaches a co-worker's own connection on their next read:
e2e/cloud/spec-update-convergence.test.ts#L126
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/spec-update-convergence.test.ts:126:13
|
|
[cloud] cloud/org-api-keys-console.test.ts > Admin · organization keys are minted in the console and authenticate the admin API:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
[cloud] cloud/mcp-workspace-write-permissions.test.ts > MCP workspace writes · a member session is denied while an admin session succeeds:
e2e/cloud/support/session.ts#L84
Error: /api/account/members/invite failed (403): {"_tag":"AccountForbidden","message":"Verify your identity to use organization admin settings."}
❯ cloud/support/session.ts:84:13
|
|
E2E (cloud 4of16)
Process completed with exit code 1.
|
|
[cloud] scenarios/google-health-checks.test.ts > Google · OAuth catalog connection without a health check is healthy from the grant:
e2e/scenarios/google-health-checks.test.ts#L104
TimeoutError: page.waitForURL: Timeout 120000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/google-health-checks.test.ts:104:18
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/google-health-checks.test.ts:98:5
❯ src/surfaces/browser.ts:288:13
|
|
[cloud] scenarios/google-health-checks.test.ts > Google · Calendar and Gmail catalog health checks run against the emulator:
e2e/scenarios/google-health-checks.test.ts#L104
TimeoutError: page.waitForURL: Timeout 120000ms exceeded.
=========================== logs ===========================
waiting for navigation until "load"
============================================================
❯ scenarios/google-health-checks.test.ts:104:18
❯ step src/surfaces/browser.ts:276:15
❯ scenarios/google-health-checks.test.ts:98:5
❯ src/surfaces/browser.ts:288:13
|
|
Changed paths
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Format
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (local 2of2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Desktop smoke build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
E2E (selfhost 2of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (local 1of2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
E2E (selfhost 9of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 1of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 1of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Cloud evaluated closure
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Cloud evaluated closure
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 3of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 3of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 4of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 2of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 7of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 13of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 10of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 5of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 10of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 6of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Self-host Docker image
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 6of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 9of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 7of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 11of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost 8of10)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 14of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 15of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 8of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 5of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 12of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 16of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 4of16)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|