const nextJest = require('next/jest') 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 customJestConfig = { setupFilesAfterEnv: ['/jest.setup.js'], testEnvironment: 'jest-environment-jsdom', moduleNameMapper: { '^@/(.*)$': '/src/$1', }, testMatch: [ '**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)', ], collectCoverageFrom: [ 'src/**/*.{js,jsx,ts,tsx}', '!src/**/*.d.ts', '!src/**/*.stories.{js,jsx,ts,tsx}', '!src/**/__tests__/**', ], coverageThreshold: { global: { branches: 60, // Start lower, increase as tests are added functions: 60, lines: 60, statements: 60, }, // Higher thresholds for critical utilities 'src/lib/sanitize.ts': { branches: 100, functions: 100, lines: 100, statements: 100, }, 'src/lib/csrf.ts': { branches: 100, functions: 100, lines: 100, statements: 100, }, 'src/lib/rate-limit.ts': { branches: 100, functions: 100, lines: 100, statements: 100, }, }, coverageReporters: ['text', 'lcov', 'html', 'json', 'json-summary'], collectCoverage: false, // Set to true when running coverage coverageDirectory: '/coverage', } // createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async module.exports = createJestConfig(customJestConfig)