Skip to content

gavinaiken/eslint-plugin-chai-expect-keywords

Repository files navigation

eslint-plugin-chai-expect-keywords

ESLint plugin that checks for unsupported keywords in chai.js expect() assertions. Chai allows you to chain words to make readable assertions, but unfortunately you can include keywords that chai knows nothing about, and it will not fail the test. This eslint plugin helps you catch any such unsupported chains.

Installation

npm install eslint-plugin-chai-expect-keywords

Requirements

For version 2.x:

  • Node.js 6 or above
  • ESLint 4.x - 8.x

For version 3.x:

  • Node.js 18 or above
  • ESLint 9.x or above

Rules

  • no-unsupported-keywords - Prevent using unsupported keywords in the expect() chains

Options

  • allowKeywords adds an array of additional keywords to the allowed list
  • allowSinonChai includes sinon-chai keywords in the allowed list
  • allowChaiAsPromised includes chai-as-promised keywords in the allowed list. (You may also find eslint-plugin-chai-as-promised of interest in ensuring that return statements (or its notify method) are present as expected by chai-as-promised.)
  • allowChaiDOM includes chai-dom keywords in the allowed list
  • allowChaiExclude includes chai-exclude keywords in the allowed list

Configuration

Import the plugin into your eslint.config.js file:

import chaiExpectKeywords from 'eslint-plugin-chai-expect-keywords';

Add a plugins section and specify chai-expect-keywords as a plugin:

  "plugins": {
      "chai-expect-keywords": chaiExpectKeywords
  },

Enable the rule:

  "rules": {
    "chai-expect-keywords/no-unsupported-keywords": "error"
  }

Or with options:

  "rules": {
    "chai-expect-keywords/no-unsupported-keywords": [ "error", {
      "allowKeywords": ["length"],
      "allowSinonChai": true,
      "allowChaiAsPromised": true,
      "allowChaiDOM": true,
      "allowChaiExclude": true
    } ]
  }

If you want the rule enabled with all its boolean options set to true, you can avoid the steps of adding to plugins and rules and just include the all config in:

import js from '@eslint/js';
import chaiExpectKeywords from 'eslint-plugin-chai-expect-keywords';

export default [
    js.configs.recommended,
    chaiExpectKeywords.configs.all,

Or if you want the rule only with no booleans set, use the "recommended" config:

export default [
    chaiExpectKeywords.configs.recommended,

License

eslint-plugin-chai-expect-keywords is licensed under the MIT License.