@vitest/eslint-plugin 1.2.7 β 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -91
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +221 -106
- package/dist/index.d.mts +221 -106
- package/dist/index.mjs +4 -4
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -24,20 +24,20 @@ npm install @vitest/eslint-plugin --save-dev
|
|
|
24
24
|
Make sure you're running ESLint `v9.0.0` or higher for the latest version of this plugin to work. The following example is how your `eslint.config.js` should be setup for this plugin to work for you.
|
|
25
25
|
|
|
26
26
|
```js
|
|
27
|
-
import vitest from
|
|
27
|
+
import vitest from '@vitest/eslint-plugin'
|
|
28
28
|
|
|
29
29
|
export default [
|
|
30
30
|
{
|
|
31
|
-
files: [
|
|
31
|
+
files: ['tests/**'], // or any other pattern
|
|
32
32
|
plugins: {
|
|
33
|
-
vitest
|
|
33
|
+
vitest,
|
|
34
34
|
},
|
|
35
35
|
rules: {
|
|
36
36
|
...vitest.configs.recommended.rules, // you can also use vitest.configs.all.rules to enable all rules
|
|
37
|
-
|
|
37
|
+
'vitest/max-nested-describe': ['error', { max: 3 }], // you can also modify rules' behavior using option like this
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
|
-
]
|
|
40
|
+
]
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
If you're not using the latest version of ESLint (version `v8.57.0` or lower) you can setup this plugin using the following configuration
|
|
@@ -73,7 +73,6 @@ If you're using old ESLint configuration, make sure to use legacy key like the f
|
|
|
73
73
|
}
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
|
|
77
76
|
#### Enabling with type-testing
|
|
78
77
|
|
|
79
78
|
Vitest ships with an optional [type-testing feature](https://vitest.dev/guide/testing-types), which is disabled by default.
|
|
@@ -81,21 +80,21 @@ Vitest ships with an optional [type-testing feature](https://vitest.dev/guide/te
|
|
|
81
80
|
If you're using this feature, you should also enabled `typecheck` in the settings for this plugin. This ensures that rules like [expect-expect](docs/rules/expect-expect.md) account for type-related assertions in tests.
|
|
82
81
|
|
|
83
82
|
```js
|
|
84
|
-
import vitest from
|
|
83
|
+
import vitest from '@vitest/eslint-plugin'
|
|
85
84
|
|
|
86
85
|
export default [
|
|
87
86
|
{
|
|
88
|
-
files: [
|
|
87
|
+
files: ['tests/**'], // or any other pattern
|
|
89
88
|
plugins: {
|
|
90
89
|
vitest,
|
|
91
90
|
},
|
|
92
91
|
rules: {
|
|
93
92
|
...vitest.configs.recommended.rules,
|
|
94
93
|
},
|
|
95
|
-
|
|
94
|
+
settings: {
|
|
96
95
|
vitest: {
|
|
97
|
-
typecheck: true
|
|
98
|
-
}
|
|
96
|
+
typecheck: true,
|
|
97
|
+
},
|
|
99
98
|
},
|
|
100
99
|
languageOptions: {
|
|
101
100
|
globals: {
|
|
@@ -109,33 +108,34 @@ export default [
|
|
|
109
108
|
### Shareable configurations
|
|
110
109
|
|
|
111
110
|
#### Recommended
|
|
111
|
+
|
|
112
112
|
This plugin exports a recommended configuration that enforces good testing practices.
|
|
113
113
|
|
|
114
114
|
To enable this configuration with `eslint.config.js`, use `vitest.configs.recommended`:
|
|
115
115
|
|
|
116
116
|
```js
|
|
117
|
-
import vitest from
|
|
117
|
+
import vitest from '@vitest/eslint-plugin'
|
|
118
118
|
|
|
119
119
|
export default [
|
|
120
120
|
{
|
|
121
|
-
files: [
|
|
122
|
-
|
|
123
|
-
}
|
|
121
|
+
files: ['tests/**'], // or any other pattern
|
|
122
|
+
...vitest.configs.recommended,
|
|
123
|
+
},
|
|
124
124
|
]
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
|
|
128
127
|
#### All
|
|
128
|
+
|
|
129
129
|
If you want to enable all rules instead of only some you can do so by adding the all configuration to your `eslint.config.js` config file:
|
|
130
130
|
|
|
131
131
|
```js
|
|
132
|
-
import vitest from
|
|
132
|
+
import vitest from '@vitest/eslint-plugin'
|
|
133
133
|
|
|
134
134
|
export default [
|
|
135
135
|
{
|
|
136
|
-
files: [
|
|
137
|
-
|
|
138
|
-
}
|
|
136
|
+
files: ['tests/**'], // or any other pattern
|
|
137
|
+
...vitest.configs.all,
|
|
138
|
+
},
|
|
139
139
|
]
|
|
140
140
|
```
|
|
141
141
|
|
|
@@ -145,88 +145,94 @@ export default [
|
|
|
145
145
|
|
|
146
146
|
πΌ Configurations enabled in.\
|
|
147
147
|
β οΈ Configurations set to warn in.\
|
|
148
|
+
π« Configurations disabled in.\
|
|
148
149
|
π Set in the `all` configuration.\
|
|
149
150
|
β
Set in the `recommended` configuration.\
|
|
150
151
|
π§ Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
|
|
151
152
|
π‘ Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\
|
|
153
|
+
π Requires [type information](https://typescript-eslint.io/linting/typed-linting).\
|
|
152
154
|
β Deprecated.
|
|
153
155
|
|
|
154
|
-
| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β | Description
|
|
155
|
-
| :----------------------------------------------------------------------------------------------------------------------- |
|
|
156
|
-
| [consistent-test-filename](docs/rules/consistent-test-filename.md) | require .spec test file pattern
|
|
157
|
-
| [consistent-test-it](docs/rules/consistent-test-it.md) | enforce using test or it but not both
|
|
158
|
-
| [consistent-vitest-vi](docs/rules/consistent-vitest-vi.md) | enforce using vitest or vi but not both
|
|
159
|
-
| [expect-expect](docs/rules/expect-expect.md) | enforce having expectation in test body
|
|
160
|
-
| [max-expects](docs/rules/max-expects.md) | enforce a maximum number of expect per test
|
|
161
|
-
| [max-nested-describe](docs/rules/max-nested-describe.md) | require describe block to be less than set max value or default value
|
|
162
|
-
| [no-alias-methods](docs/rules/no-alias-methods.md) | disallow alias methods
|
|
163
|
-
| [no-commented-out-tests](docs/rules/no-commented-out-tests.md) | disallow commented out tests
|
|
164
|
-
| [no-conditional-expect](docs/rules/no-conditional-expect.md) | disallow conditional expects
|
|
165
|
-
| [no-conditional-in-test](docs/rules/no-conditional-in-test.md) | disallow conditional tests
|
|
166
|
-
| [no-conditional-tests](docs/rules/no-conditional-tests.md) | disallow conditional tests
|
|
167
|
-
| [no-disabled-tests](docs/rules/no-disabled-tests.md) | disallow disabled tests
|
|
168
|
-
| [no-done-callback](docs/rules/no-done-callback.md) | disallow using a callback in asynchronous tests and hooks
|
|
169
|
-
| [no-duplicate-hooks](docs/rules/no-duplicate-hooks.md) | disallow duplicate hooks and teardown hooks
|
|
170
|
-
| [no-focused-tests](docs/rules/no-focused-tests.md) | disallow focused tests
|
|
171
|
-
| [no-hooks](docs/rules/no-hooks.md) | disallow setup and teardown hooks
|
|
172
|
-
| [no-identical-title](docs/rules/no-identical-title.md) | disallow identical titles
|
|
173
|
-
| [no-import-node-test](docs/rules/no-import-node-test.md) | disallow importing `node:test`
|
|
174
|
-
| [no-importing-vitest-globals](docs/rules/no-importing-vitest-globals.md) | disallow importing Vitest globals
|
|
175
|
-
| [no-interpolation-in-snapshots](docs/rules/no-interpolation-in-snapshots.md) | disallow string interpolation in snapshots
|
|
176
|
-
| [no-large-snapshots](docs/rules/no-large-snapshots.md) | disallow large snapshots
|
|
177
|
-
| [no-mocks-import](docs/rules/no-mocks-import.md) | disallow importing from
|
|
178
|
-
| [no-restricted-matchers](docs/rules/no-restricted-matchers.md) | disallow the use of certain matchers
|
|
179
|
-
| [no-restricted-vi-methods](docs/rules/no-restricted-vi-methods.md) | disallow specific `vi.` methods
|
|
180
|
-
| [no-standalone-expect](docs/rules/no-standalone-expect.md) | disallow using `expect` outside of `it` or `test` blocks
|
|
181
|
-
| [no-test-prefixes](docs/rules/no-test-prefixes.md) |
|
|
182
|
-
| [no-test-return-statement](docs/rules/no-test-return-statement.md) | disallow return statements in tests
|
|
183
|
-
| [padding-around-after-all-blocks](docs/rules/padding-around-after-all-blocks.md)
|
|
184
|
-
| [padding-around-after-each-blocks](docs/rules/padding-around-after-each-blocks.md)
|
|
185
|
-
| [padding-around-all](docs/rules/padding-around-all.md)
|
|
186
|
-
| [padding-around-before-all-blocks](docs/rules/padding-around-before-all-blocks.md)
|
|
187
|
-
| [padding-around-before-each-blocks](docs/rules/padding-around-before-each-blocks.md)
|
|
188
|
-
| [padding-around-describe-blocks](docs/rules/padding-around-describe-blocks.md)
|
|
189
|
-
| [padding-around-expect-groups](docs/rules/padding-around-expect-groups.md)
|
|
190
|
-
| [
|
|
191
|
-
| [prefer-
|
|
192
|
-
| [prefer-
|
|
193
|
-
| [prefer-
|
|
194
|
-
| [prefer-
|
|
195
|
-
| [prefer-
|
|
196
|
-
| [prefer-
|
|
197
|
-
| [prefer-
|
|
198
|
-
| [prefer-
|
|
199
|
-
| [prefer-
|
|
200
|
-
| [prefer-
|
|
201
|
-
| [prefer-
|
|
202
|
-
| [prefer-
|
|
203
|
-
| [prefer-
|
|
204
|
-
| [prefer-
|
|
205
|
-
| [prefer-
|
|
206
|
-
| [prefer-
|
|
207
|
-
| [prefer-
|
|
208
|
-
| [prefer-
|
|
209
|
-
| [prefer-to-be
|
|
210
|
-
| [prefer-to-
|
|
211
|
-
| [prefer-to-
|
|
212
|
-
| [prefer-
|
|
213
|
-
| [prefer-
|
|
214
|
-
| [
|
|
215
|
-
| [
|
|
216
|
-
| [
|
|
217
|
-
| [require-
|
|
218
|
-
| [require-
|
|
219
|
-
| [
|
|
220
|
-
| [
|
|
221
|
-
| [
|
|
222
|
-
| [valid-
|
|
156
|
+
| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β | Description | πΌ | β οΈ | π« | π§ | π‘ | π | β |
|
|
157
|
+
| :----------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | :-- | :-- | :-- | :-- | :-- | :-- | :-- |
|
|
158
|
+
| [consistent-test-filename](docs/rules/consistent-test-filename.md) | require .spec test file pattern | | π | | | | | |
|
|
159
|
+
| [consistent-test-it](docs/rules/consistent-test-it.md) | enforce using test or it but not both | | π | | π§ | | | |
|
|
160
|
+
| [consistent-vitest-vi](docs/rules/consistent-vitest-vi.md) | enforce using vitest or vi but not both | | π | | π§ | | | |
|
|
161
|
+
| [expect-expect](docs/rules/expect-expect.md) | enforce having expectation in test body | β
| π | | | | | |
|
|
162
|
+
| [max-expects](docs/rules/max-expects.md) | enforce a maximum number of expect per test | | π | | | | | |
|
|
163
|
+
| [max-nested-describe](docs/rules/max-nested-describe.md) | require describe block to be less than set max value or default value | | π | | | | | |
|
|
164
|
+
| [no-alias-methods](docs/rules/no-alias-methods.md) | disallow alias methods | | π | | π§ | | | |
|
|
165
|
+
| [no-commented-out-tests](docs/rules/no-commented-out-tests.md) | disallow commented out tests | β
| π | | | | | |
|
|
166
|
+
| [no-conditional-expect](docs/rules/no-conditional-expect.md) | disallow conditional expects | | π | | | | | |
|
|
167
|
+
| [no-conditional-in-test](docs/rules/no-conditional-in-test.md) | disallow conditional tests | | π | | | | | |
|
|
168
|
+
| [no-conditional-tests](docs/rules/no-conditional-tests.md) | disallow conditional tests | | π | | | | | |
|
|
169
|
+
| [no-disabled-tests](docs/rules/no-disabled-tests.md) | disallow disabled tests | | π | | | | | |
|
|
170
|
+
| [no-done-callback](docs/rules/no-done-callback.md) | disallow using a callback in asynchronous tests and hooks | | π | | | π‘ | | β |
|
|
171
|
+
| [no-duplicate-hooks](docs/rules/no-duplicate-hooks.md) | disallow duplicate hooks and teardown hooks | | π | | | | | |
|
|
172
|
+
| [no-focused-tests](docs/rules/no-focused-tests.md) | disallow focused tests | | π | | π§ | | | |
|
|
173
|
+
| [no-hooks](docs/rules/no-hooks.md) | disallow setup and teardown hooks | | π | | | | | |
|
|
174
|
+
| [no-identical-title](docs/rules/no-identical-title.md) | disallow identical titles | β
| π | | π§ | | | |
|
|
175
|
+
| [no-import-node-test](docs/rules/no-import-node-test.md) | disallow importing `node:test` | β
| π | | π§ | | | |
|
|
176
|
+
| [no-importing-vitest-globals](docs/rules/no-importing-vitest-globals.md) | disallow importing Vitest globals | | | π | π§ | | | |
|
|
177
|
+
| [no-interpolation-in-snapshots](docs/rules/no-interpolation-in-snapshots.md) | disallow string interpolation in snapshots | | π | | π§ | | | |
|
|
178
|
+
| [no-large-snapshots](docs/rules/no-large-snapshots.md) | disallow large snapshots | | π | | | | | |
|
|
179
|
+
| [no-mocks-import](docs/rules/no-mocks-import.md) | disallow importing from **mocks** directory | | π | | | | | |
|
|
180
|
+
| [no-restricted-matchers](docs/rules/no-restricted-matchers.md) | disallow the use of certain matchers | | π | | | | | |
|
|
181
|
+
| [no-restricted-vi-methods](docs/rules/no-restricted-vi-methods.md) | disallow specific `vi.` methods | | π | | | | | |
|
|
182
|
+
| [no-standalone-expect](docs/rules/no-standalone-expect.md) | disallow using `expect` outside of `it` or `test` blocks | | π | | | | | |
|
|
183
|
+
| [no-test-prefixes](docs/rules/no-test-prefixes.md) | disallow using the `f` and `x` prefixes in favour of `.only` and `.skip` | | π | | π§ | | | |
|
|
184
|
+
| [no-test-return-statement](docs/rules/no-test-return-statement.md) | disallow return statements in tests | | π | | | | | |
|
|
185
|
+
| [padding-around-after-all-blocks](docs/rules/padding-around-after-all-blocks.md) | Enforce padding around `afterAll` blocks | | π | | π§ | | | |
|
|
186
|
+
| [padding-around-after-each-blocks](docs/rules/padding-around-after-each-blocks.md) | Enforce padding around `afterEach` blocks | | π | | π§ | | | |
|
|
187
|
+
| [padding-around-all](docs/rules/padding-around-all.md) | Enforce padding around vitest functions | | π | | π§ | | | |
|
|
188
|
+
| [padding-around-before-all-blocks](docs/rules/padding-around-before-all-blocks.md) | Enforce padding around `beforeAll` blocks | | π | | π§ | | | |
|
|
189
|
+
| [padding-around-before-each-blocks](docs/rules/padding-around-before-each-blocks.md) | Enforce padding around `beforeEach` blocks | | π | | π§ | | | |
|
|
190
|
+
| [padding-around-describe-blocks](docs/rules/padding-around-describe-blocks.md) | Enforce padding around `describe` blocks | | π | | π§ | | | |
|
|
191
|
+
| [padding-around-expect-groups](docs/rules/padding-around-expect-groups.md) | Enforce padding around `expect` groups | | π | | π§ | | | |
|
|
192
|
+
| [padding-around-test-blocks](docs/rules/padding-around-test-blocks.md) | Enforce padding around `test` blocks | | π | | π§ | | | |
|
|
193
|
+
| [prefer-called-once](docs/rules/prefer-called-once.md) | enforce using `toBeCalledOnce()` or `toHaveBeenCalledOnce()` | | π | | π§ | | | |
|
|
194
|
+
| [prefer-called-times](docs/rules/prefer-called-times.md) | enforce using `toBeCalledTimes(1)` or `toHaveBeenCalledTimes(1)` | | π | | π§ | | | |
|
|
195
|
+
| [prefer-called-with](docs/rules/prefer-called-with.md) | enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` | | π | | π§ | | | |
|
|
196
|
+
| [prefer-comparison-matcher](docs/rules/prefer-comparison-matcher.md) | enforce using the built-in comparison matchers | | π | | π§ | | | |
|
|
197
|
+
| [prefer-describe-function-title](docs/rules/prefer-describe-function-title.md) | enforce using a function as a describe title over an equivalent string | | π | | π§ | | | |
|
|
198
|
+
| [prefer-each](docs/rules/prefer-each.md) | enforce using `each` rather than manual loops | | π | | | | | |
|
|
199
|
+
| [prefer-equality-matcher](docs/rules/prefer-equality-matcher.md) | enforce using the built-in quality matchers | | π | | | π‘ | | |
|
|
200
|
+
| [prefer-expect-assertions](docs/rules/prefer-expect-assertions.md) | enforce using expect assertions instead of callbacks | | π | | | π‘ | | |
|
|
201
|
+
| [prefer-expect-resolves](docs/rules/prefer-expect-resolves.md) | enforce using `expect().resolves` over `expect(await ...)` syntax | | π | | π§ | | | |
|
|
202
|
+
| [prefer-hooks-in-order](docs/rules/prefer-hooks-in-order.md) | enforce having hooks in consistent order | | π | | | | | |
|
|
203
|
+
| [prefer-hooks-on-top](docs/rules/prefer-hooks-on-top.md) | enforce having hooks before any test cases | | π | | | | | |
|
|
204
|
+
| [prefer-importing-vitest-globals](docs/rules/prefer-importing-vitest-globals.md) | enforce importing Vitest globals | | π | | π§ | | | |
|
|
205
|
+
| [prefer-lowercase-title](docs/rules/prefer-lowercase-title.md) | enforce lowercase titles | | π | | π§ | | | |
|
|
206
|
+
| [prefer-mock-promise-shorthand](docs/rules/prefer-mock-promise-shorthand.md) | enforce mock resolved/rejected shorthands for promises | | π | | π§ | | | |
|
|
207
|
+
| [prefer-snapshot-hint](docs/rules/prefer-snapshot-hint.md) | enforce including a hint with external snapshots | | π | | | | | |
|
|
208
|
+
| [prefer-spy-on](docs/rules/prefer-spy-on.md) | enforce using `vi.spyOn` | | π | | π§ | | | |
|
|
209
|
+
| [prefer-strict-boolean-matchers](docs/rules/prefer-strict-boolean-matchers.md) | enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean | | π | | π§ | | | |
|
|
210
|
+
| [prefer-strict-equal](docs/rules/prefer-strict-equal.md) | enforce strict equal over equal | | π | | | π‘ | | |
|
|
211
|
+
| [prefer-to-be](docs/rules/prefer-to-be.md) | enforce using toBe() | | π | | π§ | | | |
|
|
212
|
+
| [prefer-to-be-falsy](docs/rules/prefer-to-be-falsy.md) | enforce using toBeFalsy() | | | π | π§ | | | |
|
|
213
|
+
| [prefer-to-be-object](docs/rules/prefer-to-be-object.md) | enforce using toBeObject() | | π | | π§ | | | |
|
|
214
|
+
| [prefer-to-be-truthy](docs/rules/prefer-to-be-truthy.md) | enforce using `toBeTruthy` | | | π | π§ | | | |
|
|
215
|
+
| [prefer-to-contain](docs/rules/prefer-to-contain.md) | enforce using toContain() | | π | | π§ | | | |
|
|
216
|
+
| [prefer-to-have-length](docs/rules/prefer-to-have-length.md) | enforce using toHaveLength() | | π | | π§ | | | |
|
|
217
|
+
| [prefer-todo](docs/rules/prefer-todo.md) | enforce using `test.todo` | | π | | π§ | | | |
|
|
218
|
+
| [prefer-vi-mocked](docs/rules/prefer-vi-mocked.md) | require `vi.mocked()` over `fn as Mock` | | π | | π§ | | π | |
|
|
219
|
+
| [require-hook](docs/rules/require-hook.md) | require setup and teardown to be within a hook | | π | | | | | |
|
|
220
|
+
| [require-local-test-context-for-concurrent-snapshots](docs/rules/require-local-test-context-for-concurrent-snapshots.md) | require local Test Context for concurrent snapshot tests | β
| π | | | | | |
|
|
221
|
+
| [require-mock-type-parameters](docs/rules/require-mock-type-parameters.md) | enforce using type parameters with vitest mock functions | | π | | π§ | | | |
|
|
222
|
+
| [require-to-throw-message](docs/rules/require-to-throw-message.md) | require toThrow() to be called with an error message | | π | | | | | |
|
|
223
|
+
| [require-top-level-describe](docs/rules/require-top-level-describe.md) | enforce that all tests are in a top-level describe | | π | | | | | |
|
|
224
|
+
| [valid-describe-callback](docs/rules/valid-describe-callback.md) | enforce valid describe callback | β
| π | | | | | |
|
|
225
|
+
| [valid-expect](docs/rules/valid-expect.md) | enforce valid `expect()` usage | β
| π | | π§ | | | |
|
|
226
|
+
| [valid-expect-in-promise](docs/rules/valid-expect-in-promise.md) | require promises that have expectations in their chain to be valid | | π | | | | | |
|
|
227
|
+
| [valid-title](docs/rules/valid-title.md) | enforce valid titles | β
| π | | π§ | | | |
|
|
228
|
+
| [warn-todo](docs/rules/warn-todo.md) | disallow `.todo` usage | | | | | | | |
|
|
223
229
|
|
|
224
230
|
<!-- end auto-generated rules list -->
|
|
225
231
|
|
|
226
232
|
#### Credits
|
|
227
233
|
|
|
228
|
-
- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest)
|
|
229
|
-
|
|
234
|
+
- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest):
|
|
235
|
+
most of the rules in this plugin are essentially ports of Jest plugin rules with minor modifications
|
|
230
236
|
|
|
231
237
|
### Licence
|
|
232
238
|
|