GitHub - testing-library/eslint-plugin-jest-dom: eslint rules for use with jest-dom (original) (raw)

eslint-plugin-jest-dom

ESLint plugin to follow best practices and anticipate common mistakes when writing tests with jest-dom.


Build Status Code Coverage version downloads MIT License All Contributors PRs Welcome Code of Conduct

Table of Contents

Installation

This module is distributed via npm which is bundled with node and should be installed as one of your project's devDependencies:

npm install --save-dev eslint-plugin-jest-dom

This library has a required peerDependencies listing for ESLint.

Usage

Note

eslint.config.js is supported, though most of the plugin documentation still currently uses .eslintrc syntax; compatible versions of configs are available prefixed with flat/ and may be subject to small breaking changes while ESLint v9 is being finalized.

Refer to theESLint documentation on the new configuration file formatfor more.

Add jest-dom to the plugins section of your .eslintrc.js configuration file. You can omit the eslint-plugin- prefix:

module.exports = { plugins: ["jest-dom"], rules: { // your configuration }, };

Then configure the rules you want to use under the rules section.

module.exports = { rules: { "jest-dom/prefer-checked": "error", "jest-dom/prefer-enabled-disabled": "error", "jest-dom/prefer-required": "error", "jest-dom/prefer-to-have-attribute": "error", }, };

This plugin exports a recommended configuration that enforces good jest-dompractices (you can find more info about enabled rules inSupported Rules section).

To enable this configuration with .eslintrc, use the extends property:

module.exports = { extends: "plugin:jest-dom/recommended", rules: { // your configuration }, };

To enable this configuration with eslint.config.js, usejestDom.configs['flat/recommended']:

module.exports = [ { files: [ /* glob matching your test files */ ], ...require("eslint-plugin-jest-dom").configs["flat/recommended"], }, ];

Supported Rules

πŸ’Ό Configurations enabled in.
βœ… Set in the recommended configuration.
πŸ”§ Automatically fixable by the --fix CLI option.
πŸ’‘ Manually fixable by editor suggestions.

Name Description πŸ’Ό πŸ”§ πŸ’‘
prefer-checked prefer toBeChecked over checking attributes βœ… πŸ”§
prefer-empty Prefer toBeEmpty over checking innerHTML βœ… πŸ”§
prefer-enabled-disabled prefer toBeDisabled or toBeEnabled over checking attributes βœ… πŸ”§
prefer-focus prefer toHaveFocus over checking document.activeElement βœ… πŸ”§
prefer-in-document Prefer .toBeInTheDocument() for asserting the existence of a DOM node βœ… πŸ”§ πŸ’‘
prefer-required prefer toBeRequired over checking properties βœ… πŸ”§
prefer-to-have-attribute prefer toHaveAttribute over checking getAttribute/hasAttribute βœ… πŸ”§
prefer-to-have-class prefer toHaveClass over checking element className βœ… πŸ”§
prefer-to-have-style prefer toHaveStyle over checking element style βœ… πŸ”§
prefer-to-have-text-content Prefer toHaveTextContent over checking element.textContent βœ… πŸ”§
prefer-to-have-value prefer toHaveValue over checking element.value βœ… πŸ”§

Issues

Looking to contribute? Look for the Good First Issuelabel.

πŸ› Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

πŸ’‘ Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a πŸ‘. This helps maintainers prioritize what to work on.

See Feature Requests

Contributors ✨

Thanks goes to these people (emoji key):

Ben MonroπŸ“– πŸ’» πŸ’‘ ⚠️ Nick McCurdyπŸ’» πŸ“– ⚠️ Ernesto GarcΓ­aπŸ“– Chris ColborneπŸ’» ⚠️ MichaΓ«l De BoeyπŸ’» Gerrit AlexπŸ’» ⚠️ πŸ“– πŸ› Andrey LosπŸ›
Spencer MiskoviakπŸ’» ⚠️ Aleksei TsikovπŸ› Mario BeltrΓ‘n AlarcΓ³nπŸ“– Ari PerkkiΓΆπŸ› πŸ’» ⚠️ Anton NiklassonπŸ’» ⚠️ πŸ“– Juzer ZarifπŸ’» ⚠️ πŸ› Julien WajsbergπŸ’» ⚠️
Gareth Jones⚠️ πŸ’» πŸ› Huyen NguyenπŸ“– MatthewπŸ› πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

LICENSE

MIT