TidGi-Desktop/jest.config.js
2025-06-12 17:12:37 +08:00

75 lines
2.1 KiB
JavaScript

/** @type {import('jest').Config} */
module.exports = {
// Use ts-jest to transform TypeScript
preset: 'ts-jest',
// Test environment
testEnvironment: 'jsdom',
// Setup files
setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup-jest.ts'],
// Test file patterns
testMatch: [
'<rootDir>/src/**/__tests__/**/*.(test|spec).(ts|tsx|js)',
'<rootDir>/src/**/*.(test|spec).(ts|tsx|js)',
],
// Module file extensions
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
// Module aliases - matches webpack config
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^@services/(.*)$': '<rootDir>/src/services/$1',
'@mui/styled-engine': '@mui/styled-engine-sc',
// Static asset mocks
'\\.(css|less|scss|sass)$': 'identity-obj-proxy',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/src/__tests__/__mocks__/fileMock.js',
},
// Performance optimizations
maxWorkers: '50%', // 使用CPU核心数的50%进行并行测试
cacheDirectory: '<rootDir>/node_modules/.cache/jest', // 启用Jest缓存
// Coverage settings
collectCoverageFrom: [
'src/**/*.{ts,tsx}',
'!src/**/*.d.ts',
'!src/__tests__/**/*',
'!src/main.ts',
'!src/preload/**/*',
],
// Coverage reporters
coverageReporters: ['text', 'lcov', 'html'],
// Ignored paths
modulePathIgnorePatterns: ['<rootDir>/out/', '<rootDir>/.webpack/'],
// 优化的ts-jest配置
transform: {
'^.+\\.(ts|tsx)$': ['ts-jest', {
tsconfig: './tsconfig.test.json', // 使用专门的测试配置
}],
},
// 全局配置优化 - 修正警告
// globals: {
// 'ts-jest': {
// isolatedModules: true, // 提高编译速度
// useESM: false,
// },
// },
// Environment variables
setupFiles: ['<rootDir>/src/__tests__/environment.ts'],
// 缩短超时时间
testTimeout: 5000, // 从10000减少到5000
// 并行化配置
runner: 'jest-runner', // 确保使用默认runner
detectOpenHandles: false, // 禁用检测打开的句柄以提高性能
forceExit: true, // 强制退出以避免EPERM错误
};