import { beforeEach, describe, expect, it, vi } from "vitest" ;
const closeTrackedBrowserTabsForSessionsImpl = vi.hoisted(() => vi.fn());
const loadBundledPluginPublicSurfaceModuleSync = vi.hoisted(() => vi.fn());
const runExec = vi.hoisted(() => vi.fn());
vi.mock("./facade-loader.js" , () => ({
loadBundledPluginPublicSurfaceModuleSync,
}));
vi.mock("../process/exec.js" , () => ({
runExec,
}));
describe("browser maintenance" , () => {
beforeEach(() => {
closeTrackedBrowserTabsForSessionsImpl.mockReset();
loadBundledPluginPublicSurfaceModuleSync.mockReset();
runExec.mockReset();
loadBundledPluginPublicSurfaceModuleSync.mockReturnValue({
closeTrackedBrowserTabsForSessions: closeTrackedBrowserTabsForSessionsImpl,
});
});
it("skips browser cleanup when no session keys are provided" , async () => {
const { closeTrackedBrowserTabsForSessions } = await import ("./browser-maintenance.js" );
await expect(closeTrackedBrowserTabsForSessions({ sessionKeys: [] })).resolves.toBe(0 );
expect(loadBundledPluginPublicSurfaceModuleSync).not.toHaveBeenCalled();
});
it("delegates cleanup through the browser maintenance surface" , async () => {
closeTrackedBrowserTabsForSessionsImpl.mockResolvedValue(2 );
const { closeTrackedBrowserTabsForSessions } = await import ("./browser-maintenance.js" );
await expect(
closeTrackedBrowserTabsForSessions({ sessionKeys: ["agent:main:test" ] }),
).resolves.toBe(2 );
expect(loadBundledPluginPublicSurfaceModuleSync).toHaveBeenCalledWith({
dirName: "browser" ,
artifactBasename: "browser-maintenance.js" ,
});
expect(closeTrackedBrowserTabsForSessionsImpl).toHaveBeenCalledWith({
sessionKeys: ["agent:main:test" ],
});
});
it("uses the local trash command before falling back" , async () => {
runExec.mockResolvedValue({
stdout: "" ,
stderr: "" ,
code: 0 ,
signal: null ,
});
const { movePathToTrash } = await import ("./browser-maintenance.js" );
await expect(movePathToTrash("/tmp/demo" )).resolves.toBe("/tmp/demo" );
expect(runExec).toHaveBeenCalledWith("trash" , ["/tmp/demo" ], { timeoutMs: 10 _000 });
});
});
Messung V0.5 in Prozent C=94 H=73 G=83
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland