Skip to content

Commit d011040

Browse files
bpamiriclaude
andauthored
ci(config): pin verify-docs harness tests to node 20 (#2178) (#2193)
Node 22's test-runner workers on Linuxbrew return spawn ENOENT on every absolute path, which previously forced the harness step to soft-fail and silently green regressions. Pin the harness unit tests to Node 20; Node 22 is restored for the main content gate (Verify v4 docs) and the guides build. Keeping continue-on-error: true on the harness step for now — with Node 20 the spawns work, which surfaces 7 pre-existing tutorial-driver failures (blog-tutorial fixture's lucee.json is no longer emitted by `wheels new`). Follow-up issue will fix the fixture; once fixed, drop continue-on-error so regressions fail CI as originally intended. Refs #2178 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 852d0e9 commit d011040

1 file changed

Lines changed: 30 additions & 7 deletions

File tree

.github/workflows/docs-verify.yml

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,43 @@ jobs:
7070
# the harness spawns `wheels`.
7171
run: wheels --version >/dev/null
7272

73+
- name: Set up Node.js (harness tests)
74+
# Pin Node 20 for the harness unit tests only. Node 22's test-runner
75+
# workers on Linuxbrew return spawn ENOENT on EVERY absolute path —
76+
# including /bin/bash itself — even when statSync/accessSync confirm
77+
# the file is executable and spawnable from the main process. Node 20
78+
# is unaffected. Tracked as issue #2178 (workaround pending upstream
79+
# Node fix). The main content gate (Verify v4 docs) continues on
80+
# Node 22 below.
81+
uses: actions/setup-node@v4
82+
with:
83+
node-version: 20
84+
cache: pnpm
85+
cache-dependency-path: web/pnpm-lock.yaml
86+
7387
- name: Run harness unit tests
7488
working-directory: web/sites/guides
75-
# Soft-fail: Node 22 test-runner workers on Linuxbrew return spawn
76-
# ENOENT on EVERY absolute path — including /bin/bash itself — even
77-
# when statSync/accessSync confirm the file is regular, executable,
78-
# and /bin/bash is spawnable from the main process. Node bug we
79-
# couldn't pin down despite ~25 rounds of debugging. Tests pass
80-
# locally; the actual content verification (Verify v4 docs below)
81-
# uses a single main process and is unaffected.
89+
# Runs on Node 20 to avoid the Node 22 spawn ENOENT bug (see the
90+
# "Set up Node.js (harness tests)" step above). Ref #2178.
91+
#
92+
# Still soft-fail for now: with Node 20 the spawns work, which
93+
# surfaces 7 pre-existing tutorial-driver failures (blog-tutorial
94+
# fixture's lucee.json is no longer emitted by `wheels new`).
95+
# Tracked separately — once fixtures are fixed, drop
96+
# continue-on-error so regressions fail CI as originally intended.
8297
continue-on-error: true
8398
run: |
8499
export LUCLI_HOME="$HOME/.wheels"
85100
pnpm test:docs-harness
86101
102+
- name: Set up Node.js (main)
103+
# Restore Node 22 for the content gate and the guides build below.
104+
uses: actions/setup-node@v4
105+
with:
106+
node-version: 22
107+
cache: pnpm
108+
cache-dependency-path: web/pnpm-lock.yaml
109+
87110
- name: Verify v4 docs
88111
working-directory: web/sites/guides
89112
# Soft-fail: at 290 tagged blocks / 4-way concurrency, LuCLI's

0 commit comments

Comments
 (0)