consistent-test-it.md 1.7 KB

Have control over test and it usages (consistent-test-it)

Jest allows you to choose how you want to define your tests, using the it or the test keywords, with multiple permutations for each:

  • it: it, xit, fit, it.only, it.skip.
  • test: test, xtest, test.only, test.skip.

This rule gives you control over the usage of these keywords in your codebase.

Rule Details

This rule can be configured as follows

{
  type: 'object',
  properties: {
    fn: {
      enum: ['it', 'test'],
    },
    withinDescribe: {
      enum: ['it', 'test'],
    },
  },
  additionalProperties: false,
}

fn

Decides whether to use test or it.

withinDescribe

Decides whether to use test or it within a describe scope.

/*eslint jest/consistent-test-it: ["error", {"fn": "test"}]*/

test('foo'); // valid
test.only('foo'); // valid

it('foo'); // invalid
it.only('foo'); // invalid
/*eslint jest/consistent-test-it: ["error", {"fn": "it"}]*/

it('foo'); // valid
it.only('foo'); // valid

test('foo'); // invalid
test.only('foo'); // invalid
/*eslint jest/consistent-test-it: ["error", {"fn": "it", "withinDescribe": "test"}]*/

it('foo'); // valid
describe('foo', function () {
  test('bar'); // valid
});

test('foo'); // invalid
describe('foo', function () {
  it('bar'); // invalid
});

Default configuration

The default configuration forces all top-level tests to use test and all tests nested within describe to use it.

/*eslint jest/consistent-test-it: ["error"]*/

test('foo'); // valid
describe('foo', function () {
  it('bar'); // valid
});

it('foo'); // invalid
describe('foo', function () {
  test('bar'); // invalid
});