Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
jest.config.js 1.27 KiB
import { readFileSync } from 'node:fs';

const swcConfig = JSON.parse(readFileSync('../../.swcrc', 'utf8'));

/** @type {import('jest').Config} */
export default {
  moduleFileExtensions: ['js', 'ts'],
  testEnvironment: 'node',
  transform: {
    '^.+\\.(js|ts)$': [
      '@swc/jest',
      {
        ...swcConfig,
        sourceMaps: false,
        exclude: [],
        swcrc: false,
      },
    ],
  },
  extensionsToTreatAsEsm: ['.ts'],
  moduleNameMapper: {
    // ESM modules require `.js` extension to be specified, but Jest doesn't work with them
    // Removing `.js` extension from module imports
    '^uuid$': 'uuid',
    '^(.*)/(.*)\\.js$': '$1/$2',
  },
  collectCoverageFrom: ['src/**/*.(t|j)s'],
  coverageReporters:
    process.env.CI === 'true'
      ? ['text-summary', 'json-summary']
      : ['text-summary', 'html'],
  coveragePathIgnorePatterns: [
    '<rootDir>/node_modules/',
    '<rootDir>/test/',
    '<rootDir>/coverage/',
    '<rootDir>/dist/',
    '<rootDir>/**/test',
    '@types',
    '.dto.(t|j)s',
    '.enum.ts',
    '.interface.ts',
    '.type.ts',
    '.spec.ts',
  ],
  coverageDirectory: './coverage',
  // With v8 coverage provider it's much faster, but
  // with this enabled it's not possible to ignore whole files' coverage
  coverageProvider: 'v8',
};