60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
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: ['<rootDir>/jest.setup.js'],
|
|
testEnvironment: 'jest-environment-jsdom',
|
|
moduleNameMapper: {
|
|
'^@/(.*)$': '<rootDir>/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: '<rootDir>/coverage',
|
|
}
|
|
|
|
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
|
|
module.exports = createJestConfig(customJestConfig)
|
|
|