JSPM

  • Created
  • Published
  • Downloads 580086
  • Score
    100M100P100Q178986F
  • License MIT

Eslint plugin for vitest

Package Exports

  • eslint-plugin-vitest

Readme

eslint-plugin-vitest

npm ci

Eslint plugin for vitest

Installation

You'll first need to install ESLint:

npm i eslint --save-dev

Next, install eslint-plugin-vitest:

npm install eslint-plugin-vitest --save-dev

Usage

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

{
  "plugins": ["vitest"]
}

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

{
  "rules": {
    "vitest/max-nested-describe": [
      "error",
      {
        "max": 3
      }
    ]
  }
}

Make sure you're running eslint v9.0.0 or heigher eslint.config.js

import vitest from "eslint-plugin-vitest";

export default [
  {
    files: ["tests/**"], // or any other pattern
    plugins: {
      vitest,
    },
    rules: {
      ...vitest.configs.recommended.rules,
    },
    languageOptions: {
      globals: {
        ...vitest.environments.env.globals,
      },
    },
  },
];

Enabling with type-testing

Vitest ships with an optional type-testing feature, which is disabled by default.

If you're using this feature, you should also enabled typecheck in the settings for this plugin. This ensures that rules like expect-expect account for type-related assertions in tests.

import vitest from "eslint-plugin-vitest";

export default [
  {
    files: ["tests/**"], // or any other pattern
    plugins: {
      vitest,
    },
    rules: {
      ...vitest.configs.recommended.rules,
    },
   settings: {
      vitest: {
        typecheck: true
      }
    },
    languageOptions: {
      globals: {
        ...vitest.environments.env.globals,
      },
    },
  },
]

Rules

💼 Configurations enabled in.
⚠️ Configurations set to warn in.
🌐 Set in the all configuration.
✅ Set in the recommended configuration.
🔧 Automatically fixable by the --fix CLI option.
💡 Manually fixable by editor suggestions.
❌ Deprecated.

Name Description 💼 ⚠️ 🔧 💡
consistent-test-filename require .spec test file pattern 🌐
consistent-test-it enforce using test or it but not both 🌐 🔧
expect-expect enforce having expectation in test body
max-expects enforce a maximum number of expect per test 🌐
max-nested-describe require describe block to be less than set max value or default value 🌐
no-alias-methods disallow alias methods 🌐 🔧
no-commented-out-tests disallow commented out tests
no-conditional-expect disallow conditional expects 🌐
no-conditional-in-test disallow conditional tests 🌐
no-conditional-tests disallow conditional tests 🌐
no-disabled-tests disallow disabled tests 🌐
no-done-callback disallow using a callback in asynchronous tests and hooks 🌐 💡
no-duplicate-hooks disallow duplicate hooks and teardown hooks 🌐
no-focused-tests disallow focused tests 🌐 🔧
no-hooks disallow setup and teardown hooks 🌐
no-identical-title disallow identical titles 🔧
no-import-node-test disallow importing node:test 🔧
no-interpolation-in-snapshots disallow string interpolation in snapshots 🌐 🔧
no-large-snapshots disallow large snapshots 🌐
no-mocks-import disallow importing from mocks directory 🌐
no-restricted-matchers disallow the use of certain matchers 🌐
no-restricted-vi-methods disallow specific vi. methods 🌐
no-standalone-expect disallow using expect outside of it or test blocks 🌐
no-test-prefixes disallow using test as a prefix 🌐 🔧
no-test-return-statement disallow return statements in tests 🌐
prefer-called-with enforce using toBeCalledWith() or toHaveBeenCalledWith() 🌐 🔧
prefer-comparison-matcher enforce using the built-in comparison matchers 🌐 🔧
prefer-each enforce using each rather than manual loops 🌐
prefer-equality-matcher enforce using the built-in quality matchers 🌐 💡
prefer-expect-assertions enforce using expect assertions instead of callbacks 🌐 💡
prefer-expect-resolves enforce using expect().resolves over expect(await ...) syntax 🌐 🔧
prefer-hooks-in-order enforce having hooks in consistent order 🌐
prefer-hooks-on-top enforce having hooks before any test cases 🌐
prefer-lowercase-title enforce lowercase titles 🌐 🔧
prefer-mock-promise-shorthand enforce mock resolved/rejected shorthands for promises 🌐 🔧
prefer-snapshot-hint enforce including a hint with external snapshots 🌐
prefer-spy-on enforce using vi.spyOn 🌐 🔧
prefer-strict-equal enforce strict equal over equal 🌐 💡
prefer-to-be enforce using toBe() 🌐 🔧
prefer-to-be-falsy enforce using toBeFalsy() 🌐 🔧
prefer-to-be-object enforce using toBeObject() 🌐 🔧
prefer-to-be-truthy enforce using toBeTruthy 🌐 🔧
prefer-to-contain enforce using toContain() 🌐 🔧
prefer-to-have-length enforce using toHaveLength() 🌐 🔧
prefer-todo enforce using test.todo 🌐 🔧
require-hook require setup and teardown to be within a hook 🌐
require-local-test-context-for-concurrent-snapshots require local Test Context for concurrent snapshot tests
require-to-throw-message require toThrow() to be called with an error message 🌐
require-top-level-describe enforce that all tests are in a top-level describe 🌐
valid-describe-callback enforce valid describe callback
valid-expect enforce valid expect() usage
valid-title enforce valid titles 🔧

Credits

  • eslint-plugin-jest Most of the rules in this plugin are essentially ports of Jest plugin rules with minor modifications

Licence

MIT Licence © 2022 - present veritem