Package Exports
- eslint-plugin-vitest
Readme
eslint-plugin-vitest
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
}
]
}
}
Recommended
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