module.exports = { preset: 'ts-jest', testEnvironment: 'node', roots: ['/src'], testMatch: ['**/__tests__/**/*.test.ts', '**/__tests__/**/*.spec.ts', '**/*.spec.ts'], setupFilesAfterEnv: ['/src/__tests__/setup.ts'], collectCoverageFrom: [ 'src/**/*.ts', '!src/**/*.d.ts', '!src/main.ts', '!src/**/__tests__/**', '!src/**/__mocks__/**', '!src/**/*.spec.ts', '!src/**/*.test.ts' ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html', 'json-summary'], coverageThreshold: { global: { branches: 30, functions: 30, lines: 30, statements: 30 } }, transform: { '^.+\\.ts$': ['ts-jest', { tsconfig: { strict: false, strictPropertyInitialization: false, strictNullChecks: false, skipLibCheck: true }, isolatedModules: true }] }, moduleNameMapper: { '^@shared/(.*)$': '/src/shared/$1', '^@middleware/(.*)$': '/src/middleware/$1', '^@config/(.*)$': '/src/config/$1', '^@database/(.*)$': '/src/database/$1', '^@modules/(.*)$': '/src/modules/$1', '^@/(.*)$': '/src/$1', '^@__mocks__/(.*)$': '/src/__mocks__/$1' }, testTimeout: 30000, verbose: true };