Загрузка данных


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;