mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:50:43 +00:00
perf(test): narrow plugin activation boundary
This commit is contained in:
@@ -2,13 +2,6 @@ import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
const loadBundledPluginPublicSurfaceModuleSync = vi.hoisted(() =>
|
||||
vi.fn((params: { artifactBasename: string }) => {
|
||||
if (params.artifactBasename === "browser-control-auth.js") {
|
||||
return {
|
||||
ensureBrowserControlAuth: async () => ({ auth: {} }),
|
||||
resolveBrowserControlAuth: () => ({ token: undefined, password: undefined }),
|
||||
shouldAutoGenerateBrowserAuth: () => false,
|
||||
};
|
||||
}
|
||||
if (params.artifactBasename === "browser-host-inspection.js") {
|
||||
return {
|
||||
parseBrowserMajorVersion: (raw: string | null | undefined) => {
|
||||
@@ -19,45 +12,6 @@ const loadBundledPluginPublicSurfaceModuleSync = vi.hoisted(() =>
|
||||
resolveGoogleChromeExecutableForPlatform: () => null,
|
||||
};
|
||||
}
|
||||
if (params.artifactBasename === "browser-profiles.js") {
|
||||
return {
|
||||
resolveBrowserConfig: () => ({
|
||||
attachOnly: false,
|
||||
cdpHost: "127.0.0.1",
|
||||
cdpIsLoopback: true,
|
||||
cdpPortRangeEnd: 9420,
|
||||
cdpPortRangeStart: 9222,
|
||||
cdpProtocol: "http",
|
||||
color: "#FF4500",
|
||||
controlPort: 9223,
|
||||
defaultProfile: "openclaw",
|
||||
enabled: true,
|
||||
evaluateEnabled: true,
|
||||
extraArgs: [],
|
||||
headless: true,
|
||||
noSandbox: false,
|
||||
profiles: {
|
||||
openclaw: {
|
||||
color: "#FF4500",
|
||||
driver: "openclaw",
|
||||
name: "openclaw",
|
||||
},
|
||||
},
|
||||
remoteCdpHandshakeTimeoutMs: 3000,
|
||||
remoteCdpTimeoutMs: 1500,
|
||||
}),
|
||||
resolveProfile: () => ({
|
||||
attachOnly: false,
|
||||
cdpHost: "127.0.0.1",
|
||||
cdpIsLoopback: true,
|
||||
cdpPort: 9222,
|
||||
cdpUrl: "http://127.0.0.1:9222",
|
||||
color: "#FF4500",
|
||||
driver: "openclaw",
|
||||
name: "openclaw",
|
||||
}),
|
||||
};
|
||||
}
|
||||
throw new Error(`unexpected public surface load: ${params.artifactBasename}`);
|
||||
}),
|
||||
);
|
||||
@@ -113,19 +67,7 @@ describe("plugin activation boundary", () => {
|
||||
| undefined;
|
||||
let browserHelpersPromise:
|
||||
| Promise<{
|
||||
DEFAULT_AI_SNAPSHOT_MAX_CHARS: typeof import("./plugin-sdk/browser-config.js").DEFAULT_AI_SNAPSHOT_MAX_CHARS;
|
||||
DEFAULT_BROWSER_EVALUATE_ENABLED: typeof import("./plugin-sdk/browser-config.js").DEFAULT_BROWSER_EVALUATE_ENABLED;
|
||||
DEFAULT_OPENCLAW_BROWSER_COLOR: typeof import("./plugin-sdk/browser-config.js").DEFAULT_OPENCLAW_BROWSER_COLOR;
|
||||
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME: typeof import("./plugin-sdk/browser-config.js").DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME;
|
||||
DEFAULT_UPLOAD_DIR: typeof import("./plugin-sdk/browser-config.js").DEFAULT_UPLOAD_DIR;
|
||||
closeTrackedBrowserTabsForSessions: typeof import("./plugin-sdk/browser-maintenance.js").closeTrackedBrowserTabsForSessions;
|
||||
parseBrowserMajorVersion: typeof import("./plugin-sdk/browser-host-inspection.js").parseBrowserMajorVersion;
|
||||
redactCdpUrl: typeof import("./plugin-sdk/browser-config.js").redactCdpUrl;
|
||||
readBrowserVersion: typeof import("./plugin-sdk/browser-host-inspection.js").readBrowserVersion;
|
||||
resolveBrowserConfig: typeof import("./plugin-sdk/browser-config.js").resolveBrowserConfig;
|
||||
resolveBrowserControlAuth: typeof import("./plugin-sdk/browser-config.js").resolveBrowserControlAuth;
|
||||
resolveGoogleChromeExecutableForPlatform: typeof import("./plugin-sdk/browser-host-inspection.js").resolveGoogleChromeExecutableForPlatform;
|
||||
resolveProfile: typeof import("./plugin-sdk/browser-config.js").resolveProfile;
|
||||
}>
|
||||
| undefined;
|
||||
function importConfigHelpers() {
|
||||
@@ -145,25 +87,11 @@ describe("plugin activation boundary", () => {
|
||||
}
|
||||
|
||||
function importBrowserHelpers() {
|
||||
browserHelpersPromise ??= Promise.all([
|
||||
import("./plugin-sdk/browser-config.js"),
|
||||
import("./plugin-sdk/browser-host-inspection.js"),
|
||||
import("./plugin-sdk/browser-maintenance.js"),
|
||||
]).then(([config, inspection, maintenance]) => ({
|
||||
DEFAULT_AI_SNAPSHOT_MAX_CHARS: config.DEFAULT_AI_SNAPSHOT_MAX_CHARS,
|
||||
DEFAULT_BROWSER_EVALUATE_ENABLED: config.DEFAULT_BROWSER_EVALUATE_ENABLED,
|
||||
DEFAULT_OPENCLAW_BROWSER_COLOR: config.DEFAULT_OPENCLAW_BROWSER_COLOR,
|
||||
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME: config.DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
|
||||
DEFAULT_UPLOAD_DIR: config.DEFAULT_UPLOAD_DIR,
|
||||
closeTrackedBrowserTabsForSessions: maintenance.closeTrackedBrowserTabsForSessions,
|
||||
parseBrowserMajorVersion: inspection.parseBrowserMajorVersion,
|
||||
redactCdpUrl: config.redactCdpUrl,
|
||||
readBrowserVersion: inspection.readBrowserVersion,
|
||||
resolveBrowserConfig: config.resolveBrowserConfig,
|
||||
resolveBrowserControlAuth: config.resolveBrowserControlAuth,
|
||||
resolveGoogleChromeExecutableForPlatform: inspection.resolveGoogleChromeExecutableForPlatform,
|
||||
resolveProfile: config.resolveProfile,
|
||||
}));
|
||||
browserHelpersPromise ??= import("./plugin-sdk/browser-host-inspection.js").then(
|
||||
(inspection) => ({
|
||||
parseBrowserMajorVersion: inspection.parseBrowserMajorVersion,
|
||||
}),
|
||||
);
|
||||
return browserHelpersPromise;
|
||||
}
|
||||
|
||||
@@ -200,37 +128,12 @@ describe("plugin activation boundary", () => {
|
||||
|
||||
const browser = await importBrowserHelpers();
|
||||
|
||||
expect(browser.DEFAULT_AI_SNAPSHOT_MAX_CHARS).toBe(80_000);
|
||||
expect(browser.DEFAULT_BROWSER_EVALUATE_ENABLED).toBe(true);
|
||||
expect(browser.DEFAULT_OPENCLAW_BROWSER_COLOR).toBe("#FF4500");
|
||||
expect(browser.DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME).toBe("openclaw");
|
||||
expect(browser.DEFAULT_UPLOAD_DIR).toContain("uploads");
|
||||
expect(loadBundledPluginPublicSurfaceModuleSync).not.toHaveBeenCalled();
|
||||
expect(browser.parseBrowserMajorVersion("Google Chrome 144.0.7534.0")).toBe(144);
|
||||
expect(browser.resolveBrowserControlAuth({}, {} as NodeJS.ProcessEnv)).toEqual({
|
||||
token: undefined,
|
||||
password: undefined,
|
||||
});
|
||||
const resolved = browser.resolveBrowserConfig(undefined, {});
|
||||
expect(browser.resolveProfile(resolved, "openclaw")).toEqual(
|
||||
expect.objectContaining({
|
||||
name: "openclaw",
|
||||
cdpHost: "127.0.0.1",
|
||||
}),
|
||||
);
|
||||
expect(
|
||||
browser.redactCdpUrl("wss://user:secret@example.com/devtools/browser/123"),
|
||||
).not.toContain("secret");
|
||||
expect(browser.readBrowserVersion("/path/that/does/not/exist")).toBeNull();
|
||||
expect(browser.resolveGoogleChromeExecutableForPlatform("aix")).toBeNull();
|
||||
expect(
|
||||
loadBundledPluginPublicSurfaceModuleSync.mock.calls.map(
|
||||
([params]) => params.artifactBasename,
|
||||
),
|
||||
).toEqual(["browser-host-inspection.js", "browser-control-auth.js", "browser-profiles.js"]);
|
||||
|
||||
loadBundledPluginPublicSurfaceModuleSync.mockReset();
|
||||
await expect(browser.closeTrackedBrowserTabsForSessions({ sessionKeys: [] })).resolves.toBe(0);
|
||||
expect(loadBundledPluginPublicSurfaceModuleSync).not.toHaveBeenCalled();
|
||||
).toEqual(["browser-host-inspection.js"]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user