All free skills / Other majors
eslint-plugin-testing-library 7.x
Practical guidance for eslint-plugin-testing-library ^7.0.0, including v7 compatibility requirements, legacy and flat ESLint configuration, available rules, customization settings, and common migration mistakes.
- For
eslint-plugin-testing-library@7.16.2- Verified
- 2026-09-08, 3 examples executed
- Skill package
@modootoday/pmcp-eslint-plugin-testing-library@7.0.0
Use this skill for free
No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.
Download SKILL.md · Download package archive
npm install --save-dev https://pmcp.build/skills/eslint-plugin-testing-library/7/package.tgz
PMCP discovers the installed package's instructions. Connect your runtime after installation.
Archive integrity
sha512-GMJLSbxJXmkhf9D27kyA7r3IM9eRkthGMeFXoYRSk4cYlD7RV06FRhKNATHg7LohUMh0ZL1cjRVOi/s5mK/ezg==Complete instructions
Verified against eslint-plugin-testing-library@7.16.2 on 2026-09-08. 3 of 3 examples executed.
eslint-plugin-testing-library ^7.0.0
What this package is
eslint-plugin-testing-library is an ESLint plugin, not a test runner and not a standalone executable. Install and use it with ESLint. Its published entry point exposes one plugin object containing rules and configs.
v7 supports:
- Node
^18.18.0,^20.9.0, or>=21.1.0 - ESLint
^8.57.0or^9.0.0 typescript-eslintv8- npm
>=9.8.1
The plugin's peer dependency is ESLint ^8.57.0 || ^9.0.0.
Configuration shapes
Flat config
v7 provides flat-config entries whose names start with flat/. Apply one to the files that contain tests:
const testingLibrary = require('eslint-plugin-testing-library');
module.exports = [
{
files: ['**/*.test.{js,jsx,ts,tsx}'],
...testingLibrary.configs['flat/react'],
},
];
Documented flat names are:
flat/domflat/angularflat/reactflat/vueflat/marko
Do not use the legacy plugin:testing-library/react string inside a flat config. Spread the corresponding configs['flat/...'] object instead.
Legacy .eslintrc config
The older configuration form remains documented and commonly appears in existing code:
module.exports = {
overrides: [
{
files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],
extends: ['plugin:testing-library/react'],
},
],
};
A direct legacy rule configuration looks like this:
module.exports = {
plugins: ['testing-library'],
rules: {
'testing-library/await-async-queries': 'error',
'testing-library/no-await-sync-queries': 'error',
'testing-library/no-debugging-utils': 'warn',
'testing-library/no-dom-import': 'off',
},
};
The legacy preset names documented by the package are dom, angular, react, vue, svelte, and marko. The flat names are prefixed with flat/; do not assume every legacy preset has an identically named flat entry (the documented flat list does not include flat/svelte).
Rules
The documented rules include:
await-async-eventsawait-async-queriesawait-async-utilsconsistent-data-testidno-await-sync-eventsno-await-sync-queriesno-containerno-debugging-utilsno-dom-importno-global-regexp-flag-in-queryno-manual-cleanupno-node-accessno-promise-in-fire-eventno-render-in-lifecycleno-unnecessary-actno-wait-for-multiple-assertionsno-wait-for-side-effectsno-wait-for-snapshotprefer-explicit-assertprefer-find-byprefer-implicit-assertprefer-presence-queriesprefer-query-by-disappearanceprefer-query-matchersprefer-screen-queriesprefer-user-eventrender-result-naming-convention
Rules are consumed by ESLint configuration. This package does not provide a command that runs a test file directly. Fixes are requested through ESLint, for example with the ESLint CLI's --fix option.
Custom utilities and queries
Add project-specific Testing Library APIs through the settings key in ESLint configuration:
module.exports = {
settings: {
'testing-library/utils-module': 'my-custom-test-utility-file',
'testing-library/custom-renders': ['display', 'renderWithProviders'],
'testing-library/custom-queries': ['ByIcon', 'getByComplexText'],
},
};
These settings belong in the ESLint configuration used for the relevant files; they are not arguments to the plugin import.
Migration traps
Do not copy removed v6-era rule names
If code is migrating from an older major, v6 had already removed or renamed these names:
prefer-wait-forno-wait-for-empty-callbackawait-fire-eventawait-async-query(singular)no-await-sync-query(singular)no-render-in-setup
Use the v7 documented names such as await-async-queries and no-await-sync-queries where appropriate. The singular forms are a common stale-configuration mistake.
Do not treat v7 as a runner
A direct bun example.ts file cannot exercise ESLint rules by using describe, it, or expect; those are not supplied by this package. Use the programmatic package surface only for inspecting the plugin object, and exercise linting through ESLint itself.
Standalone package-surface checks
These examples only inspect the published plugin object. They do not run ESLint, and therefore need no runner globals, configuration file, test framework, network, or filesystem.
import assert from 'node:assert/strict';
const testingLibrary = require('eslint-plugin-testing-library');
assert.equal(typeof testingLibrary, 'object');
assert.equal(typeof testingLibrary.rules, 'object');
assert.equal(typeof testingLibrary.configs, 'object');
assert.equal(typeof testingLibrary.rules['await-async-queries'], 'object');
assert.equal(typeof testingLibrary.rules['no-debugging-utils'], 'object');
import assert from 'node:assert/strict';
const testingLibrary = require('eslint-plugin-testing-library');
for (const name of ['dom', 'angular', 'react', 'vue', 'svelte', 'marko']) {
assert.equal(typeof testingLibrary.configs[name], 'object');
}
for (const name of ['flat/dom', 'flat/angular', 'flat/react', 'flat/vue', 'flat/marko']) {
assert.equal(typeof testingLibrary.configs[name], 'object');
}
import assert from 'node:assert/strict';
const testingLibrary = require('eslint-plugin-testing-library');
const reactFlat = testingLibrary.configs['flat/react'];
assert.equal(typeof reactFlat, 'object');
assert.ok(reactFlat !== null);
assert.ok(Object.prototype.hasOwnProperty.call(reactFlat, 'plugins'));
Does not cover
This skill does not cover individual rule semantics, rule options, exact diagnostics, ESLint API invocation, parser configuration, framework setup, or the full migration history before v6. Those require information not present in the supplied research. The examples also do not perform linting because this package's documented surface is consumed by ESLint rather than by a standalone runner.