npm i -D babel-jest@29.7.0 identity-obj-proxy
npm uninstall lodash @types/lodash
import { readFileSync } from 'fs';
import JSON5 from 'json5';
import { pathsToModuleNameMapper } from 'ts-jest';
import type { Config } from '@jest/types';
const fileContent = readFileSync('./tsconfig.json');
const fileContentJSON = JSON5.parse(fileContent.toString());
const config: Config.InitialOptions = {
clearMocks: true,
resetMocks: true,
restoreMocks: true,
testEnvironment: 'jsdom',
testEnvironmentOptions: {
customExportConditions: ['browser', 'import'],
},
testRegex: '[/\\\\]src[/\\\\].*\\.(?:test|spec)\\.[jt]sx?$',
setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
moduleDirectories: ['node_modules', '<rootDir>'],
transform: {
'^.+\\.[cm]?[jt]sx?$': [
'babel-jest',
{
babelrc: false,
configFile: false,
presets: [
['@babel/preset-env', { targets: { node: 'current' }, modules: 'commonjs' }],
['@babel/preset-react', { runtime: 'automatic' }],
['@babel/preset-typescript', { allowDeclareFields: true }],
],
},
],
},
transformIgnorePatterns: [],
moduleNameMapper: {
...pathsToModuleNameMapper(fileContentJSON.compilerOptions.paths),
'^exchange-elements/v2$': '<rootDir>/node_modules/exchange-elements/dist/v2.cjs.js',
'\\.module\\.(?:css|scss|sass)$': 'identity-obj-proxy',
'\\.(?:css|scss|sass)$': '<rootDir>/__mocks__/styleMock.cjs',
},
coverageDirectory: '<rootDir>/coverage',
coverageReporters: ['text', 'lcov'],
};
export default config;