import assert from "node:assert/strict"; import { mkdtemp, mkdir, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { describe, it } from "node:test"; import { resolveWebAutomationRuntime } from "../src/web-automation-runtime.js"; async function createRuntime() { const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-")); await writeFile(join(dir, "check-install.js"), "console.log('ok');\n"); await writeFile(join(dir, "package.json"), "{\"type\":\"module\"}\n"); await mkdir(join(dir, "node_modules", ".bin"), { recursive: true }); await writeFile(join(dir, "node_modules", ".bin", "tsx"), "#!/usr/bin/env node\n"); return dir; } describe("resolveWebAutomationRuntime", () => { it("uses AMAZON_SHOPPING_WEB_AUTOMATION_DIR first", async () => { const runtimeDir = await createRuntime(); const resolved = await resolveWebAutomationRuntime({ env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: runtimeDir }, homeDir: "/missing-home", skillDir: "/missing-skill" }); assert.equal(resolved.scriptsDir, runtimeDir); assert.deepEqual(resolved.checkInstall, { cwd: runtimeDir, command: "node", args: ["check-install.js"] }); }); it("returns a clear error when required files are missing", async () => { const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-missing-")); await assert.rejects( () => resolveWebAutomationRuntime({ env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: dir }, homeDir: "/missing-home", skillDir: "/missing-skill" }), /check-install.js/ ); }); });