Skip to content

duplicate-test-body

Disallow substantial sibling tests with the same body shape; express their differing inputs as a parameterized case table.

Why

Copy-pasted test bodies hide the cases that differ and allow equivalent assertions to drift independently.

Fix

Consider a case table with one named test or subtest per case; preserve setup lifetime, test modifiers, and each case's assertions rather than deleting coverage.

Examples

Before — flagged Sibling tests repeat the same body
src/user.test.ts
test("accepts a", () => {
const value = "a";
const result = parse(value);
expect(result.ok).toBe(true);
expect(result.value).toBe(value);
});
test("accepts b", () => {
const value = "b";
const result = parse(value);
expect(result.ok).toBe(true);
expect(result.value).toBe(value);
});
After — preferred A case table shares one test body
src/user.test.ts
test.each(["a", "b"])("accepts %s", (value) => {
const result = parse(value);
expect(result.ok).toBe(true);
expect(result.value).toBe(value);
});