eslint-plugin-jest-dom

ESLint 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] ## Table of Contents - [Installation](#installation) - [Usage](#usage) - [Recommended Configuration](#recommended-configuration) - [Supported Rules](#supported-rules) - [Issues](#issues) - [πŸ› Bugs](#-bugs) - [πŸ’‘ Feature Requests](#-feature-requests) - [Contributors ✨](#contributors-) - [LICENSE](#license) ## Installation 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`](https://eslint.org/). ## Usage Add `jest-dom` to the plugins section of your `.eslintrc.js` configuration file. You can omit the `eslint-plugin-` 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", }, }; ``` ## Recommended Configuration This plugin exports a recommended configuration that enforces good `jest-dom` practices _(you can find more info about enabled rules in [Supported Rules section](#supported-rules))_. To enable this configuration use the `extends` property in your `.eslintrc.js` config file: ```javascript module.exports = { extends: "plugin:jest-dom/recommended", rules: { // your configuration }, }; ``` ## Supported Rules πŸ’Ό Configurations enabled in.\ βœ… Set in the `recommended` configuration.\ πŸ”§ Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix). | NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | πŸ”§ | | :----------------------------------------------------------------------- | :-------------------------------------------------------------------- | :- | :- | | [prefer-checked](docs/rules/prefer-checked.md) | prefer toBeChecked over checking attributes | βœ… | πŸ”§ | | [prefer-empty](docs/rules/prefer-empty.md) | Prefer toBeEmpty over checking innerHTML | βœ… | πŸ”§ | | [prefer-enabled-disabled](docs/rules/prefer-enabled-disabled.md) | prefer toBeDisabled or toBeEnabled over checking attributes | βœ… | πŸ”§ | | [prefer-focus](docs/rules/prefer-focus.md) | prefer toHaveFocus over checking document.activeElement | βœ… | πŸ”§ | | [prefer-in-document](docs/rules/prefer-in-document.md) | Prefer .toBeInTheDocument() for asserting the existence of a DOM node | βœ… | πŸ”§ | | [prefer-required](docs/rules/prefer-required.md) | prefer toBeRequired over checking properties | βœ… | πŸ”§ | | [prefer-to-have-attribute](docs/rules/prefer-to-have-attribute.md) | prefer toHaveAttribute over checking getAttribute/hasAttribute | βœ… | πŸ”§ | | [prefer-to-have-class](docs/rules/prefer-to-have-class.md) | prefer toHaveClass over checking element className | βœ… | πŸ”§ | | [prefer-to-have-style](docs/rules/prefer-to-have-style.md) | prefer toHaveStyle over checking element style | βœ… | πŸ”§ | | [prefer-to-have-text-content](docs/rules/prefer-to-have-text-content.md) | Prefer toHaveTextContent over checking element.textContent | βœ… | πŸ”§ | | [prefer-to-have-value](docs/rules/prefer-to-have-value.md) | prefer toHaveValue over checking element.value | βœ… | πŸ”§ | ## Issues _Looking to contribute? Look for the [Good First Issue][good-first-issue] label._ ### πŸ› Bugs Please file an issue for bugs, missing documentation, or unexpected behavior. [**See Bugs**][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**][requests] ## Contributors ✨ Thanks goes to these people ([emoji key][emojis]):

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][all-contributors] specification. Contributions of any kind welcome! ## LICENSE MIT [npm]: https://www.npmjs.com [node]: https://nodejs.org [build-badge]: https://img.shields.io/github/workflow/status/testing-library/eslint-plugin-jest-dom/validate?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 [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