export default {
  preset: 'ts-jest/presets/default-esm',
  testEnvironment: 'node',
  extensionsToTreatAsEsm: ['.ts'],
  transform: {
    '^.+\\\\.tsx?$': ['ts-jest', { useESM: true }]
  },
  moduleNameMapper: {
    '^(\\\\.{1,2}/.*)\\\\.js$': '$1'
  }
};

The 4 Critical Requirements (Short Notes)

1. preset: 'ts-jest/presets/default-esm'


2. extensionsToTreatAsEsm: ['.ts']

Without this → Jest rewrites imports to require() → breaks.


3. transform: { useESM: true }

Without this → TypeScript compiles to:

const x = require('./file');

→ breaks ESM imports.


4. moduleNameMapper: { '^(\\\\.{1,2}/.*)\\\\.js$': '$1' }