JSPM

  • Created
  • Published
  • Downloads 6511565
  • Score
    100M100P100Q213495F
  • License MIT

ESLint rules for Testing Library

Package Exports

  • eslint-plugin-testing-library

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-plugin-testing-library) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

eslint-plugin-testing-library

ESLint plugin to follow best practices and anticipate common mistakes when writing tests with Testing Library


Build status Package version MIT License
semantic-release PRs Welcome All Contributors
Watch on Github Star on Github Tweet

Installation

You'll first need to install ESLint:

$ npm i eslint --save-dev

Next, install eslint-plugin-testing-library:

$ npm install eslint-plugin-testing-library --save-dev

Note: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-testing-library globally.

Usage

Add testing-library to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:

{
  "plugins": ["testing-library"]
}

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

{
  "rules": {
    "testing-library/await-async-query": "error",
    "testing-library/no-await-sync-query": "error",
    "testing-library/no-debug": "warn"
  }
}

Shareable configurations

This plugin exports a recommended configuration that enforces good Testing Library practices (you can find more info about enabled rules in Supported Rules section within Recommended column).

To enable this configuration use the extends property in your .eslintrc config file:

{
  "extends": ["plugin:testing-library/recommended"]
}

Frameworks

Starting from the premise that DOM Testing Library is the base for the rest of Testing Library frameworks wrappers, this plugin also exports different configuration for those frameworks that enforces good practices for specific rules that only apply to them (you can find more info about enabled rules in Supported Rules section within Frameworks column).

Note that frameworks configurations enable their specific rules + recommended rules.

Available frameworks configurations are:

Angular

To enable this configuration use the extends property in your .eslintrc config file:

{
  "extends": ["plugin:testing-library/angular"]
}

React

To enable this configuration use the extends property in your .eslintrc config file:

{
  "extends": ["plugin:testing-library/react"]
}

Vue

To enable this configuration use the extends property in your .eslintrc config file:

{
  "extends": ["plugin:testing-library/vue"]
}

Supported Rules

Rule Description Configurations Fixable
await-async-query Enforce async queries to have proper await recommended-badge angular-badge react-badge vue-badge
await-fire-event Enforce async fire event methods to be awaited vue-badge
no-await-sync-query Disallow unnecessary await for sync queries recommended-badge angular-badge react-badge vue-badge
no-debug Disallow the use of debug angular-badge react-badge vue-badge
no-dom-import Disallow importing from DOM Testing Library angular-badge react-badge vue-badge fixable-badge
prefer-expect-query-by Disallow the use of expect(getBy*) recommended-badge angular-badge react-badge vue-badge
prefer-explicit-assert Suggest using explicit assertions rather than just getBy* queries
consistent-data-testid Ensure data-testid values match a provided regex.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Mario Beltrán Alarcón

💻 📖 👀 ⚠️ 🚇

Thomas Lombart

💻 📖 👀 ⚠️ 🚇

Ben Monro

💻 📖 ⚠️

Nicola Molinari

💻 ⚠️ 📖 👀

Aarón García Hervás

📖

Matej Šnuderl

🤔 📖

Adrià Fontcuberta

💻 ⚠️

Jon Aldinger

📖

Thomas Knickman

💻 📖 ⚠️

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