How to find aliases in Global Jest setup?

Viewed 999

I want to run some stuff only once before all test cases. Therefore, I have created a global function and specified the globalSetup field in the jest configuration:

globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),

However, within globalSetup, I use some aliases @ and Jest complains it does not find them.

How can I run globalSetup once the aliases have been sorted out?

My Jest configuration is as follows:

module.exports = {
  rootDir: rootPath,
  coveragePathIgnorePatterns: ['/node_modules/'],
  preset: 'ts-jest',
  setupFiles: [path.resolve(__dirname, 'env.testing.ts')],
  setupFilesAfterEnv: [path.resolve(srcPath, 'TestUtils', 'testSetup.ts')],
  globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),
  globals: {},
  testEnvironment: 'node',
  moduleFileExtensions: ['js', 'ts', 'json'],
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' })
};

When I run testSetup before every test, it runs ok the aliases, but this does not happen with globalSetup.

Any clue what could I do?

2 Answers

I managed to get this work by including tsconfig-paths/register at the top of my globalSetup file:

// myGlobalSetupFile.ts

import 'tsconfig-paths/register';
import { Thing } from './place-with-aliases';

export default async () => {
  await Thing.doGlobalSetup();
}

You have to make sure you have tsconfig-paths installed in your project.

Unfortunately I have found there is no solution for this based on the comments on this issue: https://github.com/facebook/jest/issues/6048

The summary is that globalSetup runs outside of Jest ecosystem and therefore it will not recognize the aliases, etc.

There are several workarounds, for example, if your npm run test command is something like this:

"test": "jest --config config/jest.config.js --detectOpenHandles --forceExit"

Then you can do something like:

"test": "node whateverBeforeJest.js && jest --config config/jest.config.js --detectOpenHandles --forceExit"
Related