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: 'babel', testEnvironment: 'jsdom', // Add more setup options before each test is run setupFilesAfterEnv: ['/jest.setup.ts'], // Ignore tests inside __mocks__ directory testPathIgnorePatterns: ['/node_modules/', '/__mocks__/'], // 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)/)' ], // Fix for production React builds testEnvironmentOptions: { customExportConditions: [''], }, // Module name mapping to fix haste collision moduleNameMapper: { '^@/(.*)$': '/$1', }, // Fix haste collision by excluding .next directory haste: { hasteImplModulePath: undefined, }, // Exclude problematic directories from haste modulePathIgnorePatterns: ['/.next/'], // Clear mocks between tests clearMocks: true, // Reset modules between tests resetMocks: true, // Restore mocks between tests restoreMocks: true, } // createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async export default createJestConfig(config)