How do you find the filename and path of a running test in Jest

Viewed 2650

I am using Jest for testing. How do I access the filename or file path of the current test being run?

I need a conditional statement that runs different lines of code based on whether it is a unit test file or integration test file.

Here is an example of what I am trying to achieve:

beforeAll(() => {
  if (integration_test_file){
    // run this this code 

  } else if (unit_test_file){
    // run this code instead 
  }
})
2 Answers

This information is available in Jest environment. This is the case for custom environment:

const Environment = require('jest-environment-node'); // or jest-environment-jsdom

module.exports = class MyEnvironment extends Environment {
  constructor(config, context) {
    super(config, context);
    this.testPath = context.testPath;
  }

  async setup() {
    await super.setup();
    this.global.IS_INTEGRATION = /match integration/.test(this.testPath);
  }
}

The environment is instantiated for each test suite, testPath contains full path to current test file.

IS_INTEGRATION global variable will be available in setupFilesAfterEnv and tests themselves. In case the code needs to be evaluated for all tests, it may belong to environment setup and teardown methods.

You can access the name of the file path of the test being ran in jest via its global variables.

the file path can be found under the global variable

jasmine.testPath

or

global.jasmine.testPath

this answer only applies if you're using jest with its default test runner "jasmine" or "jasmine2". results will differ based on the test runner you use. see https://jestjs.io/docs/en/configuration#testrunner-string

Related