eslint-plugin-chai-expect
ESLint plugin that checks for common chai.js expect() mistakes
[!IMPORTANT] The
recommendedpreset is for the ESLint legacy configuration system (.eslintrc.json). Therecommended-flatconfiguration is for the new flat configuration system.
Requirements
- Node.js 6 or above
- ESLint 4.x or 5.x or 6.x
Installation
npm install --save-dev eslint-plugin-chai-expectConfiguration
Legacy ESLint Configuration Format (.eslintrc.json)
Add a plugins section and specify chai-expect as a plugin:
{
  "plugins": [
    "chai-expect"
  ]
}Enable the rules that you would like to use:
{
  "rules": {
    "chai-expect/no-inner-compare": 2,
    "chai-expect/no-inner-literal": 2,
    "chai-expect/missing-assertion": 2,
    "chai-expect/terminating-properties": 2
  }
}Or, if you just want the above defaults, you can avoid all of the above and just extend the config:
{
  "extends": ["plugin:chai-expect/recommended"]
}Flat ESLint Configuration Format (eslint.config.js)
Add a plugins section and specify chai-expect as a plugin and enable the rules that you would like to use:
import chaiExpectPlugin from 'eslint-plugin-chai-expect';
export default [
  {
    "plugins": {
      "chai-expect": chaiExpectPlugin
    },
    "rules": {
      "chai-expect/no-inner-compare": 2,
      "chai-expect/no-inner-literal": 2,
      "chai-expect/missing-assertion": 2,
      "chai-expect/terminating-properties": 2
    }
  }
];Or, if you just want the above defaults, you can avoid all of the above and just extend the config:
import chaiExpectPlugin from 'eslint-plugin-chai-expect';
export default [
  chaiExpectPlugin.configs["recommended-flat"],
  {
    // ...
  },
];Rules
- no-inner-compare- Prevent using comparisons in the- expect()argument
- no-inner-literal- Prevent using literals in the- expect()argument (- undefined,- null,- NaN,- (+|-)Infinity,- this, booleans, numbers, strings, and BigInt or regex literals)
- missing-assertion- Prevent calling- expect(...)without an assertion like- .to.be.ok
- terminating-properties- Prevent calling- to.be.okand other assertion properties as functions
Additional configuration
terminating-properties rule
A number of extensions to chai add additional terminating properties. For example chai-http adds:
- headers
- html
- ip
- json
- redirect
- text
The terminating-properties rule can be configured to ensure these (or other) additional properties are not used as functions:
{
  "rules": {
    "chai-expect/terminating-properties": ["error", {
      "properties": ["headers", "html", "ip", "json", "redirect", "test"]
    }]
  }
}License
eslint-plugin-chai-expect is licensed under the MIT License.
 turbo87
turbo87