import type { Config } from 'jest';
const config: Config = {
preset: 'ts-jest',
testEnvironment: 'node',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
roots: ['<rootDir>/src'],
testMatch: [
'**/src/tests/unit/**/*.test.ts',
'**/src/tests/integration/**/*.test.ts'
],
testPathIgnorePatterns: [
'<rootDir>/tests/',
'<rootDir>/node_modules/',
'<rootDir>/dist/',
'<rootDir>/coverage/'
],
transform: {
'^.+\\.ts$': ['ts-jest', {
isolatedModules: true,
tsconfig: {
target: 'ES2020',
module: 'CommonJS',
moduleResolution: 'node',
allowSyntheticDefaultImports: true,
esModuleInterop: true,
strict: false
}
}]
},
collectCoverageFrom: [
'src/**/*.ts',
'!src/**/*.d.ts',
'!src/**/index.ts',
'!src/**/*.test.ts',
'!src/types/**',
'!src/tests/**',
'!src/legacy/**',
'!src/server/**',
'!src/index.ts',
'!src/index-new.ts'
],
coverageDirectory: 'coverage',
coverageReporters: ['text', 'html', 'lcov'],
coverageThreshold: {
global: {
branches: 90,
functions: 90,
lines: 90,
statements: 90
}
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
setupFilesAfterEnv: ['<rootDir>/src/tests/setup.ts'],
verbose: true,
clearMocks: true,
collectCoverage: true
};