/** * Jest Base Configuration * Shared across all TypeScript projects * * Usage in project: * ```js * // jest.config.js * const baseConfig = require('../../../devtools/configs/jest.config.base.js'); * module.exports = { * ...baseConfig, * roots: ['/src'], * }; * ``` */ module.exports = { // TypeScript support preset: 'ts-jest', testEnvironment: 'node', // Test patterns testMatch: [ '**/__tests__/**/*.ts', '**/*.spec.ts', '**/*.test.ts', ], // Module resolution moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], // Path aliases (override in project config) moduleNameMapper: { '^@/(.*)$': '/src/$1', '^@modules/(.*)$': '/src/modules/$1', '^@shared/(.*)$': '/src/shared/$1', '^@config/(.*)$': '/src/config/$1', }, // Coverage collectCoverageFrom: [ 'src/**/*.ts', '!src/**/*.d.ts', '!src/**/*.spec.ts', '!src/**/*.test.ts', '!src/**/index.ts', '!src/main.ts', ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html'], coverageThreshold: { global: { branches: 70, functions: 70, lines: 70, statements: 70, }, }, // Transform transform: { '^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.json', }], }, // Setup setupFilesAfterEnv: [], // Timeouts testTimeout: 10000, // Clear mocks between tests clearMocks: true, restoreMocks: true, // Verbose output verbose: true, // Ignore patterns testPathIgnorePatterns: [ '/node_modules/', '/dist/', '/build/', ], transformIgnorePatterns: [ '/node_modules/', ], };