prefer-strict-assert

July 2, 2026 ยท View on GitHub

๐Ÿ“ Prefer strict assertion methods over their legacy loose counterparts.

๐Ÿ’ผ This rule is enabled in the following configs: โœ… recommended, โ˜‘๏ธ unopinionated.

๐Ÿ”ง This rule is automatically fixable by the --fix CLI option.

The legacy assert.equal, assert.deepEqual, assert.notEqual, and assert.notDeepEqual methods compare with the == operator (Stability: 3 - Legacy). Loose comparison hides real bugs: assert.equal(1, '1') passes, as does assert.deepEqual({a: 1}, {a: '1'}). Their strict counterparts use === and produce a clear diff on failure.

This rule reports the loose methods and autofixes them to the strict equivalent.

Loose methodReplacement
equalstrictEqual
notEqualnotStrictEqual
deepEqualdeepStrictEqual
notDeepEqualnotDeepStrictEqual

The rule does not report files that import from node:assert/strict, where the loose methods are already aliases of their strict counterparts. The test context's t.assert is always loose mode, so its methods are reported.

Examples

import assert from 'node:assert';

// โŒ
assert.equal(actual, expected);
assert.deepEqual(actual, {key: 'value'});
assert.notEqual(actual, expected);

// โœ…
assert.strictEqual(actual, expected);
assert.deepStrictEqual(actual, {key: 'value'});
assert.notStrictEqual(actual, expected);
import assert from 'node:assert/strict';

// โœ… (strict mode โ€” `equal` is an alias of `strictEqual`)
assert.equal(actual, expected);