Skip to content

fix(testkit): settle asynchronous daemon spawns #1436

fix(testkit): settle asynchronous daemon spawns

fix(testkit): settle asynchronous daemon spawns #1436

Triggered via push August 1, 2026 19:42
Status Failure
Total duration 45m 25s
Artifacts 1

tests.yml

on: push
Release actor guard
0s
Release actor guard
UI E2E (WSREPL Lima matrix)
0s
UI E2E (WSREPL Lima matrix)
Mobile E2E (Maestro) (android) (opt-in)
0s
Mobile E2E (Maestro) (android) (opt-in)
Mobile E2E (Maestro) (ios) (opt-in)
0s
Mobile E2E (Maestro) (ios) (opt-in)
UI Tests (unit + integration)
27m 21s
UI Tests (unit + integration)
Shared Package Unit Tests
10m 21s
Shared Package Unit Tests
Server Tests (unit + integration)
18m 33s
Server Tests (unit + integration)
Server DB Contract (Postgres)
10m 37s
Server DB Contract (Postgres)
CLI Tests (unit + integration)
12m 17s
CLI Tests (unit + integration)
Stack Tests (unit + integration)
20m 14s
Stack Tests (unit + integration)
Release Contracts
12m 9s
Release Contracts
Installer Smoke (Linux)
14m 31s
Installer Smoke (Linux)
Installer Smoke (macOS)
10m 23s
Installer Smoke (macOS)
Installer Smoke (Windows)
12m 30s
Installer Smoke (Windows)
Binary Smoke (isolated cwd)
21m 16s
Binary Smoke (isolated cwd)
Release Validation — CLI Update Continuity (Linux)
0s
Release Validation — CLI Update Continuity (Linux)
Release Validation — Daemon Continuity (Linux)
0s
Release Validation — Daemon Continuity (Linux)
Release Validation — Session Continuity (Linux)
0s
Release Validation — Session Continuity (Linux)
Release Assets Docker (Linux)
0s
Release Assets Docker (Linux)
Self-Host E2E (Linux systemd)
0s
Self-Host E2E (Linux systemd)
Self-Host E2E (macOS launchd)
0s
Self-Host E2E (macOS launchd)
Self-Host E2E (Windows schtasks)
0s
Self-Host E2E (Windows schtasks)
Typecheck
9m 56s
Typecheck
CLI + Server (light/sqlite) E2E
14m 40s
CLI + Server (light/sqlite) E2E
Core E2E (fast, packages/tests, server-light, sqlite)
26m 4s
Core E2E (fast, packages/tests, server-light, sqlite)
Core E2E (slow, packages/tests, server-light, sqlite)
0s
Core E2E (slow, packages/tests, server-light, sqlite)
Stress (repeat/chaos)
0s
Stress (repeat/chaos)
Matrix: Self-Host + Daemon E2E
Matrix: ui-e2e
Providers (contract matrix)
0s
Providers (contract matrix)
Fit to window
Zoom out
Zoom in

Annotations

46 errors and 17 warnings
Typecheck
Process completed with exit code 1.
Installer Smoke (macOS)
Process completed with exit code 1.
Release Contracts
Process completed with exit code 1.
CLI Tests (unit + integration)
Process completed with exit code 1.
Installer Smoke (Windows)
Process completed with exit code 1.
CLI + Server (light/sqlite) E2E
Process completed with exit code 1.
src/daemon/daemon.integration.test.ts > Daemon Integration Tests > should handle concurrent session operations: apps/cli/src/daemon/daemon.integration.test.ts#L656
AssertionError: expected undefined to be defined ❯ src/daemon/daemon.integration.test.ts:656:29 ❯ src/daemon/daemon.integration.test.ts:654:13
src/daemon/daemon.integration.test.ts > Daemon Integration Tests > should update session metadata when webhook is called: apps/cli/src/testkit/async/waitFor.ts#L23
Error: Timed out waiting for session metadata webhook propagation after 30000ms ❯ waitForCondition src/testkit/async/waitFor.ts:23:11 ❯ waitForSessionById src/daemon/daemon.integration.test.ts:297:3 ❯ src/daemon/daemon.integration.test.ts:609:5
src/daemon/daemon.integration.test.ts > Daemon Integration Tests > should track both daemon-spawned and terminal sessions: apps/cli/src/daemon/daemon.integration.test.ts#L585
AssertionError: expected undefined to be defined ❯ src/daemon/daemon.integration.test.ts:585:27
src/daemon/daemon.integration.test.ts > Daemon Integration Tests > should spawn & stop a session via HTTP (not testing RPC route, but similar enough): apps/cli/src/daemon/daemon.integration.test.ts#L510
AssertionError: expected { success: true, …(4) } to have property "sessionId" ❯ src/daemon/daemon.integration.test.ts:510:22
sources/app/api/socket/sessionUpdateHandler.sessionState.changes.integration.spec.ts > sessionUpdateHandler (session state AccountChange integration) > marks a session unread through the read-cursor operation payload: apps/server/sources/app/api/socket/sessionUpdateHandler.sessionState.changes.integration.spec.ts#L417
AssertionError: expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0 ❯ sources/app/api/socket/sessionUpdateHandler.sessionState.changes.integration.spec.ts:417:35
sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts > sessionUpdateHandler (transcript-stream-segment) > broadcasts transcript stream segment ephemerals to all session participants: apps/server/sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts#L589
AssertionError: expected "spy" to be called with arguments: [ { sessionId: 's1' } ] Number of calls: 0 ❯ sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts:589:46
sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts > sessionUpdateHandler (execution-run-updated) > requires edit access before broadcasting execution-run-updated: apps/server/sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts#L418
AssertionError: expected "spy" to be called with arguments: [ …(2) ] Number of calls: 0 ❯ sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts:418:36
sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts > sessionUpdateHandler (execution-run-updated) > does not broadcast execution-run-updated when the machine access key binding has been revoked: apps/server/sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts#L240
AssertionError: expected "spy" to be called with arguments: [ { where: { …(1) }, …(1) } ] Received: 1st spy call: @@ -1,9 +1,19 @@ [ { "select": { - "machineId": true, + "machine": { + "select": { + "replacedByMachineId": true, + "revokedAt": true, + }, + }, + "session": { + "select": { + "accountId": true, + }, + }, }, "where": { "accountId_machineId_sessionId": { "accountId": "u1", "machineId": "m1", Number of calls: 1 ❯ sources/app/api/socket/sessionUpdateHandler.executionRuns.integration.spec.ts:240:37
Stack Tests (unit + integration)
The job has exceeded the maximum execution time of 20m0s
Stack Tests (unit + integration)
The operation was canceled.
Core E2E (fast, packages/tests, server-light, sqlite)
Process completed with exit code 1.
suites/core-e2e/sessionAgent.spawnActions.test.ts > core e2e: session-agent spawn actions > exposes session.spawn_new to session agents, honors Off settings, and forwards rich inherited spawn options: packages/tests/suites/core-e2e/sessionAgent.spawnActions.test.ts#L249
AssertionError: expected last "spy" call to have been called with [ ObjectContaining{…} ] - Expected + Received @@ -1,7 +1,7 @@ [ - ObjectContaining { + { "backendTarget": { "agentId": "claude", "kind": "builtInAgent", }, "connectedServices": { @@ -14,11 +14,10 @@ }, "v": 1, }, "connectedServicesUpdatedAt": 1700000000003, "directory": "/home/runner/work/happier/happier/.project/logs/e2e/2026-08-01T19-57-41-586Z-core-a9a32669/session-agent-spawn-actions-79f881c0-e9a8-4146-8de0-628d464877a7/workspace", - "initialPrompt": "Use inherited parent context.", "machineId": "machine-local", "mcpSelection": { "forceExcludeServerIds": [ "secret-env-server", ], @@ -27,10 +26,15 @@ ], "managedServersEnabled": false, "v": 1, }, "modelId": "claude-opus-parent", + "modelUpdatedAt": 1700000000002, + "pendingFirstInput": { + "localId": "spawn-first:5e497727d586c11cfbaa8932ed832cb1cbf90b8ace93f2c6661240a474e61362", + "text": "Use inherited parent context.", + }, "permissionMode": "safe-yolo", "permissionModeUpdatedAt": 1700000000001, "profileId": "parent-profile", "sessionConfigOptionOverrides": { "overrides": { @@ -44,7 +48,8 @@ }, }, "updatedAt": 1700000000100, "v": 1, }, + "spawnNonce": "session.spawn_new:sess_parent_4394f47a-3d65-40db-a2fe-af69d69959ce:3", }, ] ❯ suites/core-e2e/sessionAgent.spawnActions.test.ts:249:34
suites/core-e2e/pendingQueue.socket.pendingChanged.test.ts > core e2e: pending queue v2 emits pending-changed socket updates > broadcasts pending-changed on materialize-next via socket RPC: packages/tests/suites/core-e2e/pendingQueue.socket.pendingChanged.test.ts#L165
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ suites/core-e2e/pendingQueue.socket.pendingChanged.test.ts:165:23
suites/core-e2e/executionRuns.review.triage.feat.execution.runs.e2e.test.ts > core e2e: execution runs (review) supports triage updates > emits review_findings.v2 meta and allows review.triage action overlay: packages/tests/src/testkit/timing.ts#L48
Error: Timed out waiting for condition ❯ waitFor src/testkit/timing.ts:48:9 ❯ waitForFakeClaudeObservedPrompt suites/core-e2e/executionRuns.review.triage.feat.execution.runs.e2e.test.ts:42:3 ❯ suites/core-e2e/executionRuns.review.triage.feat.execution.runs.e2e.test.ts:269:33
suites/core-e2e/directSessions.claude.browseTail.feat.sessions.direct.e2e.test.ts > core e2e: direct Claude sessions browse/link/tail > converts a linked direct Claude session to persisted mode and resumes it through the persisted runner: packages/tests/src/testkit/fakeClaude.ts#L147
Error: Timed out waiting for fake Claude invocation | logPath=/home/runner/work/happier/happier/.project/logs/e2e/2026-08-01T19-55-19-873Z-core-68f22c59/direct-sessions-claude-takeover-persist/fake-claude.jsonl | exists=true | invocations=3 | matchesNow=false | last={"invocationId":"fake-claude-7e681463-72f1-4365-9a28-3dcbd87ab5dd","mode":"local","argvHead":["--output-format","stream-json","--verbose","--max-turns","1","--print","hello"],"argvHasSettings":false} ❯ waitForFakeClaudeInvocation src/testkit/fakeClaude.ts:147:9 ❯ suites/core-e2e/directSessions.claude.browseTail.feat.sessions.direct.e2e.test.ts:443:35
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > keeps the original web prepend anchor through non-trusted restore scroll events: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L7865
AssertionError: expected "spy" to be called 1 times, but got 0 times ❯ __vi_import_1__.withRenderedFlashListChatListWebScroller.initialFill sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7865:58 ❯ withFlashListChatListWebScrollerDom sources/dev/testkit/harness/chatListHarness.ts:922:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7847:13 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7796:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > keeps retrying web prepend index recovery until the original anchor remounts: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L7770
AssertionError: expected "spy" to be called 2 times, but got 0 times ❯ __vi_import_1__.withRenderedFlashListChatListWebScroller.initialFill sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7770:58 ❯ withFlashListChatListWebScrollerDom sources/dev/testkit/harness/chatListHarness.ts:922:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7752:13 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7705:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > recovers the captured web prepend item when scrollHeight growth overshoots the original viewport anchor: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L7668
AssertionError: expected "spy" to be called with arguments: [ +0 ] Number of calls: 0 ❯ __vi_import_1__.withRenderedFlashListChatListWebScroller.initialFill sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7668:54 ❯ withFlashListChatListWebScrollerDom sources/dev/testkit/harness/chatListHarness.ts:922:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7650:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > materializes the exact keyed web prepend row after grow-collapse commits without applying gross height growth: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L7547
AssertionError: expected "spy" to be called with arguments: [ { index: +0, animated: false } ] Received: 1st spy call: [ { "animated": false, "index": 0, + "viewOffset": 40, + "viewPosition": 0, }, ] Number of calls: 1 ❯ __vi_import_1__.withRenderedFlashListChatListWebScroller.initialFill sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7547:62 ❯ withFlashListChatListWebScrollerDom sources/dev/testkit/harness/chatListHarness.ts:922:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7527:13 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:7488:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > preserves the web viewport when older messages prepend above the current scroll position: apps/ui/sources/dev/testkit/transcript/viewportTelemetryAssertions.ts#L174
Error: WREG telemetry diagnostics missing required web pagination/restore fields: - missing firstVisibleAnchorTestId :: t=1785614213033 restore-decision mode=follow-bottom reason=restored offset=0 session=session:1 - missing firstVisibleAnchorTestId :: t=1785614213036 restore-decision mode=restore-anchor reason=pending session=session:1 - missing firstVisibleAnchorTestId :: t=1785614213036 restore-decision mode=restore-distance reason=restored session=session:1 ❯ Module.assertWebWregDiagnostics sources/dev/testkit/transcript/viewportTelemetryAssertions.ts:174:11 ❯ __vi_import_1__.withFlashListChatListWebScrollerDom.document.getElementById sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6653:17 ❯ Module.withFlashListChatListWebScrollerDom sources/dev/testkit/harness/chatListHarness.ts:922:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6611:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > shows the older-load spinner after the spinner delay while a user-triggered older load is in flight: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L6248
AssertionError: expected 2 to be +0 // Object.is equality - Expected + Received - 0 + 2 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6248:59 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6209:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > keeps older-load progress out of scrollable header geometry during prepend loading: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L6202
AssertionError: expected 2 to be +0 // Object.is equality - Expected + Received - 0 + 2 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6202:59 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6158:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > shows the older-load spinner when proactive prefetch is slow: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L6153
AssertionError: expected 2 to be +0 // Object.is equality - Expected + Received - 0 + 2 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6153:59 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:6109:9
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > keeps web first-visible diagnostics when viewport telemetry is enabled: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L5505
AssertionError: expected "spy" to be called with arguments: [ ObjectContaining{…} ] Received: 1st spy call: [ - ObjectContaining { - "firstVisibleAnchorTestId": "none", + { + "anchorCorrectionAttempt": undefined, + "anchorCorrectionTargetOffsetY": undefined, + "anchorDeltaPx": undefined, + "anchorIndex": undefined, + "anchorItemOffsetPx": undefined, + "anchorObservedItemOffsetPx": undefined, + "anchorRestoreViewOffset": undefined, + "coldCount": 1, + "contentHeight": 1200, + "distanceFromBottom": 0, + "domClientHeight": 600, + "domScrollHeight": 1200, + "domScrollTop": 600, + "flashListContentHeight": 1200, + "flashListLayoutHeight": 600, + "hotCount": 0, + "layoutHeight": 600, + "listImplementation": "flash_v2", + "mode": "follow-bottom", + "offsetY": 600, + "paginationPhase": "idle", + "paginationSuspendedReasons": [], + "pendingWebPrependAnchorKind": "none", + "platform": "web", + "programmaticWebWrite": false, + "reason": "observed", + "scrollable": false, + "sessionId": "session:1", + "timestampMs": 1785614178763, + "trigger": "scroll", "type": "scroll-observed", }, ] Number of calls: 1 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:5505:31
sources/components/sessions/transcript/ChatList.flashListV2.test.tsx > ChatList (FlashList v2) > restores a native unpinned session after many intervening session opens without leaking another viewport: apps/ui/sources/components/sessions/transcript/ChatList.flashListV2.test.tsx#L3296
AssertionError: expected last "spy" call to have been called with [ { offset: 500, animated: false } ] - Expected: [ { "animated": false, "offset": 500, }, ] + Received: undefined ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:3296:36 ❯ withWebFlashListFakeTimers sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:239:16 ❯ sources/components/sessions/transcript/ChatList.flashListV2.test.tsx:3226:9
UI E2E (Playwright) / shard 2/3
The job has exceeded the maximum execution time of 45m0s
UI E2E (Playwright) / shard 2/3
The operation was canceled.
UI E2E (Playwright) / shard 3/3
The job has exceeded the maximum execution time of 45m0s
UI E2E (Playwright) / shard 3/3
The operation was canceled.
UI E2E (Playwright) / shard 1/3
The job has exceeded the maximum execution time of 45m0s
UI E2E (Playwright) / shard 1/3
The operation was canceled.
Typecheck
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Shared Package Unit Tests
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Installer Smoke (macOS)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Server DB Contract (Postgres)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Release Contracts
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
CLI Tests (unit + integration)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Installer Smoke (Windows)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Installer Smoke (Linux)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
CLI + Server (light/sqlite) E2E
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Server Tests (unit + integration)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Stack Tests (unit + integration)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Binary Smoke (isolated cwd)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Core E2E (fast, packages/tests, server-light, sqlite)
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, 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/
UI Tests (unit + integration)
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, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
UI E2E (Playwright) / shard 2/3
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, actions/setup-node@v4, dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
UI E2E (Playwright) / shard 3/3
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, actions/setup-node@v4, dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
UI E2E (Playwright) / shard 1/3
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, actions/setup-node@v4, dorny/paths-filter@v3. 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
core-e2e-artifacts-fast-sqlite
212 MB
sha256:506ed173f4a9f22c29078738194bf27be983343897985280650dfdf67e334209