import { JestConfigWithTsJest, pathsToModuleNameMapper } from 'ts-jest'; // eslint-disable-next-line @typescript-eslint/no-var-requires const tsConfig = require('./tsconfig.spec.json'); process.env.TZ = 'GMT'; process.env.LC_ALL = 'en_US.UTF-8'; const jestConfig: JestConfigWithTsJest = { silent: true, // For more information please have a look to official docs https://jestjs.io/docs/configuration/#prettierpath-string // Prettier v3 will should be supported in jest v30 https://github.com/jestjs/jest/releases/tag/v30.0.0-alpha.1 prettierPath: null, displayName: 'twenty-front', preset: '../../jest.preset.js', setupFilesAfterEnv: ['./setupTests.ts'], testEnvironment: 'jsdom', transformIgnorePatterns: [ '/node_modules/(?!(twenty-ui)/.*)', '../../node_modules/(?!(twenty-ui)/.*)', '../../twenty-ui/', ], transform: { '^.+\\.(ts|js|tsx|jsx)$': [ '@swc/jest', { jsc: { parser: { syntax: 'typescript', tsx: true, }, transform: { react: { runtime: 'automatic', }, }, experimental: { plugins: [['@lingui/swc-plugin', {}]], }, }, }, ], }, moduleNameMapper: { '\\.(jpg|jpeg|png|gif|webp|svg|svg\\?react)$': '/__mocks__/imageMock.js', '\\.css$': '/__mocks__/styleMock.js', ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths, { prefix: '/../../', }), }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], extensionsToTreatAsEsm: ['.ts', '.tsx'], coverageThreshold: { global: { statements: 56.9, lines: 55, functions: 46, }, }, collectCoverageFrom: ['/src/**/*.ts'], coveragePathIgnorePatterns: [ 'states/.+State.ts$', 'states/selectors/*', 'contexts/.+Context.ts', 'testing/*', 'tests/*', 'config/*', 'graphql/queries/*', 'graphql/mutations/*', 'graphql/subscriptions/*', 'graphql/fragments/*', 'types/*', 'constants/*', 'generated-metadata/*', 'generated/*', '__stories__/*', 'display/icon/index.ts', ], coverageDirectory: './coverage', errorOnDeprecated: true, }; export default jestConfig;