36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
|
|
const html = readFileSync("prototype/liquid-console.html", "utf8");
|
|
const js = readFileSync("prototype/liquid-console.js", "utf8");
|
|
|
|
test("页面包含四个主 screen", () => {
|
|
const screens = [...html.matchAll(/data-screen="([^"]+)"/g)].map((m) => m[1]);
|
|
assert.deepEqual(screens.sort(), ["config", "console", "log", "servermanager"].sort());
|
|
});
|
|
|
|
test("会话状态机定义完整", () => {
|
|
assert.match(js, /SESSION_STATES\s*=\s*\[/);
|
|
["idle", "connecting", "auth_pending", "connected", "reconnecting", "disconnected", "error"].forEach((state) => {
|
|
assert.ok(js.includes(`"${state}"`));
|
|
});
|
|
});
|
|
|
|
test("Codex 编排关键命令存在", () => {
|
|
assert.ok(js.includes("command -v codex"));
|
|
assert.ok(js.includes("codex --sandbox"));
|
|
});
|
|
|
|
test("插件系统关键结构存在", () => {
|
|
assert.ok(js.includes("class PluginManager"));
|
|
assert.ok(js.includes("PERMISSION_WHITELIST"));
|
|
assert.ok(js.includes("installPackage"));
|
|
assert.ok(js.includes("runPluginCommand"));
|
|
});
|
|
|
|
test("日志导出能力存在", () => {
|
|
assert.ok(js.includes("exportSessionLogs"));
|
|
assert.ok(js.includes("maskSensitive"));
|
|
});
|