From 8ecb6bbb12dab0d1d3367d8092511de10acbc875 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Thu, 16 Apr 2026 02:39:52 -0400 Subject: [PATCH] QA: accept nodejs as Node runtime --- extensions/qa-lab/src/node-exec.test.ts | 13 +++++++++++++ extensions/qa-lab/src/node-exec.ts | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/extensions/qa-lab/src/node-exec.test.ts b/extensions/qa-lab/src/node-exec.test.ts index 58572d6bb79..fcd87bb481f 100644 --- a/extensions/qa-lab/src/node-exec.test.ts +++ b/extensions/qa-lab/src/node-exec.test.ts @@ -12,6 +12,19 @@ describe("resolveQaNodeExecPath", () => { ).resolves.toBe("/opt/homebrew/bin/node"); }); + it("reuses nodejs as a valid current Node executable", async () => { + await expect( + resolveQaNodeExecPath({ + execPath: "/usr/bin/nodejs", + platform: "linux", + versions: { ...process.versions, bun: undefined }, + execFileImpl: async () => { + throw new Error("should not search PATH"); + }, + }), + ).resolves.toBe("/usr/bin/nodejs"); + }); + it("resolves node from PATH when the parent runtime is bun", async () => { await expect( resolveQaNodeExecPath({ diff --git a/extensions/qa-lab/src/node-exec.ts b/extensions/qa-lab/src/node-exec.ts index dfc7571c2f3..0e887d0af53 100644 --- a/extensions/qa-lab/src/node-exec.ts +++ b/extensions/qa-lab/src/node-exec.ts @@ -16,7 +16,12 @@ const execFileAsync = promisify(execFile) as unknown as ExecFileAsync; function isNodeExecPath(execPath: string, platform: NodeJS.Platform): boolean { const pathModule = platform === "win32" ? path.win32 : path.posix; const basename = pathModule.basename(execPath).toLowerCase(); - return basename === "node" || basename === "node.exe"; + return ( + basename === "node" || + basename === "node.exe" || + basename === "nodejs" || + basename === "nodejs.exe" + ); } export async function resolveQaNodeExecPath(params?: {