67 lines
2.5 KiB
TypeScript
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
|
|
);
|
|
});
|
|
});
|