Skip to content

Close test gaps for memory-source-server-routing #2205

Close test gaps for memory-source-server-routing

Close test gaps for memory-source-server-routing #2205

Triggered via push May 16, 2026 13:03
Status Failure
Total duration 3m 55s
Artifacts 1

ci.yml

on: push
Matrix: unit-tests
Web Tests (Unit)
1m 10s
Web Tests (Unit)
Web Tests (Components)
1m 7s
Web Tests (Components)
Lint
39s
Lint
Typecheck
46s
Typecheck
Secret Scan (gitleaks)
11s
Secret Scan (gitleaks)
Server Unit Tests
1m 13s
Server Unit Tests
Unit Tests (macOS)
3m 51s
Unit Tests (macOS)
Unit Tests (Windows)
1m 22s
Unit Tests (Windows)
Unit Tests (Windows ConPTY)
1m 53s
Unit Tests (Windows ConPTY)
Server DB Integration Tests
1m 7s
Server DB Integration Tests
Preview Dist Smoke
39s
Preview Dist Smoke
Embedding Integration Tests
1m 2s
Embedding Integration Tests
E2E Tests
0s
E2E Tests
Repo Provider Integration Tests
0s
Repo Provider Integration Tests
Coverage Report
0s
Coverage Report
Docker Build & Push
0s
Docker Build & Push
Android Release Build
0s
Android Release Build
Publish to npm
0s
Publish to npm
Fit to window
Zoom out
Zoom in

Annotations

11 errors, 24 warnings, and 2 notices
Web Tests (Unit)
Process completed with exit code 1.
Unit Tests (Node 24)
Process completed with exit code 1.
test/shared/timeline-protocol-magic-string.test.ts > timeline protocol magic strings > keeps shared timeline protocol literals centralized outside compatibility fixtures: test/shared/timeline-protocol-magic-string.test.ts#L186
AssertionError: Timeline protocol literals must come from shared/timeline-protocol.ts or shared/timeline-history-errors.ts. Move implementation code to shared constant imports, or add a narrowly named compatibility test/fixture exemption. src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable: expected [ …(3) ] to deeply equal [] - Expected + Received - Array [] + Array [ + "src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable", + "src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable", + "test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable", + ] ❯ test/shared/timeline-protocol-magic-string.test.ts:186:19
test/shared/fs-read-error-codes.test.ts > fs-read shared error constants > keeps fs-read production consumers importing shared wire error values instead of redefining them: test/shared/fs-read-error-codes.test.ts#L146
AssertionError: src/daemon/command-handler.ts should use FS_READ_ERROR_CODES for internal_error: expected '/**\n * Handle commands from the web …' not to contain '\'internal_error\'' - Expected + Received - 'internal_error' + /** + * Handle commands from the web UI and inbound chat messages via ServerLink. + * Commands arrive as JSON objects with a `type` field. + */ + import { startProject, stopProject, teardownProject, getTransportRuntime, launchTransportSession, isProviderSessionBound, persistSessionRecord, relaunchSessionWithSettings, stopTransportRuntimeSession, type ProjectConfig } from '../agent/session-manager.js'; + import { isTransportAgent } from '../agent/detect.js'; + import { sendKeys, sendKeysDelayedEnter, sendRawInput, resizeSession, sendKey, getPaneStartCommand } from '../agent/tmux.js'; + import { listSessions, getSession, upsertSession, removeSession, type SessionRecord } from '../store/session-store.js'; + import { routeMessage, type InboundMessage, type RouterContext } from '../router/message-router.js'; + import { terminalStreamer, type StreamSubscriber } from './terminal-streamer.js'; + import type { ServerLink } from './server-link.js'; + import { timelineEmitter } from './timeline-emitter.js'; + import { TimelinePreferredReadError, timelineStore } from './timeline-store.js'; + import { + recordFsWorkerMetric, + recordTimelineBudgetShape, + recordTransportListModelsStaleCompletion, + traceCommandAsync, + traceSync, + traceWebCommandReceived, + } from './latency-tracer.js'; + import { getDefaultTimelineHistoryWorkerPool, shouldUseTimelineHistoryWorkerPool, TimelineHistoryPoolError } from './timeline-history-pool.js'; + import { FsListPoolError, getDefaultFsListWorkerPool, shouldUseFsListWorkerPool } from './fs-list-pool.js'; + import { scanFsListSnapshot } from './fs-list-worker.js'; + import { FsGitStatusPoolError, getDefaultFsGitStatusWorkerPool, shouldUseFsGitStatusWorkerPool, __resetFsGitStatusWorkerPoolForTests } from './fs-git-status-pool.js'; + import { scanFsGitStatusSnapshot } from './fs-git-status-worker.js'; + import { shapeTimelineDetailValueForTransport, shapeTimelineEventsForTransport } from './timeline-response-shaper.js'; + import { getDefaultTimelineDetailStore } from './timeline-detail-store.js'; + import { TIMELINE_HISTORY_CONTENT_TYPES, TIMELINE_HISTORY_STATE_TYPES, type MemoryContextTimelinePayload, type TimelineEvent } from '../shared/timeline/types.js'; + import { emitSessionInlineError } from './session-error.js'; + import { enqueueResend, getResendEntries, clearResend } from './transport-resend-queue.js'; + import { + startSubSession, + stopSubSession, + rebuildSubSessions, + detectShells, + readSubSessionResponse, + subSessionName, + type SubSessionRecord, + } from './subsession-manager.js'; + import { sendSubSessionSync } from './subsession-sync.js'; + import logger from '../util/logger.js'; + import { getDefaultAckOutbox } from './ack-outbox.js'; + import { COMMAND_ACK_ERROR_DUPLICATE_COMMAND_ID, MSG_COMMAND_ACK } from '../../shared/ack-protocol.js'; + import { TIMELINE_PAYLOAD_BUDGET_BYTES } from '../../shared/timeline-payload-budget.js'; + import { TIMELINE_DETAIL_ERROR_REASONS, TIMELINE_HISTORY_ERROR_REASONS, TIMELINE_REQUEST_ERROR_REASONS, type TimelineRequestErrorReason } from '../../shared/timeline-history-errors.js'; + import { + TIMELINE_CURSOR_DIRECTIONS, + TIMELINE_MESSAGES, + TIMELINE_RESPONSE_SOURCES, + TIMELINE_RESPONSE_STATUS, + type TimelinePayloadMetadata, + type TimelineResponseSource, + type TimelineResponseStatus, + } from '../../shared/timeline-protocol.js'; + import { homedir } from 'os'; + import { lstat as fsLstat, open as fsOpen, readdir as fsReaddir, realpath as fsRealpath, readFile as fsReadFileRaw, stat as fsStat, unlink as fsUnlink, writeFile as fsWriteFile } from 'node:fs/promises'; + import * as nodePath from 'node:path'; + import { exec as execCb, execFile as execFileCb } from 'node:child_process'; + import { promisify } from 'node:util'; + const execAsync = promisify(execCb); + const execFileA
Unit Tests (Node 22)
The strategy configuration was canceled because "unit-tests._24" failed
Unit Tests (Node 22)
The operation was canceled.
test/shared/timeline-protocol-magic-string.test.ts > timeline protocol magic strings > keeps shared timeline protocol literals centralized outside compatibility fixtures: test/shared/timeline-protocol-magic-string.test.ts#L186
AssertionError: Timeline protocol literals must come from shared/timeline-protocol.ts or shared/timeline-history-errors.ts. Move implementation code to shared constant imports, or add a narrowly named compatibility test/fixture exemption. src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable: expected [ …(3) ] to deeply equal [] - Expected + Received - Array [] + Array [ + "src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable", + "src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable", + "test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable", + ] ❯ test/shared/timeline-protocol-magic-string.test.ts:186:19
test/shared/fs-read-error-codes.test.ts > fs-read shared error constants > keeps fs-read production consumers importing shared wire error values instead of redefining them: test/shared/fs-read-error-codes.test.ts#L146
AssertionError: src/daemon/command-handler.ts should use FS_READ_ERROR_CODES for internal_error: expected '/**\n * Handle commands from the web …' not to contain '\'internal_error\'' - Expected + Received - 'internal_error' + /** + * Handle commands from the web UI and inbound chat messages via ServerLink. + * Commands arrive as JSON objects with a `type` field. + */ + import { startProject, stopProject, teardownProject, getTransportRuntime, launchTransportSession, isProviderSessionBound, persistSessionRecord, relaunchSessionWithSettings, stopTransportRuntimeSession, type ProjectConfig } from '../agent/session-manager.js'; + import { isTransportAgent } from '../agent/detect.js'; + import { sendKeys, sendKeysDelayedEnter, sendRawInput, resizeSession, sendKey, getPaneStartCommand } from '../agent/tmux.js'; + import { listSessions, getSession, upsertSession, removeSession, type SessionRecord } from '../store/session-store.js'; + import { routeMessage, type InboundMessage, type RouterContext } from '../router/message-router.js'; + import { terminalStreamer, type StreamSubscriber } from './terminal-streamer.js'; + import type { ServerLink } from './server-link.js'; + import { timelineEmitter } from './timeline-emitter.js'; + import { TimelinePreferredReadError, timelineStore } from './timeline-store.js'; + import { + recordFsWorkerMetric, + recordTimelineBudgetShape, + recordTransportListModelsStaleCompletion, + traceCommandAsync, + traceSync, + traceWebCommandReceived, + } from './latency-tracer.js'; + import { getDefaultTimelineHistoryWorkerPool, shouldUseTimelineHistoryWorkerPool, TimelineHistoryPoolError } from './timeline-history-pool.js'; + import { FsListPoolError, getDefaultFsListWorkerPool, shouldUseFsListWorkerPool } from './fs-list-pool.js'; + import { scanFsListSnapshot } from './fs-list-worker.js'; + import { FsGitStatusPoolError, getDefaultFsGitStatusWorkerPool, shouldUseFsGitStatusWorkerPool, __resetFsGitStatusWorkerPoolForTests } from './fs-git-status-pool.js'; + import { scanFsGitStatusSnapshot } from './fs-git-status-worker.js'; + import { shapeTimelineDetailValueForTransport, shapeTimelineEventsForTransport } from './timeline-response-shaper.js'; + import { getDefaultTimelineDetailStore } from './timeline-detail-store.js'; + import { TIMELINE_HISTORY_CONTENT_TYPES, TIMELINE_HISTORY_STATE_TYPES, type MemoryContextTimelinePayload, type TimelineEvent } from '../shared/timeline/types.js'; + import { emitSessionInlineError } from './session-error.js'; + import { enqueueResend, getResendEntries, clearResend } from './transport-resend-queue.js'; + import { + startSubSession, + stopSubSession, + rebuildSubSessions, + detectShells, + readSubSessionResponse, + subSessionName, + type SubSessionRecord, + } from './subsession-manager.js'; + import { sendSubSessionSync } from './subsession-sync.js'; + import logger from '../util/logger.js'; + import { getDefaultAckOutbox } from './ack-outbox.js'; + import { COMMAND_ACK_ERROR_DUPLICATE_COMMAND_ID, MSG_COMMAND_ACK } from '../../shared/ack-protocol.js'; + import { TIMELINE_PAYLOAD_BUDGET_BYTES } from '../../shared/timeline-payload-budget.js'; + import { TIMELINE_DETAIL_ERROR_REASONS, TIMELINE_HISTORY_ERROR_REASONS, TIMELINE_REQUEST_ERROR_REASONS, type TimelineRequestErrorReason } from '../../shared/timeline-history-errors.js'; + import { + TIMELINE_CURSOR_DIRECTIONS, + TIMELINE_MESSAGES, + TIMELINE_RESPONSE_SOURCES, + TIMELINE_RESPONSE_STATUS, + type TimelinePayloadMetadata, + type TimelineResponseSource, + type TimelineResponseStatus, + } from '../../shared/timeline-protocol.js'; + import { homedir } from 'os'; + import { lstat as fsLstat, open as fsOpen, readdir as fsReaddir, realpath as fsRealpath, readFile as fsReadFileRaw, stat as fsStat, unlink as fsUnlink, writeFile as fsWriteFile } from 'node:fs/promises'; + import * as nodePath from 'node:path'; + import { exec as execCb, execFile as execFileCb } from 'node:child_process'; + import { promisify } from 'node:util'; + const execAsync = promisify(execCb); + const execFileA
Unit Tests (macOS)
Process completed with exit code 1.
test/shared/timeline-protocol-magic-string.test.ts > timeline protocol magic strings > keeps shared timeline protocol literals centralized outside compatibility fixtures: test/shared/timeline-protocol-magic-string.test.ts#L186
AssertionError: Timeline protocol literals must come from shared/timeline-protocol.ts or shared/timeline-history-errors.ts. Move implementation code to shared constant imports, or add a narrowly named compatibility test/fixture exemption. src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable: expected [ …(3) ] to deeply equal [] - Expected + Received - Array [] + Array [ + "src/daemon/memory-get-sources-orchestrator.ts:54:31 projection_unavailable", + "src/daemon/memory-get-sources-orchestrator.ts:155:39 projection_unavailable", + "test/daemon/memory-get-sources-orchestrator.test.ts:218:34 projection_unavailable", + ] ❯ test/shared/timeline-protocol-magic-string.test.ts:186:19
test/shared/fs-read-error-codes.test.ts > fs-read shared error constants > keeps fs-read production consumers importing shared wire error values instead of redefining them: test/shared/fs-read-error-codes.test.ts#L146
AssertionError: src/daemon/command-handler.ts should use FS_READ_ERROR_CODES for internal_error: expected '/**\n * Handle commands from the web …' not to contain '\'internal_error\'' - Expected + Received - 'internal_error' + /** + * Handle commands from the web UI and inbound chat messages via ServerLink. + * Commands arrive as JSON objects with a `type` field. + */ + import { startProject, stopProject, teardownProject, getTransportRuntime, launchTransportSession, isProviderSessionBound, persistSessionRecord, relaunchSessionWithSettings, stopTransportRuntimeSession, type ProjectConfig } from '../agent/session-manager.js'; + import { isTransportAgent } from '../agent/detect.js'; + import { sendKeys, sendKeysDelayedEnter, sendRawInput, resizeSession, sendKey, getPaneStartCommand } from '../agent/tmux.js'; + import { listSessions, getSession, upsertSession, removeSession, type SessionRecord } from '../store/session-store.js'; + import { routeMessage, type InboundMessage, type RouterContext } from '../router/message-router.js'; + import { terminalStreamer, type StreamSubscriber } from './terminal-streamer.js'; + import type { ServerLink } from './server-link.js'; + import { timelineEmitter } from './timeline-emitter.js'; + import { TimelinePreferredReadError, timelineStore } from './timeline-store.js'; + import { + recordFsWorkerMetric, + recordTimelineBudgetShape, + recordTransportListModelsStaleCompletion, + traceCommandAsync, + traceSync, + traceWebCommandReceived, + } from './latency-tracer.js'; + import { getDefaultTimelineHistoryWorkerPool, shouldUseTimelineHistoryWorkerPool, TimelineHistoryPoolError } from './timeline-history-pool.js'; + import { FsListPoolError, getDefaultFsListWorkerPool, shouldUseFsListWorkerPool } from './fs-list-pool.js'; + import { scanFsListSnapshot } from './fs-list-worker.js'; + import { FsGitStatusPoolError, getDefaultFsGitStatusWorkerPool, shouldUseFsGitStatusWorkerPool, __resetFsGitStatusWorkerPoolForTests } from './fs-git-status-pool.js'; + import { scanFsGitStatusSnapshot } from './fs-git-status-worker.js'; + import { shapeTimelineDetailValueForTransport, shapeTimelineEventsForTransport } from './timeline-response-shaper.js'; + import { getDefaultTimelineDetailStore } from './timeline-detail-store.js'; + import { TIMELINE_HISTORY_CONTENT_TYPES, TIMELINE_HISTORY_STATE_TYPES, type MemoryContextTimelinePayload, type TimelineEvent } from '../shared/timeline/types.js'; + import { emitSessionInlineError } from './session-error.js'; + import { enqueueResend, getResendEntries, clearResend } from './transport-resend-queue.js'; + import { + startSubSession, + stopSubSession, + rebuildSubSessions, + detectShells, + readSubSessionResponse, + subSessionName, + type SubSessionRecord, + } from './subsession-manager.js'; + import { sendSubSessionSync } from './subsession-sync.js'; + import logger from '../util/logger.js'; + import { getDefaultAckOutbox } from './ack-outbox.js'; + import { COMMAND_ACK_ERROR_DUPLICATE_COMMAND_ID, MSG_COMMAND_ACK } from '../../shared/ack-protocol.js'; + import { TIMELINE_PAYLOAD_BUDGET_BYTES } from '../../shared/timeline-payload-budget.js'; + import { TIMELINE_DETAIL_ERROR_REASONS, TIMELINE_HISTORY_ERROR_REASONS, TIMELINE_REQUEST_ERROR_REASONS, type TimelineRequestErrorReason } from '../../shared/timeline-history-errors.js'; + import { + TIMELINE_CURSOR_DIRECTIONS, + TIMELINE_MESSAGES, + TIMELINE_RESPONSE_SOURCES, + TIMELINE_RESPONSE_STATUS, + type TimelinePayloadMetadata, + type TimelineResponseSource, + type TimelineResponseStatus, + } from '../../shared/timeline-protocol.js'; + import { homedir } from 'os'; + import { lstat as fsLstat, open as fsOpen, readdir as fsReaddir, realpath as fsRealpath, readFile as fsReadFileRaw, stat as fsStat, unlink as fsUnlink, writeFile as fsWriteFile } from 'node:fs/promises'; + import * as nodePath from 'node:path'; + import { exec as execCb, execFile as execFileCb } from 'node:child_process'; + import { promisify } from 'node:util'; + const execAsync = promisify(execCb); + const execFileA
Secret Scan (gitleaks)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, gitleaks/gitleaks-action@v2. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Lint
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Lint: src/context/summary-compressor.ts#L240
'isRetryableError' is defined but never used
Lint: src/context/skill-registry.ts#L24
'EMPTY_SNAPSHOT' is assigned a value but never used
Lint: src/agent/runtime-context-bootstrap.ts#L22
'STARTUP_PROJECT_MEMORY_HEADER' is defined but never used
Lint: src/agent/providers/qwen.ts#L95
'_contextMessagePreamble' is assigned a value but never used
Lint: src/agent/providers/qwen.ts#L95
'_contextSystemText' is assigned a value but never used
Lint: src/agent/providers/qwen.ts#L94
'_memoryRecall' is assigned a value but never used
Lint: src/agent/providers/qwen.ts#L94
'_startupMemory' is assigned a value but never used
Lint: src/agent/providers/qwen.ts#L94
'_messagePreamble' is assigned a value but never used
Lint: src/agent/providers/qwen.ts#L94
'_systemText' is assigned a value but never used
Lint: src/agent/gemini-runtime-config.ts#L16
'err' is defined but never used
Preview Dist Smoke
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Typecheck
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Embedding Integration Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Web Tests (Components)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Server DB Integration Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Web Tests (Unit)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Server Unit Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (Windows)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (Windows ConPTY)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (Node 24)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (Node 22)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (macOS)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests (Windows)
NOTICE: windows-latest requests are being redirected to windows-2025-vs2026 by June 15, 2026
Unit Tests (Windows ConPTY)
NOTICE: windows-latest requests are being redirected to windows-2025-vs2026 by June 15, 2026

Artifacts

Produced during runtime
Name Size Digest
gitleaks-results.sarif
367 Bytes
sha256:c14c4f2f901d1108dec5955ae2a1f775fd7655e65c6499d2f5634484f9682b3b