mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-31 14:13:32 +00:00
refactor(diffs): share artifact detail and screenshot test helpers
This commit is contained in:
@@ -35,19 +35,7 @@ describe("PlaywrightDiffScreenshotter", () => {
|
||||
});
|
||||
|
||||
it("reuses the same browser across renders and closes it after the idle window", async () => {
|
||||
const pages: Array<{
|
||||
close: ReturnType<typeof vi.fn>;
|
||||
screenshot: ReturnType<typeof vi.fn>;
|
||||
pdf: ReturnType<typeof vi.fn>;
|
||||
}> = [];
|
||||
const browser = createMockBrowser(pages);
|
||||
launchMock.mockResolvedValue(browser);
|
||||
const { PlaywrightDiffScreenshotter } = await import("./browser.js");
|
||||
|
||||
const screenshotter = new PlaywrightDiffScreenshotter({
|
||||
config: createConfig(),
|
||||
browserIdleMs: 1_000,
|
||||
});
|
||||
const { pages, browser, screenshotter } = await createScreenshotterHarness();
|
||||
|
||||
await screenshotter.screenshotHtml({
|
||||
html: '<html><head></head><body><main class="oc-frame"></main></body></html>',
|
||||
@@ -106,19 +94,7 @@ describe("PlaywrightDiffScreenshotter", () => {
|
||||
});
|
||||
|
||||
it("renders PDF output when format is pdf", async () => {
|
||||
const pages: Array<{
|
||||
close: ReturnType<typeof vi.fn>;
|
||||
screenshot: ReturnType<typeof vi.fn>;
|
||||
pdf: ReturnType<typeof vi.fn>;
|
||||
}> = [];
|
||||
const browser = createMockBrowser(pages);
|
||||
launchMock.mockResolvedValue(browser);
|
||||
const { PlaywrightDiffScreenshotter } = await import("./browser.js");
|
||||
|
||||
const screenshotter = new PlaywrightDiffScreenshotter({
|
||||
config: createConfig(),
|
||||
browserIdleMs: 1_000,
|
||||
});
|
||||
const { pages, browser, screenshotter } = await createScreenshotterHarness();
|
||||
const pdfPath = path.join(rootDir, "preview.pdf");
|
||||
|
||||
await screenshotter.screenshotHtml({
|
||||
@@ -184,19 +160,7 @@ describe("PlaywrightDiffScreenshotter", () => {
|
||||
});
|
||||
|
||||
it("fails fast when maxPixels is still exceeded at scale 1", async () => {
|
||||
const pages: Array<{
|
||||
close: ReturnType<typeof vi.fn>;
|
||||
screenshot: ReturnType<typeof vi.fn>;
|
||||
pdf: ReturnType<typeof vi.fn>;
|
||||
}> = [];
|
||||
const browser = createMockBrowser(pages);
|
||||
launchMock.mockResolvedValue(browser);
|
||||
const { PlaywrightDiffScreenshotter } = await import("./browser.js");
|
||||
|
||||
const screenshotter = new PlaywrightDiffScreenshotter({
|
||||
config: createConfig(),
|
||||
browserIdleMs: 1_000,
|
||||
});
|
||||
const { pages, screenshotter } = await createScreenshotterHarness();
|
||||
|
||||
await expect(
|
||||
screenshotter.screenshotHtml({
|
||||
@@ -225,6 +189,24 @@ function createConfig(): OpenClawConfig {
|
||||
} as OpenClawConfig;
|
||||
}
|
||||
|
||||
async function createScreenshotterHarness(options?: {
|
||||
boundingBox?: { x: number; y: number; width: number; height: number };
|
||||
}) {
|
||||
const pages: Array<{
|
||||
close: ReturnType<typeof vi.fn>;
|
||||
screenshot: ReturnType<typeof vi.fn>;
|
||||
pdf: ReturnType<typeof vi.fn>;
|
||||
}> = [];
|
||||
const browser = createMockBrowser(pages, options);
|
||||
launchMock.mockResolvedValue(browser);
|
||||
const { PlaywrightDiffScreenshotter } = await import("./browser.js");
|
||||
const screenshotter = new PlaywrightDiffScreenshotter({
|
||||
config: createConfig(),
|
||||
browserIdleMs: 1_000,
|
||||
});
|
||||
return { pages, browser, screenshotter };
|
||||
}
|
||||
|
||||
function createMockBrowser(
|
||||
pages: Array<{
|
||||
close: ReturnType<typeof vi.fn>;
|
||||
|
||||
Reference in New Issue
Block a user