ESLint plugin to follow best practices and anticipate common mistakes when writing tests with jest-dom
npm install eslint-plugin-jest-domESLint plugin to follow best practices and anticipate common mistakes when writing tests with jest-dom.
---
[![Build Status][build-badge]][build]
[![Code Coverage][coverage-badge]][coverage]
[![version][version-badge]][package]
[![downloads][downloads-badge]][npmtrends]
[![MIT License][license-badge]][license]
[![All Contributors][all-contributors-badge]](#contributors-)
[![PRs Welcome][prs-badge]][prs]
[![Code of Conduct][coc-badge]][coc]
- Installation
- Usage
- Recommended Configuration
- Supported Rules
- Issues
- 🐛 Bugs
- 💡 Feature Requests
- Contributors ✨
- LICENSE
This module is distributed via [npm][npm] which is bundled with [node][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.
> [!NOTE]
>
> eslint.config.js is supported, though most of the plugin documentation still.eslintrc
> currently uses syntax; compatible versions of configs are availableflat/
> prefixed with and may be subject to small breaking changes while ESLint
> v9 is being finalized.
>
> Refer to the
> ESLint documentation on the new configuration file format
> for more.
Add jest-dom to the plugins section of your .eslintrc.js configuration file.eslint-plugin-
You can omit the prefix:
`javascript`
module.exports = {
plugins: ["jest-dom"],
rules: {
// your configuration
},
};
Then configure the rules you want to use under the rules section.
`javascript`
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-dom
practices _(you can find more info about enabled rules in
Supported Rules section)_.
To enable this configuration with .eslintrc, use the extends property:
`javascript`
module.exports = {
extends: "plugin:jest-dom/recommended",
rules: {
// your configuration
},
};
To enable this configuration with eslint.config.js, usejestDom.configs['flat/recommended']:
`javascript`
module.exports = [
{
files: [
/ glob matching your test files /
],
...require("eslint-plugin-jest-dom").configs["flat/recommended"],
},
];
💼 Configurations enabled in.\
✅ Set in the recommended configuration.\--fix` CLI option.\
🔧 Automatically fixable by the
💡 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 | ✅ | 🔧 | |
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
label._
Please file an issue for bugs, missing documentation, or unexpected behavior.
[See Bugs][bugs]
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][requests]
Thanks goes to these people ([emoji key][emojis]):
This project follows the [all-contributors][all-contributors] specification.
Contributions of any kind welcome!
MIT
[npm]: https://www.npmjs.com
[node]: https://nodejs.org
[build-badge]: https://img.shields.io/github/actions/workflow/status/testing-library/eslint-plugin-jest-dom/validate.yml?logo=github&style=flat-square
[build]: https://github.com/testing-library/eslint-plugin-jest-dom/actions?query=workflow%3Avalidate
[coverage-badge]: https://img.shields.io/codecov/c/github/testing-library/eslint-plugin-jest-dom.svg?style=flat-square
[coverage]: https://codecov.io/github/testing-library/eslint-plugin-jest-dom
[version-badge]: https://img.shields.io/npm/v/eslint-plugin-jest-dom.svg?style=flat-square
[package]: https://www.npmjs.com/package/eslint-plugin-jest-dom
[downloads-badge]: https://img.shields.io/npm/dm/eslint-plugin-jest-dom.svg?style=flat-square
[npmtrends]: http://www.npmtrends.com/eslint-plugin-jest-dom
[license-badge]: https://img.shields.io/npm/l/eslint-plugin-jest-dom.svg?style=flat-square
[license]: https://github.com/testing-library/eslint-plugin-jest-dom/blob/main/LICENSE
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
[prs]: http://makeapullrequest.com
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
[coc]: https://github.com/testing-library/eslint-plugin-jest-dom/blob/main/other/CODE_OF_CONDUCT.md
[emojis]: https://github.com/all-contributors/all-contributors#emoji-key
[all-contributors]: https://github.com/all-contributors/all-contributors
[all-contributors-badge]: https://img.shields.io/github/all-contributors/testing-library/eslint-plugin-jest-dom?style=flat-square
[bugs]: https://github.com/testing-library/eslint-plugin-jest-dom/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Acreated-desc+label%3Abug
[requests]: https://github.com/testing-library/eslint-plugin-jest-dom/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement
[good-first-issue]: https://github.com/testing-library/eslint-plugin-jest-dom/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement+label%3A%22good+first+issue%22