eslint-plugin-jest-runner-groups-validator
TypeScript icon, indicating that this package has built-in type declarations

1.4.0 • Public • Published

ESLint Jest runner groups validator

Provides an ESLint plugin that validates Jest runner groups applied to tests. These groups are the ones are defined using jest-runner-groups.

This is useful when you would like to restrict groups to a particular subset:

  • in case a group is mis-typed and would not then run in your suite;
  • so that existing groups can be re-used, instead of making new ones accidentally.

Installation

Assuming you have ESLint installed already:

npm install --save-dev eslint-plugin-jest-runner-groups-validator

In your .eslintrc.json (or similar):

{
  "plugins": [
    "jest-runner-groups-validator"
  ],
  "rules": {
    "jest-runner-groups-validator/must-match": "error",
    "jest-runner-groups-validator/top-level": "error"
  }
}

Then in your package.json file, define a property:

{
  squadTags: ["Fast", "Slow", "Smoke"]
  name: ...,
  dependencies: ...
  etc...
}

Configurations

The top-level rule, when enabled, will require that a groups docblock is defined in every file that contains tests, as determined by .test.[ext] files.

The must-match rule will then validate that those groups are restricted to the set of known values in the package.json file, as above. There is a single option in this rule, which allows you to specify the name of the property in the package:

// .eslintrc.json
{
    "jest-runner-groups-validator/must-match": ["error", { "propertyName": "groupings" }]
}

which corresponds with:

// package.json
{
  groupings: ["Fast", "Slow", "Smoke"]
  name: ...,
  dependencies: ...
  etc...
}

The default property is squadTags. You can define this property as either an array:

// package.json
{
  squadTags: ["Fast", "Slow", "Smoke"]
  name: ...,
  dependencies: ...
  etc...
}

// Code allows any of:
/**
 * @group Fast
 * @group Slow
 * @group Smoke
 */

or an object of arrays:

// package.json
{
  squadTags: {
    "sanity": ["Fast", "Smoke", "Sanity"],
    "full": ["Fast", "Slow", "Regression"]
  },
  name: ...,
  dependencies: ...
  etc...
}

// Code allows any of:
/**
 * @group Fast
 * @group Slow
 * @group Smoke
 * @group Sanity
 * @group Regression
 */

Fixes

  • At the top-level, a new comment will be added, with a placeholder group, to the top of the file, if one does not already exist.
    • If one already existed, the plugin will attempt to add placeholder groups to the first block comment in the file.
    • The placeholders will also be reported as errors. Specifically, TODO is not a valid group name and the top text (if it was empty) needs to be replaced.
  • In must-match, there are no fixes. But there are "autocorrect" suggestions for possible group names. e.g.
    /**
     * @group Slo
       ^^^^^^^^^^ Invalid group name 'Slo'. Did you mean 'Slow'?
     */

Package Sidebar

Install

npm i eslint-plugin-jest-runner-groups-validator

Weekly Downloads

384

Version

1.4.0

License

MIT

Unpacked Size

18.7 kB

Total Files

11

Last publish

Collaborators

  • scott-mcginness