Skip to content

jest/no-duplicate-hooks Style

What it does

Disallows duplicate hooks in describe blocks.

Why is this bad?

Having duplicate hooks in a describe block can lead to confusion and unexpected behavior. When multiple hooks of the same type exist, they all execute in order, which can make it difficult to understand the test setup flow and may result in redundant or conflicting operations. This makes tests harder to maintain and debug.

Examples

Examples of incorrect code for this rule:

javascript
describe("foo", () => {
  beforeEach(() => {
    // some setup
  });
  beforeEach(() => {
    // some setup
  });
  test("foo_test", () => {
    // some test
  });
});

// Nested describe scenario
describe("foo", () => {
  beforeEach(() => {
    // some setup
  });
  test("foo_test", () => {
    // some test
  });
  describe("bar", () => {
    test("bar_test", () => {
      afterAll(() => {
        // some teardown
      });
      afterAll(() => {
        // some teardown
      });
    });
  });
});

Examples of correct code for this rule:

javascript
describe("foo", () => {
  beforeEach(() => {
    // some setup
  });
  test("foo_test", () => {
    // some test
  });
});

// Nested describe scenario
describe("foo", () => {
  beforeEach(() => {
    // some setup
  });
  test("foo_test", () => {
    // some test
  });
  describe("bar", () => {
    test("bar_test", () => {
      beforeEach(() => {
        // some setup
      });
    });
  });
});

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny jest/no-duplicate-hooks --jest-plugin
json
{
  "plugins": ["jest"],
  "rules": {
    "jest/no-duplicate-hooks": "error"
  }
}

References

Released under the MIT License.