39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
import type { Config } from "jest";
|
|
import nextJest from "next/jest.js";
|
|
|
|
const createJestConfig = nextJest({
|
|
// Provide the path to your Next.js app to load next.config.js and .env files in your test environment
|
|
dir: "./",
|
|
});
|
|
|
|
// Add any custom config to be passed to Jest
|
|
const config: Config = {
|
|
coverageProvider: "v8",
|
|
testEnvironment: "jsdom",
|
|
// Add more setup options before each test is run
|
|
setupFilesAfterEnv: ["<rootDir>/jest.setup.ts"],
|
|
// Ignore tests inside __mocks__ directory
|
|
testPathIgnorePatterns: ["/node_modules/", "/__mocks__/", "/.next/"],
|
|
// Transform react-markdown and other ESM modules
|
|
transformIgnorePatterns: [
|
|
"node_modules/(?!(react-markdown|remark-.*|rehype-.*|unified|bail|is-plain-obj|trough|vfile|vfile-message|unist-.*|micromark|parse-entities|character-entities|mdast-.*|hast-.*|property-information|space-separated-tokens|comma-separated-tokens|web-namespaces|zwitch|longest-streak|ccount)/)",
|
|
],
|
|
// Module name mapping to fix haste collision
|
|
moduleNameMapper: {
|
|
"^@/(.*)$": "<rootDir>/$1",
|
|
},
|
|
// Exclude problematic directories from haste
|
|
modulePathIgnorePatterns: ["<rootDir>/.next/", "<rootDir>/node_modules/"],
|
|
// Clear mocks between tests
|
|
clearMocks: true,
|
|
// Reset modules between tests
|
|
resetMocks: true,
|
|
// Restore mocks between tests
|
|
restoreMocks: true,
|
|
// Max workers for better performance
|
|
maxWorkers: "50%",
|
|
};
|
|
|
|
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
|
|
export default createJestConfig(config);
|