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 method | Replacement |
|---|---|
equal | strictEqual |
notEqual | notStrictEqual |
deepEqual | deepStrictEqual |
notDeepEqual | notDeepStrictEqual |
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);