Files
openclaw/test/helpers/browser-bundled-plugin-fixture.ts
2026-03-28 08:34:18 +00:00

69 lines
1.7 KiB
TypeScript

import fs from "node:fs";
import os from "node:os";
import path from "node:path";
const BROWSER_FIXTURE_MANIFEST = {
id: "browser",
configSchema: {
type: "object",
additionalProperties: false,
properties: {},
},
};
const BROWSER_FIXTURE_ENTRY = `module.exports = {
id: "browser",
name: "Browser",
description: "Bundled browser fixture plugin",
configSchema: {
type: "object",
additionalProperties: false,
properties: {},
},
register(api) {
api.registerTool(() => ({
name: "browser",
label: "browser",
description: "browser fixture tool",
parameters: {
type: "object",
properties: {},
},
async execute() {
return {
content: [{ type: "text", text: "ok" }],
details: {},
};
},
}));
api.registerCli(({ program }) => {
program.command("browser");
}, { commands: ["browser"] });
api.registerGatewayMethod("browser.request", async () => ({ ok: true }), {
scope: "operator.write",
});
api.registerService({
id: "browser-control",
start() {},
});
},
};`;
export function createBundledBrowserPluginFixture(): { rootDir: string; cleanup: () => void } {
const rootDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-browser-bundled-"));
const pluginDir = path.join(rootDir, "browser");
fs.mkdirSync(pluginDir, { recursive: true });
fs.writeFileSync(
path.join(pluginDir, "openclaw.plugin.json"),
JSON.stringify(BROWSER_FIXTURE_MANIFEST, null, 2),
"utf8",
);
fs.writeFileSync(path.join(pluginDir, "index.js"), BROWSER_FIXTURE_ENTRY, "utf8");
return {
rootDir,
cleanup() {
fs.rmSync(rootDir, { recursive: true, force: true });
},
};
}