71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { spawn } from "node:child_process";
|
|
import path from "node:path";
|
|
|
|
const repoRoot = path.resolve(import.meta.dirname, "..");
|
|
|
|
function runRuntime(payload, env = {}) {
|
|
return new Promise((resolve) => {
|
|
const child = spawn(process.execPath, ["scripts/ssh-computer-use-smoke.mjs"], {
|
|
cwd: repoRoot,
|
|
env: {
|
|
...process.env,
|
|
...env,
|
|
},
|
|
stdio: ["pipe", "pipe", "pipe"],
|
|
});
|
|
let stdout = "";
|
|
let stderr = "";
|
|
child.stdout.setEncoding("utf8");
|
|
child.stderr.setEncoding("utf8");
|
|
child.stdout.on("data", (chunk) => {
|
|
stdout += chunk;
|
|
});
|
|
child.stderr.on("data", (chunk) => {
|
|
stderr += chunk;
|
|
});
|
|
child.on("close", (status) => {
|
|
resolve({ status, stdout, stderr });
|
|
});
|
|
child.stdin.end(JSON.stringify(payload));
|
|
});
|
|
}
|
|
|
|
test("ssh computer use runtime returns a dry-run desktop control summary", async () => {
|
|
const result = await runRuntime(
|
|
{
|
|
requestKind: "desktop_control",
|
|
requestId: "ssh-dry-run-1",
|
|
objective: "打开 Chrome 输入“Boss 远程控制测试”",
|
|
},
|
|
{
|
|
BOSS_SSH_CONTROL_HOST: "192.168.31.114",
|
|
BOSS_SSH_CONTROL_USER: "jas",
|
|
BOSS_SSH_CONTROL_DRY_RUN: "true",
|
|
},
|
|
);
|
|
|
|
assert.equal(result.status, 0, result.stderr);
|
|
const payload = JSON.parse(result.stdout);
|
|
assert.equal(payload.status, "completed");
|
|
assert.equal(payload.requestId, "ssh-dry-run-1");
|
|
assert.equal(payload.targetApp, "Chrome");
|
|
assert.equal(payload.typedText, "Boss 远程控制测试");
|
|
assert.match(payload.replyBody, /SSH 桌面控制已完成/);
|
|
});
|
|
|
|
test("ssh computer use runtime fails closed when host is missing", async () => {
|
|
const result = await runRuntime({
|
|
requestKind: "desktop_control",
|
|
requestId: "ssh-missing-host",
|
|
objective: "打开 Finder",
|
|
});
|
|
|
|
assert.equal(result.status, 0, result.stderr);
|
|
const payload = JSON.parse(result.stdout);
|
|
assert.equal(payload.status, "failed");
|
|
assert.equal(payload.requestId, "ssh-missing-host");
|
|
assert.equal(payload.error, "SSH_CONTROL_HOST_REQUIRED");
|
|
});
|