test.scripts/core/coordinators/viewport.coordinator.test.ts
test.scripts/core/coordinators/viewport.coordinator.test.ts is a file in Codebase Testing. 34 lines of code and 0 definitions.
import { describe, expect, it, vi } from "vitest";
import { mkdirSync, mkdtempSync } from "node:fs";
import type { ViewportOptions } from "@project/scripts/types/viewport.types.ts";
import { auditRoutes } from "@project/scripts/core/coordinators/viewport.coordinator.ts";
import { join } from "node:path";
import { launchBrowser } from "@banes-lab/build-scripts/core/factories/browser.factory.ts";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";
vi.mock("@banes-lab/build-scripts/core/factories/browser.factory.ts", async (importOriginal) => ({
...(await importOriginal<Record<string, unknown>>()),
launchBrowser: vi.fn(() => ({ close: vi.fn<() => Promise<void>>().mockResolvedValue(), exitCode: () => null })),
}));
const builtSite = function builtSite(): string {
const root = mkdtempSync(join(tmpdir(), "viewport-site-"));
mkdirSync(root, { recursive: true });
writeVerbatim(join(root, "index.html"), "home");
return root;
};
const options: ViewportOptions = {
browser: null,
height: 1,
outDir: mkdtempSync(join(tmpdir(), "viewport-run-")),
routes: [],
settleMs: 0,
software: true,
timeoutMs: 0,
width: 1,
};
describe("auditRoutes", () => {
it("stops the browser and reports failure when devtools never answers", async () => {
await expect(auditRoutes("browser", options, builtSite(), ["/"])).resolves.toBe(false);
expect(launchBrowser).toHaveBeenCalled();
});
});