feat: ship enterprise control and desktop governance
This commit is contained in:
61
tests/device-computer-control-capabilities.test.ts
Normal file
61
tests/device-computer-control-capabilities.test.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { mkdtemp, rm } from "node:fs/promises";
|
||||
|
||||
let runtimeRoot = "";
|
||||
let readState: (typeof import("../src/lib/boss-data"))["readState"];
|
||||
let writeState: (typeof import("../src/lib/boss-data"))["writeState"];
|
||||
let getDeviceWorkspaceView: (typeof import("../src/lib/boss-projections"))["getDeviceWorkspaceView"];
|
||||
let buildDeviceWorkspaceDetailCards: (typeof import("../src/components/app-ui"))["buildDeviceWorkspaceDetailCards"];
|
||||
|
||||
async function setup() {
|
||||
if (runtimeRoot) return;
|
||||
|
||||
runtimeRoot = await mkdtemp(path.join(os.tmpdir(), "boss-device-computer-control-capabilities-"));
|
||||
process.env.BOSS_RUNTIME_ROOT = runtimeRoot;
|
||||
process.env.BOSS_STATE_FILE = path.join(runtimeRoot, "boss-state.json");
|
||||
|
||||
const [data, projections, ui] = await Promise.all([
|
||||
import("../src/lib/boss-data.ts"),
|
||||
import("../src/lib/boss-projections.ts"),
|
||||
import("../src/components/app-ui.tsx"),
|
||||
]);
|
||||
|
||||
readState = data.readState;
|
||||
writeState = data.writeState;
|
||||
getDeviceWorkspaceView = projections.getDeviceWorkspaceView;
|
||||
buildDeviceWorkspaceDetailCards = ui.buildDeviceWorkspaceDetailCards;
|
||||
}
|
||||
|
||||
test.after(async () => {
|
||||
if (runtimeRoot) {
|
||||
await rm(runtimeRoot, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test("device detail exposes browser automation and computer use capability state", async () => {
|
||||
await setup();
|
||||
|
||||
const state = await readState();
|
||||
const macStudio = state.devices.find((device) => device.id === "mac-studio");
|
||||
assert.ok(macStudio, "expected seeded mac-studio");
|
||||
macStudio.capabilities.browserAutomation = {
|
||||
connected: true,
|
||||
lastSeenAt: "2026-04-22T10:00:00.000Z",
|
||||
lastActiveProjectId: "master-agent",
|
||||
};
|
||||
macStudio.capabilities.computerUse = {
|
||||
connected: false,
|
||||
lastSeenAt: "2026-04-22T10:00:00.000Z",
|
||||
lastActiveProjectId: "",
|
||||
};
|
||||
await writeState(state);
|
||||
|
||||
const workspace = getDeviceWorkspaceView(await readState(), "mac-studio");
|
||||
const cards = buildDeviceWorkspaceDetailCards(workspace);
|
||||
|
||||
assert.equal(cards.capabilities.items.browserAutomation, "浏览器自动化:已连接");
|
||||
assert.equal(cards.capabilities.items.computerUse, "桌面控制:未连接");
|
||||
});
|
||||
Reference in New Issue
Block a user