Files
suaveplan/packages/devtools/tooling/test-vite/src/vitest-browser-config/vitest-browser-config.test.ts
2026-05-27 23:47:53 +01:00

67 lines
2.5 KiB
TypeScript

import { describe, expect, it } from "@suaveplan/testing/runner";
import { TEST_VITE_CODES, TestViteError } from "../error-codes/error-codes.js";
import { createVitestBrowserConfig } from "./vitest-browser-config.js";
describe("createVitestBrowserConfig", () => {
it("works with no arguments", { timeout: 5000 }, () => {
const config = createVitestBrowserConfig();
expect(config.test?.fileParallelism).toBe(false);
});
it("accepts a custom provider override", { timeout: 5000 }, () => {
const provider = { name: "custom" };
const config = createVitestBrowserConfig({ provider });
const browser = config.test?.browser as { provider?: unknown };
expect(browser.provider).toBe(provider);
});
it("defaults to chromium headless with fileParallelism off", {
timeout: 5000,
}, () => {
const config = createVitestBrowserConfig({});
const browser = config.test?.browser as {
provider?: { name?: string };
headless?: boolean;
instances?: Array<{ browser: string }>;
};
expect(browser.provider?.name).toBe("playwright");
expect(browser.headless).toBe(true);
expect(browser.instances?.[0]?.browser).toBe("chromium");
expect(config.test?.fileParallelism).toBe(false);
});
it("accepts multi-browser matrix", { timeout: 5000 }, () => {
const config = createVitestBrowserConfig({
browsers: ["chromium", "firefox", "webkit"],
headless: false,
setupFiles: ["./setup.ts"],
include: ["custom/**/*.test.ts"],
});
const browser = config.test?.browser as {
instances?: Array<{ browser: string }>;
headless?: boolean;
};
expect(browser.instances?.map((entry) => entry.browser)).toEqual([
"chromium",
"firefox",
"webkit",
]);
expect(browser.headless).toBe(false);
expect(config.test?.setupFiles).toEqual(["./setup.ts"]);
expect(config.test?.include).toEqual(["custom/**/*.test.ts"]);
});
it("throws INVALID_OPTIONS on empty browsers", { timeout: 5000 }, () => {
let captured: unknown;
try {
createVitestBrowserConfig({ browsers: [] });
} catch (err) {
captured = err;
}
expect(captured).toBeInstanceOf(TestViteError);
expect((captured as TestViteError).code).toBe(
TEST_VITE_CODES.INVALID_OPTIONS
);
});
});