Skip to content

Commit 5d37b20

Browse files
committed
Tests: disable vmForks on Node 24 and document override
1 parent 94763cd commit 5d37b20

3 files changed

Lines changed: 8 additions & 1 deletion

File tree

docs/help/testing.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ Think of the suites as “increasing realism” (and increasing flakiness/cost):
5252
- Runs in CI
5353
- No real keys required
5454
- Should be fast and stable
55+
- Pool note:
56+
- OpenClaw uses Vitest `vmForks` on Node 22/23 for faster unit shards.
57+
- On Node 24+, OpenClaw automatically falls back to regular `forks` to avoid Node VM linking errors (`ERR_VM_MODULE_LINK_FAILURE` / `module is already linked`).
58+
- Override manually with `OPENCLAW_TEST_VM_FORKS=0` (force `forks`) or `OPENCLAW_TEST_VM_FORKS=1` (force `vmForks`).
5559

5660
### E2E (gateway smoke)
5761

docs/reference/test.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ title: "Tests"
1111

1212
- `pnpm test:force`: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests don’t collide with a running instance. Use this when a prior gateway run left port 18789 occupied.
1313
- `pnpm test:coverage`: Runs Vitest with V8 coverage. Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic.
14+
- `pnpm test` on Node 24+: OpenClaw auto-disables Vitest `vmForks` and uses `forks` to avoid `ERR_VM_MODULE_LINK_FAILURE` / `module is already linked`. You can force behavior with `OPENCLAW_TEST_VM_FORKS=0|1`.
1415
- `pnpm test:e2e`: Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing).
1516
- `pnpm test:live`: Runs provider live tests (minimax/zai). Requires API keys and `LIVE=1` (or provider-specific `*_LIVE_TEST=1`) to unskip.
1617

scripts/test-parallel.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ const isCI = process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true";
3232
const isMacOS = process.platform === "darwin" || process.env.RUNNER_OS === "macOS";
3333
const isWindows = process.platform === "win32" || process.env.RUNNER_OS === "Windows";
3434
const isWindowsCi = isCI && isWindows;
35+
const nodeMajor = Number.parseInt(process.versions.node.split(".")[0] ?? "", 10);
36+
const supportsVmForks = Number.isFinite(nodeMajor) ? nodeMajor < 24 : true;
3537
const useVmForks =
3638
process.env.OPENCLAW_TEST_VM_FORKS === "1" ||
37-
(process.env.OPENCLAW_TEST_VM_FORKS !== "0" && !isWindows);
39+
(process.env.OPENCLAW_TEST_VM_FORKS !== "0" && !isWindows && supportsVmForks);
3840
const runs = [
3941
...(useVmForks
4042
? [

0 commit comments

Comments
 (0)