mayo19
mayo19

Reputation: 857

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

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 
  }
})

Upvotes: 7

Views: 6450

Answers (3)

Estus Flask
Estus Flask

Reputation: 223064

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.

Upvotes: 5

mayo19
mayo19

Reputation: 857

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

Upvotes: 2

Related Questions