refactor: move plugin setup and memory capabilities to registries

This commit is contained in:
Peter Steinberger
2026-04-05 14:43:29 +01:00
parent 695c9c887b
commit 629baf5fa7
76 changed files with 1300 additions and 298 deletions

View File

@@ -0,0 +1,58 @@
import type { Server } from "node:http";
import { beforeEach, describe, expect, it, vi } from "vitest";
const loadActivatedBundledPluginPublicSurfaceModuleSync = vi.hoisted(() => vi.fn());
vi.mock("./facade-runtime.js", () => ({
loadActivatedBundledPluginPublicSurfaceModuleSync,
}));
describe("browser bridge facade", () => {
beforeEach(() => {
loadActivatedBundledPluginPublicSurfaceModuleSync.mockReset();
});
it("stays cold until a bridge function is called", async () => {
await import("./browser-bridge.js");
expect(loadActivatedBundledPluginPublicSurfaceModuleSync).not.toHaveBeenCalled();
});
it("delegates bridge lifecycle calls through the activated runtime facade", async () => {
const bridge = {
server: {} as Server,
port: 19001,
baseUrl: "http://127.0.0.1:19001",
state: {
resolved: {
enabled: true,
},
},
};
const startBrowserBridgeServer = vi.fn(async () => bridge);
const stopBrowserBridgeServer = vi.fn(async () => undefined);
loadActivatedBundledPluginPublicSurfaceModuleSync.mockReturnValue({
startBrowserBridgeServer,
stopBrowserBridgeServer,
});
const facade = await import("./browser-bridge.js");
await expect(
facade.startBrowserBridgeServer({
resolved: bridge.state.resolved as never,
authToken: "token",
}),
).resolves.toEqual(bridge);
await expect(facade.stopBrowserBridgeServer(bridge.server)).resolves.toBeUndefined();
expect(loadActivatedBundledPluginPublicSurfaceModuleSync).toHaveBeenCalledWith({
dirName: "browser",
artifactBasename: "runtime-api.js",
});
expect(startBrowserBridgeServer).toHaveBeenCalledWith({
resolved: bridge.state.resolved,
authToken: "token",
});
expect(stopBrowserBridgeServer).toHaveBeenCalledWith(bridge.server);
});
});