Skip to content

feat: Support built-in authentication in the Cloudflare host #5345

feat: Support built-in authentication in the Cloudflare host

feat: Support built-in authentication in the Cloudflare host #5345

Triggered via pull request August 29, 2026 05:46
Status Failure
Total duration 8m 25s
Artifacts 14

ci.yml

on: pull_request
Changed paths
8s
Changed paths
Matrix: e2e
Cloud evaluated closure
49s
Cloud evaluated closure
Desktop smoke build
59s
Desktop smoke build
Self-host Docker image
1m 5s
Self-host Docker image
Fit to window
Zoom out
Zoom in

Annotations

83 errors and 76 warnings
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/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: /Connect/ }).first() ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/google-health-checks.test.ts:92:13 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/google-health-checks.test.ts:89: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/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: /Connect/ }).first() ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/google-health-checks.test.ts:92:13 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/google-health-checks.test.ts:89:5 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 9of16)
Process completed with exit code 1.
[cloud] scenarios/openapi-multi-key-auth-ui.test.ts > OpenAPI · the Cloudflare email and key auth method shows separate credential fields: e2e/scenarios/openapi-multi-key-auth-ui.test.ts#L66
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Connections').first() to be visible ❯ scenarios/openapi-multi-key-auth-ui.test.ts:66:57 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/openapi-multi-key-auth-ui.test.ts:64:11 ❯ src/surfaces/browser.ts:288: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#L50
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ cloud/member-invite-seat-limit.test.ts:50:20 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/member-invite-seat-limit.test.ts:48:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 13of16)
Process completed with exit code 1.
[cloud] scenarios/org-slug-routing.test.ts > Org URLs · console paths carry the organization slug: e2e/scenarios/org-slug-routing.test.ts#L52
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ scenarios/org-slug-routing.test.ts:52:20 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/org-slug-routing.test.ts:50:7 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/connection-health-verdict.test.ts > Health checks (UI) · every surface showing a broken connection paints a verdict, and probes exactly once: e2e/scenarios/connection-health-verdict.test.ts#L445
TimeoutError: page.waitForResponse: Timeout 30000ms exceeded while waiting for event "response" ❯ scenarios/connection-health-verdict.test.ts:445:32 ❯ step src/surfaces/browser.ts:276:21 ❯ scenarios/connection-health-verdict.test.ts:444:9 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 8of16)
Process completed with exit code 1.
[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#L222
TimeoutError: locator.waitFor: Timeout 15000ms exceeded. Call log: - waiting for getByRole('heading', { name: /Add connection/ }) to be visible ❯ scenarios/connect-handoff.test.ts:222:69 ❯ step src/surfaces/browser.ts:276:21 ❯ scenarios/connect-handoff.test.ts:221:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/oauth-callback-unauthenticated.test.ts > OAuth callback · a signed-out callback uses login returnTo and resumes the connection: e2e/cloud/oauth-callback-unauthenticated.test.ts#L120
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Sign in to manage your tools and integrations') to be visible ❯ cloud/oauth-callback-unauthenticated.test.ts:120:79 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/oauth-callback-unauthenticated.test.ts:117:7 ❯ src/surfaces/browser.ts:288: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/admin-users-console.test.ts#L131
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ cloud/admin-users-console.test.ts:131:24 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/admin-users-console.test.ts:129:11 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 7of16)
Process completed with exit code 1.
[cloud] scenarios/oauth-client-handoff.test.ts > OAuth client · agent hands off, the human enters the secret in the browser, and the app connects: e2e/scenarios/oauth-client-handoff.test.ts#L410
TimeoutError: locator.waitFor: Timeout 20000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Register OAuth app' }) to be visible ❯ scenarios/oauth-client-handoff.test.ts:410:16 ❯ step src/surfaces/browser.ts:276:21 ❯ scenarios/oauth-client-handoff.test.ts:407:11 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/integration-families.test.ts > Integrations · related MCP services collapse into their declared family: e2e/scenarios/integration-families.test.ts#L52
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Integrations').first() to be visible ❯ scenarios/integration-families.test.ts:52:58 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/integration-families.test.ts:50:11 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/oauth-callback-org-scope.test.ts > OAuth callback · state-scoped org survives a callback while the session cookie points elsewhere: e2e/cloud/oauth-callback-org-scope.test.ts#L65
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: /Org user-81afdb7a/ }) to be visible ❯ expectOrgShell cloud/oauth-callback-org-scope.test.ts:65:80 ❯ cloud/oauth-callback-org-scope.test.ts:217:9 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/oauth-callback-org-scope.test.ts:215:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/connection-modal-oauth-abandon.test.ts > Connections · closing the add-connection modal after abandoning OAuth lets you try again (not stuck on Connecting): e2e/cloud/connection-modal-oauth-abandon.test.ts#L103
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Add connection', exact: true }) ❯ cloud/connection-modal-oauth-abandon.test.ts:103:31 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/connection-modal-oauth-abandon.test.ts:101:9 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 11of16)
Process completed with exit code 1.
[cloud] scenarios/first-party-oauth.test.ts > First-party OAuth · unlisted Google still authorizes its bundle and refuses admin scopes: e2e/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: /Connect/ }).first() ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/first-party-oauth.test.ts:187:17 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/first-party-oauth.test.ts:184:9 ❯ src/surfaces/browser.ts:288: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#L237
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Open artifact Loading Surface 75e16348' }) to be visible ❯ scenarios/artifact-loading-surface.test.ts:237:14 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/artifact-loading-surface.test.ts:232: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#L27
TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('Northwind Labs') ❯ cloud/org-delete.test.ts:27:55 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-delete.test.ts:25:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/auth-routing-flow.test.ts > Auth routing · signed out → login → onboarding → dashboard, one browser session: e2e/cloud/auth-routing-flow.test.ts#L45
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Sign in to manage your tools and integrations') to be visible ❯ cloud/auth-routing-flow.test.ts:45:79 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/auth-routing-flow.test.ts:43:7 ❯ src/surfaces/browser.ts:288: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#L155
TimeoutError: locator.waitFor: Timeout 15000ms exceeded. Call log: - waiting for getByRole('heading', { name: /Add connection/ }) to be visible ❯ scenarios/connect-handoff-session.test.ts:155:20 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/connect-handoff-session.test.ts:151:15 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/artifact-preview-gallery.test.ts > Artifacts · the gallery shows each artifact's real layout, in light and dark: e2e/scenarios/artifact-preview-gallery.test.ts#L172
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Artifacts', level: 1 }) to be visible ❯ scenarios/artifact-preview-gallery.test.ts:172:74 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/artifact-preview-gallery.test.ts:170:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-slug-foreign.test.ts > Org URLs · opening another of your orgs by slug works without switching the session: e2e/cloud/org-slug-foreign.test.ts#L72
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Integrations').first() to be visible ❯ cloud/org-slug-foreign.test.ts:72:54 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-slug-foreign.test.ts:70:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-api-keys-console.test.ts > Admin · organization keys are minted in the console and authenticate the admin API: e2e/cloud/org-api-keys-console.test.ts#L50
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ cloud/org-api-keys-console.test.ts:50:20 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-api-keys-console.test.ts:48:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/connect-panel.test.ts > Connect · the agent-connect panel gives working copy for both transports: e2e/cloud/connect-panel.test.ts#L22
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Connect an agent').first() to be visible ❯ cloud/connect-panel.test.ts:22:58 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/connect-panel.test.ts:20:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 10of16)
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#L129
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: /Connect/ }).first() ❯ scenarios/google-disabled-api.test.ts:129:10 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/google-disabled-api.test.ts:124:5 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/connection-remove-confirm.test.ts > Connections (UI) · Remove asks for confirmation; cancel keeps, confirm removes: e2e/scenarios/connection-remove-confirm.test.ts#L82
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('section').filter({ has: getByRole('heading', { name: 'Connections', level: 3 }) }).getByText('main', { exact: true }) to be visible ❯ scenarios/connection-remove-confirm.test.ts:82:23 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/connection-remove-confirm.test.ts:80:11 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-switcher.test.ts > Organizations · switching organizations switches the workspace: e2e/cloud/org-switcher.test.ts#L25
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('Northwind Labs') to be visible ❯ cloud/org-switcher.test.ts:25:55 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-switcher.test.ts:23:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/frontend-error-reporting.test.ts > Frontend errors · a failed API request is reported with a real message: e2e/cloud/frontend-error-reporting.test.ts#L76
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Connect' }).first() to be visible ❯ cloud/frontend-error-reporting.test.ts:76:69 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/frontend-error-reporting.test.ts:74:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 5of16)
Process completed with exit code 1.
[cloud] scenarios/mcp-cloudflare-codemode-warning.test.ts > MCP add flow · a Cloudflare URL without codemode=false gets the opt-out warning: e2e/scenarios/mcp-cloudflare-codemode-warning.test.ts#L25
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://mcp.example.com') to be visible ❯ scenarios/mcp-cloudflare-codemode-warning.test.ts:25:47 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/mcp-cloudflare-codemode-warning.test.ts:23:7 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/connect-deep-link.test.ts > Connect · /connect/<slug> lands an end user in that integration's connect flow: e2e/scenarios/connect-deep-link.test.ts#L102
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ scenarios/connect-deep-link.test.ts:102:24 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/connect-deep-link.test.ts:98:11 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/artifacts.test.ts > Artifacts · a tweak updates the artifact in place, and a tweak that cannot render is refused: e2e/scenarios/artifacts.test.ts#L747
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="artifact-shell-frame"]').contentFrame().locator('iframe').contentFrame().locator('[data-testid="artifact-marker"]').filter({ hasText: 'second-b42330b5' }) to be visible ❯ scenarios/artifacts.test.ts:747:14 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/artifacts.test.ts:741:9 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/artifacts.test.ts > Artifacts · renaming and deleting in the console is what the agent sees next: e2e/scenarios/artifacts.test.ts#L601
TimeoutError: locator.waitFor: Timeout 20000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Open artifact Draft Dashboard 87246102' }) to be visible ❯ scenarios/artifacts.test.ts:601:84 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/artifacts.test.ts:599:9 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/artifacts.test.ts > Artifacts · create-artifact hands a non-Apps client a deep link that renders the live component: e2e/scenarios/artifacts.test.ts#L272
TimeoutError: locator.waitFor: Timeout 20000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Release Readiness b7626778' }) to be visible ❯ scenarios/artifacts.test.ts:272:60 ❯ step src/surfaces/browser.ts:276:21 ❯ scenarios/artifacts.test.ts:271:9 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/mcp-browser-resume-page.test.ts > MCP approval · browser resume page approves a paused execution through the UI: e2e/cloud/mcp-browser-resume-page.test.ts#L227
TimeoutError: page.waitForResponse: Timeout 30000ms exceeded while waiting for event "response" ❯ cloud/mcp-browser-resume-page.test.ts:227:48 ❯ step src/surfaces/browser.ts:276:21 ❯ cloud/mcp-browser-resume-page.test.ts:222:11 ❯ 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: separated catalog presets open a Photos service add flow: e2e/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Connect' }) ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/google-photos-preset-ui.test.ts:22:17 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/google-photos-preset-ui.test.ts:17:7 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/docs-link.test.ts > Shell · the sidebar links to the docs from inside the app: e2e/scenarios/docs-link.test.ts#L23
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Integrations').first() to be visible ❯ scenarios/docs-link.test.ts:23:54 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/docs-link.test.ts:21:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-multitab-cookie.test.ts > Org scope · plugin API requests carry the URL organization selector: e2e/cloud/org-multitab-cookie.test.ts#L139
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://api.example.com/openapi.json') to be visible ❯ cloud/org-multitab-cookie.test.ts:139:77 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-multitab-cookie.test.ts:137:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-multitab-cookie.test.ts > Org tabs · two tabs on different orgs stay independent (URL-scoped, no cookie steal): e2e/cloud/org-multitab-cookie.test.ts#L58
TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('Northwind Labs') ❯ cloud/org-multitab-cookie.test.ts:58:55 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-multitab-cookie.test.ts:56:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/auth-hint.test.ts > Auth hint · logout clears the hint with the session: e2e/cloud/auth-hint.test.ts#L80
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Policies' }) to be visible ❯ cloud/auth-hint.test.ts:80:60 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/auth-hint.test.ts:78:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/auth-hint.test.ts > Auth hint · the FIRST load on a fresh browser paints the real shell — the gate minted the hint: e2e/cloud/auth-hint.test.ts#L40
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Policies' }) to be visible ❯ cloud/auth-hint.test.ts:40:60 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/auth-hint.test.ts:37:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 14of16)
Process completed with exit code 1.
[cloud] scenarios/provider-plugins-ui.test.ts > Provider catalog · Google and Microsoft services are OpenAPI presets: e2e/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('navigation').getByRole('button', { name: 'Browse integrations', exact: true }) ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/provider-plugins-ui.test.ts:19:15 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/provider-plugins-ui.test.ts:17:7 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/policy-remove-confirm.test.ts > Policies (UI) · Remove asks for confirmation; cancel keeps, confirm removes: e2e/scenarios/policy-remove-confirm.test.ts#L46
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-slot=\'card-stack-entry\']').filter({ hasText: 'rmconfirm-ba768efb.*' }) to be visible ❯ scenarios/policy-remove-confirm.test.ts:46:23 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/policy-remove-confirm.test.ts:44:11 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/openapi-server-selection-ui.test.ts > OpenAPI · the add form offers a server picker and an optional base URL for a multi-server spec: e2e/scenarios/openapi-server-selection-ui.test.ts#L40
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://api.example.com/openapi.json') to be visible ❯ scenarios/openapi-server-selection-ui.test.ts:40:79 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/openapi-server-selection-ui.test.ts:38:9 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/graphql-introspection-health.test.ts > GraphQL · a healthy account row keeps the connection's name: e2e/scenarios/graphql-introspection-health.test.ts#L188
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('tab', { name: 'Accounts' }) ❯ scenarios/graphql-introspection-health.test.ts:188:63 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/graphql-introspection-health.test.ts:186:11 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/graphql-introspection-health.test.ts > GraphQL · failed introspection blocks connection creation with an actionable error: e2e/scenarios/graphql-introspection-health.test.ts#L84
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('heading', { name: /Add connection · GraphQL health/ }) to be visible ❯ scenarios/graphql-introspection-health.test.ts:84:90 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/graphql-introspection-health.test.ts:82:11 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/logout-stale-session.test.ts > Sign-out · a second open tab signs out too instead of showing raw JSON: e2e/cloud/logout-stale-session.test.ts#L129
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Policies' }) to be visible ❯ cloud/logout-stale-session.test.ts:129:60 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/logout-stale-session.test.ts:127:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 6of16)
Process completed with exit code 1.
[cloud] scenarios/integrations-catalog-search.test.ts > Connect dialog: integrations.sh catalog search resolves into a prefilled add flow: e2e/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Connect' }) ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/integrations-catalog-search.test.ts:58:15 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/integrations-catalog-search.test.ts:55:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/unauthenticated-skeleton.test.ts > Unauthenticated · unknown paths are a real 404 page, not a skeleton or a blank app: e2e/cloud/unauthenticated-skeleton.test.ts#L172
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Page not found') to be visible ❯ cloud/unauthenticated-skeleton.test.ts:172:48 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/unauthenticated-skeleton.test.ts:170:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/unauthenticated-skeleton.test.ts > Unauthenticated · a signed-in session still opens the app shell (the gate lets it through): e2e/cloud/unauthenticated-skeleton.test.ts#L137
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('aside').first() to be visible ❯ cloud/unauthenticated-skeleton.test.ts:137:45 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/unauthenticated-skeleton.test.ts:135:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/unauthenticated-skeleton.test.ts > Unauthenticated · the signed-out cloud root lands on /login with no app-shell flash: e2e/cloud/unauthenticated-skeleton.test.ts#L36
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Sign in to manage your tools and integrations') to be visible ❯ cloud/unauthenticated-skeleton.test.ts:36:79 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/unauthenticated-skeleton.test.ts:34:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-limit.test.ts > Billing · the free plan stops organization creation after 3: e2e/cloud/org-limit.test.ts#L28
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('Northwind Labs') to be visible ❯ cloud/org-limit.test.ts:28:55 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-limit.test.ts:26:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/org-last-visited.test.ts > Org URLs · a bare entry lands in the last-visited org, not the session's login org: e2e/cloud/org-last-visited.test.ts#L69
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('Integrations').first() to be visible ❯ cloud/org-last-visited.test.ts:69:54 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/org-last-visited.test.ts:67:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/onboarding-mcp-url.test.ts > Onboarding · the MCP setup step hands the user their org-scoped MCP server URL: e2e/cloud/onboarding-mcp-url.test.ts#L25
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('Northwind Labs') to be visible ❯ cloud/onboarding-mcp-url.test.ts:25:57 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/onboarding-mcp-url.test.ts:20:7 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/connect-link-multi-org.test.ts > Connect · an org-scoped connect link lands a multi-org recipient in the SENDING org: e2e/cloud/connect-link-multi-org.test.ts#L142
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" navigated to "http://localhost:44550/org-user-2ea77861/connect/multiorg-fc92bfa1" ============================================================ ❯ cloud/connect-link-multi-org.test.ts:142:24 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/connect-link-multi-org.test.ts:134:11 ❯ src/surfaces/browser.ts:288:13
[cloud] cloud/connect-card-origin.test.ts > Connect card · the rendered install command uses the real host, never the 127.0.0.1 default: e2e/cloud/connect-card-origin.test.ts#L32
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText(/add-mcp\s+https?:\/\//).first() to be visible ❯ cloud/connect-card-origin.test.ts:32:23 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/connect-card-origin.test.ts:29:7 ❯ src/surfaces/browser.ts:288:13
E2E (cloud 15of16)
Process completed with exit code 1.
[cloud] scenarios/policies-ui.test.ts > Policies · the tool tree's per-tool menu and category menu both author working rules: e2e/src/surfaces/browser.ts#L149
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('tab', { name: 'Tools' }) ❯ clickToReveal src/surfaces/browser.ts:149:19 ❯ scenarios/policies-ui.test.ts:170:17 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/policies-ui.test.ts:164:9 ❯ src/surfaces/browser.ts:288:13
[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#L37
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://api.example.com/openapi.json') to be visible ❯ scenarios/openapi-add-integration-action-bar.test.ts:37:79 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/openapi-add-integration-action-bar.test.ts:35:9 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/oauth-callback-url.test.ts > OAuth · registering an app in the connect modal shows the callback URL to allow-list: e2e/scenarios/oauth-callback-url.test.ts#L158
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Register app', exact: true }) ❯ scenarios/oauth-callback-url.test.ts:158:79 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/oauth-callback-url.test.ts:156:7 ❯ 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#L42
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByText('How does this server authenticate?') to be visible ❯ scenarios/mcp-catalog-sync-ui.test.ts:42:70 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/mcp-catalog-sync-ui.test.ts:38:9 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/mcp-add-url-typing-probe.test.ts > MCP add flow · a half-typed Server URL is not probed: e2e/scenarios/mcp-add-url-typing-probe.test.ts#L25
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://mcp.example.com') to be visible ❯ scenarios/mcp-add-url-typing-probe.test.ts:25:47 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/mcp-add-url-typing-probe.test.ts:23:7 ❯ src/surfaces/browser.ts:288: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#L45
TimeoutError: locator.waitFor: Timeout 90000ms exceeded. Call log: - waiting for getByText('How does this server authenticate?') to be visible ❯ scenarios/auth-methods-ui.test.ts:45:70 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/auth-methods-ui.test.ts:37: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#L56
TimeoutError: page.waitForURL: Timeout 30000ms exceeded. =========================== logs =========================== waiting for navigation until "load" ============================================================ ❯ cloud/billing-trial-checkout-stale.test.ts:56:20 ❯ step src/surfaces/browser.ts:276:15 ❯ cloud/billing-trial-checkout-stale.test.ts:45:7 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · the integrations list auto-checks and shows an expired MCP server at a glance: e2e/scenarios/health-checks-ui.test.ts#L1145
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('link', { name: /hc-ui-list-c30bfdac/ }).and(locator('[data-slot="card-stack-entry"]')) to be visible ❯ scenarios/health-checks-ui.test.ts:1145:27 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:1137:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · the Add Connection modal wheel-scrolls when the response overflows: e2e/scenarios/health-checks-ui.test.ts#L998
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Add connection', exact: true }) ❯ scenarios/health-checks-ui.test.ts:998:87 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:992:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · the connections list shows a persisted expired verdict at a glance: e2e/scenarios/health-checks-ui.test.ts#L895
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('section').filter({ has: getByRole('heading', { name: 'Connections', level: 3 }) }).getByLabel('Status: Expired') to be visible ❯ scenarios/health-checks-ui.test.ts:895:65 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:889:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · Add Connection derives the connection name from the probed identity: e2e/scenarios/health-checks-ui.test.ts#L800
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Add connection', exact: true }) ❯ scenarios/health-checks-ui.test.ts:800:87 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:798:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · edit sheet with identity: preview the response, then healthy then expired: e2e/scenarios/health-checks-ui.test.ts#L710
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for locator('section').filter({ has: getByRole('heading', { name: 'Connections', level: 3 }) }).getByText('main', { exact: true }) to be visible ❯ scenarios/health-checks-ui.test.ts:710:68 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:708:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · the combobox list scrolls inside the edit sheet: e2e/scenarios/health-checks-ui.test.ts#L634
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Health check', level: 3 }) to be visible ❯ scenarios/health-checks-ui.test.ts:634:83 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:632:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · clicking a combobox option in the sheet selects it without closing the sheet: e2e/scenarios/health-checks-ui.test.ts#L563
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Health check', level: 3 }) to be visible ❯ scenarios/health-checks-ui.test.ts:563:83 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:561:13 ❯ src/surfaces/browser.ts:288:13
[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#L484
TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for getByPlaceholder('https://api.example.com/openapi.json') ❯ scenarios/health-checks-ui.test.ts:484:83 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:482:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · large spec: typing filters the operation picker down to the match: e2e/scenarios/health-checks-ui.test.ts#L400
TimeoutError: locator.waitFor: Timeout 30000ms exceeded. Call log: - waiting for getByRole('heading', { name: 'Health check', level: 3 }) to be visible ❯ scenarios/health-checks-ui.test.ts:400:83 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:398:13 ❯ src/surfaces/browser.ts:288:13
[cloud] scenarios/health-checks-ui.test.ts > Health checks (UI) · the request panel: pre-seeded call, one Check, response rows pick the identity: e2e/scenarios/health-checks-ui.test.ts#L286
TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Add connection', exact: true }) ❯ scenarios/health-checks-ui.test.ts:286:87 ❯ step src/surfaces/browser.ts:276:15 ❯ scenarios/health-checks-ui.test.ts:284:13 ❯ 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/
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.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.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 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/
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)
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/
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/
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 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 (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 (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/
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 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/
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 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 (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 (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 (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 (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/
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 (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 (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 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 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 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 (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 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 (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 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 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/
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 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/

Artifacts

Produced during runtime
Name Size Digest
e2e-runs-cloud-10of16 Expired
949 KB
sha256:084209866e5f62b9c33df5c15017d48552839f9273fb3d90d824885f5eb91a07
e2e-runs-cloud-11of16 Expired
830 KB
sha256:807091537e333d39b90e777b370ed87562a250614676b010069a1c56af6a65e0
e2e-runs-cloud-12of16 Expired
1.2 MB
sha256:b44194d081e0ed1e1aceeecf49af5ff290ee91184be7ac1ca464c58544e1e50e
e2e-runs-cloud-13of16 Expired
521 KB
sha256:043e2c7c80771876f4e7f14f4622d1c75833dc3e9fe3dc3651a019eb0939720c
e2e-runs-cloud-14of16 Expired
1.36 MB
sha256:ec566a7d6f02c056eb3d29987e447d497841fbd2fdcd8bf5489c771fdf20bd4b
e2e-runs-cloud-15of16 Expired
1.82 MB
sha256:f88bf10d5e0449fe56633a9e2bd7e5e9c24e90ab23fa4ae3bbef7e94394a2955
e2e-runs-cloud-16of16 Expired
1.1 MB
sha256:64f1f0503d0933ae05f19f210ba3924b549b38bc9f49664bee94f4c37013eb97
e2e-runs-cloud-1of16 Expired
2.4 MB
sha256:b29da0f9d8daa5c6ab491865a95361248683f1996c410efcc78f0936d182515c
e2e-runs-cloud-4of16 Expired
486 KB
sha256:48a62f856462600dbe8d2d9e2f5bf226e3e2fe85eed0487a6fb1688566b4062f
e2e-runs-cloud-5of16 Expired
1.54 MB
sha256:bb9e8147018b413de14a0014646555c259e2b3bc32a1ae985bab009aa5cc9fa4
e2e-runs-cloud-6of16 Expired
1.77 MB
sha256:2c4455a29d16a20db1dc92c76f640e82e5143363e1c4d6eda03c442754ad2272
e2e-runs-cloud-7of16 Expired
1010 KB
sha256:1fcd2dd1dbe872dd4f0a08a2c663a4b24ecfaf016fa1b6c84ad29f582a4245dd
e2e-runs-cloud-8of16 Expired
862 KB
sha256:f2f67c63629a662f69412d677476eabedf02822985157146282ece0fefc6536d
e2e-runs-cloud-9of16 Expired
525 KB
sha256:64dc8fc4794ccb169cd22ac60663d4960e14948b11ff9b027c200101b3210405