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.
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", }, };
Recommended Configuration
This plugin exports a recommended configuration that enforces good jest-dom
practices (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.
π‘ 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.
Contributors β¨
Thanks goes to these people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
LICENSE
MIT