pokerogue/vitest.config.ts
Bertie690 76d163e666
[Test] Moved test setup code to its own folder (#6297)
* Made default boilerplate show off some test utils

* Moved all the setup files into their own folder

* fixed relative path bug

* Update i18n.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-09-10 14:13:48 -05:00

85 lines
2.2 KiB
TypeScript

import { defineConfig } from "vitest/config";
import { BaseSequencer, type TestSpecification } from "vitest/node";
import { defaultConfig } from "./vite.config";
export default defineConfig(({ mode }) => ({
...defaultConfig,
test: {
reporters: process.env.GITHUB_ACTIONS
? ["github-actions", "./test/test-utils/reporters/custom-default-reporter.ts"]
: ["./test/test-utils/reporters/custom-default-reporter.ts"],
env: {
TZ: "UTC",
},
testTimeout: 20_000,
slowTestThreshold: 10_000,
// TODO: Consider enabling
// expect: {requireAssertions: true},
setupFiles: ["./test/setup/font-face.setup.ts", "./test/setup/vitest.setup.ts", "./test/setup/matchers.setup.ts"],
sequence: {
sequencer: MySequencer,
},
includeTaskLocation: true,
environment: "jsdom" as const,
environmentOptions: {
jsdom: {
resources: "usable",
},
},
typecheck: {
tsconfig: "tsconfig.json",
include: ["./test/types/**/*.{test,spec}{-|.}d.ts"],
},
threads: false,
trace: true,
restoreMocks: true,
watch: false,
coverage: {
provider: "istanbul" as const,
reportsDirectory: "coverage" as const,
reporters: ["text-summary", "html"],
},
name: "main",
include: ["./test/**/*.{test,spec}.ts"],
},
esbuild: {
pure: mode === "production" ? ["console.log"] : [],
keepNames: true,
},
}));
//#region Helpers
/**
* Class for sorting test files in the desired order.
*/
class MySequencer extends BaseSequencer {
async sort(files: TestSpecification[]) {
files = await super.sort(files);
return files.sort((a, b) => {
const aTestOrder = getTestOrder(a.moduleId);
const bTestOrder = getTestOrder(b.moduleId);
return aTestOrder - bTestOrder;
});
}
}
/**
* A helper function for sorting test files in a desired order.
*
* A lower number means that a test file must be run earlier,
* or else it breaks due to running tests with `--no-isolate.`
*/
function getTestOrder(testName: string): number {
if (testName.includes("battle-scene.test.ts")) {
return 1;
}
if (testName.includes("inputs.test.ts")) {
return 2;
}
return 3;
}
//#endregion