NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3040 most downloaded on npm
ESLint plugin to follow best practices and anticipate common mistakes when writing tests with Testing Library
Last release 6 months ago
24 Mar 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
217 releases · first in 2019
prefer-query-by-disappearance: prefer-query-by-disappearance is now enabled by default in all configs
prefer-query-by-disappearance is now enabled by default in all configsprefer-presence-queries is now enabled by default in all configsno-wait-for-snapshot is now enabled by default in all configsno-wait-for-side-effects is now enabled by default in all configsno-wait-for-multiple-assertions is now enabled by default in all configsno-render-in-setup is now enabled by default in the Angular, React & Vue configsno-unnecessary-act is now enabled by default in the React configno-debug is now called no-debugging-utilsYou can follow the migration guide to v5.
One column per quarter.
# 5.0.0-alpha.10 (2021-10-17) ### Features * support ESLint v8
no-unnecessary-act: make isStrict option true by default
prefer-query-by-disappearance: add to all configs by default
prefer-query-by-disappearance is now enabled by default in all configsprefer-presence-queries: add to all configs by default
prefer-presence-queries is now enabled by default in all configsno-wait-for-snapshot: add to all configs by default
no-wait-for-snapshot is now enabled by default in all configsno-wait-for-side-effects: add to all configs by default
no-wait-for-side-effects is now enabled by default in all configsno-wait-for-multiple-assertions: add to all configs by default
no-wait-for-multiple-assertions is now enabled by default in all configsno-render-in-setup: add to Angular, React & Vue configs by default
no-render-in-setup is now enabled by default in the Angular, React & Vue configsno-debug: rename to no-debugging-utils
no-debugging-utils (#469) (ea52ff0)no-unnecessary-act is now enabled by default in the React config (with isStrict set to true)no-debug is now called no-debugging-utilsRequires Node@^12.22.x || ^14.17.x || >=16.x
## 4.12.4 (2021-09-23) ### Reverts * "ci: fix node 16 to 16.8"
prefer-explicit-assert: check property existence
prefer-find-by: handle different spacing correctly for autofix
dependencies: bump @typescript-eslint/experimental-utils
prefer-find-by: report presence assertions (#450) (94758f1), closes #420
prefer-explicit-assert: add an option to toggle the matching of findBy queries (#452) (172a5ac), closes #449
no-unnecessary-act: report everything that's reported in non-strict (#423) (840763d), closes #416
prefer-explicit-assert: report on findBy* queries too (#421) (c92e7ff), closes #409
no-unnecessary-act: fix false positives when isStrict option is set to false
prefer-user-event: prevent crash with custom createEvent function (#422) (4808bca), closes #405
prefer-query-by-disappearance: fix rule name
no-unnecessary-act: add isStrict option (#404) (b68d66b), closes #382
new prefer-query-by-disappearance rule (#402) (b94437a), closes #399
prefer-user-event: add support for fireEvent as function (#398) (0c11511), closes #261
prefer-screen-queries: detect render in wrappers (#388) (b92132d), closes #367
dependencies: bump @typescript-eslint/experimental-utils
# 4.5.0 (2021-05-18) ### Features * add compatibility for Node 16
no-debug: support more debugging functions
new no-unnecessary-act rule (#365) (88416b2), closes #259
await-async-query: get correct Identifier related to CallExpression (#374) (816df6e), closes #359
no-wait-for-side-effects: report render usage in waitFor
no-wait-for-side-effects: report implicit return in arrow functions
no-debug: allow console.debug() (#349) (43a14a2), closes #327
new shared setting for restricting Aggressive Queries Reporting: testing-library/custom-queries (#344) (a8d2017), closes #335
prefer-screen-queries: avoid reporting custom queries (#342) (1c4391c), closes #340
no-node-access: skip reporting files without Testing Library import (#338) (19947ef), closes #334
eslint-plugin-testing-library v4 brings the new Aggressive Reporting (an advanced mechanism to drastically improve reporting things related to Testing
eslint-plugin-testing-library v4 brings the new Aggressive Reporting (an advanced mechanism to drastically improve reporting things related to Testing Library), 7 new rules, Shareable Configs updates, more consistent and flexible detection, and tons of bug fixes. You can follow this migrating to v4 guide.
recommended Shareable Config has been renamed to domno-promise-in-fire-event rule enabled in dom, angular, react and vue Shareable Configsno-wait-for-empty-callback rule enabled in dom, angular, react and vue Shareable Configsprefer-screen-queries rule enabled in dom, angular, react and vue Shareable Configsno-container rule enabled in angular, react and vue Shareable Configsno-node-access rule enabled in angular, react and vue Shareable Configsrender-result-naming-convention rule enabled in angular, react and vue Shareable Configsno-debug rule changed from "warning" to "error" in angular, react and vue Shareable ConfigscustomQueryNames has been removedrenderFunctions has been removedrenderFunctions has been removedtype and keyboard methods with 0 delay (#302)debug properly (#295)no-container (#177, #295)render-result-naming-convention (#200, #280, #282)prefer-user-event (#192, #251)no-promise-in-fire-event (#180, #266)no-wait-for-side-effects (#196, #300)no-node-access (#190, #237)no-wait-for-multiple-assertions (#189, #301)testing-library/utils-module (#239)testing-library/custom-renders (#280, #282)Huge thanks to @nickmccurdy @thebinaryfelix @timdeschryver @gndelia @renatoagds @MichaelDeBoey @thomaslombart for your contributions of all kind! v4 wouldn't be possible without you ❤️
third round of bug fixes (#320) (20027f4), closes #318
second round of bugfixes for v4 (#314) (66df731), closes #313
prefer-user-event: format list of userEvent methods correctly (#311) (fd81fc5), closes #310
guard against null deepest identifier node
first round of bugfixes for v4 (7e9d5c5), closes #307 #304
no-await-sync-query: avoid reporting queries if not within callee (#278) (ed09979), closes #276
recommended config preset has been renamed to dom, so make sure to update it in your ESLint config file if you were using recommended preset.no-wait-for-empty-callback rule is automatically enabled if recommended, angular, react or vue config enabled. If you have any of those enabled, you could get new ESLint errors related to this rule after upgrading this plugin.prefer-screen-queries rule is automatically enabled if recommended, angular, react or vue config enabled. If you have any of those enabled, you could get new ESLint errors related to this rule after upgrading this plugin.Nothing published for this version
Nothing published for this version
Nothing published for this version
no-await-sync-events: add exception for userEvent.keyboard
prefer-explicit-assert: handle valid getBy* without expect
# 3.10.0 (2020-10-29) ### Features * add no-await-sync-events rule
prefer-explicit-assert: only enforce assertion when presence/absence matcher (#238) (f78720d), closes #218
await-async-utils: consider promise.all (#236) (6ce0140), closes #227
support ESLint 7.x (#139) (be75630), closes #138
new no-wait-for-snapshot rule (#223) (7e2f5e3), closes #214
prefer-explicit-assert: add 'assertion' config option (#220) (dddf405), closes #218
consistent-data-testid: add support for multiple test id attributes
new no-render-in-setup rule (#209) (5f35316), closes #207
await-async-query: false positives
prefer-screen-queries: allow baseElement and container (#201) (b6fcc42), closes #188
include findBy variable declaration to prefer-find-by when auto fixing
Your coding agent can read these notes before it upgrades. Set up the MCP server →