Giter VIP home page Giter VIP logo

eslint-plugin-jest-runner-groups-validator's Introduction

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'?
     */

eslint-plugin-jest-runner-groups-validator's People

Contributors

scottmcginness avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.