ESLint rules for AVA
Translations: Français
This plugin is bundled in XO. No need to do anything if you're using it.
Propose or contribute a new rule ➡
$ npm install --save-dev eslint eslint-plugin-ava
Configure it in package.json
.
{
"name": "my-awesome-project",
"eslintConfig": {
"env": {
"es6": true
},
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "module"
},
"plugins": [
"ava"
],
"rules": {
"ava/assertion-arguments": "error",
"ava/hooks-order": "error",
"ava/max-asserts": [
"off",
5
],
"ava/no-async-fn-without-await": "error",
"ava/no-cb-test": "off",
"ava/no-duplicate-modifiers": "error",
"ava/no-identical-title": "error",
"ava/no-ignored-test-files": "error",
"ava/no-import-test-files": "error",
"ava/no-incorrect-deep-equal": "error",
"ava/no-inline-assertions": "error",
"ava/no-invalid-end": "error",
"ava/no-nested-tests": "error",
"ava/no-only-test": "error",
"ava/no-skip-assert": "error",
"ava/no-skip-test": "error",
"ava/no-statement-after-end": "error",
"ava/no-todo-implementation": "error",
"ava/no-todo-test": "warn",
"ava/no-unknown-modifiers": "error",
"ava/prefer-async-await": "error",
"ava/prefer-power-assert": "off",
"ava/prefer-t-regex": "error",
"ava/test-ended": "error",
"ava/test-title": "error",
"ava/test-title-format": "off",
"ava/use-t": "error",
"ava/use-t-throws-async-well": "error",
"ava/use-t-well": "error",
"ava/use-test": "error",
"ava/use-true-false": "error"
}
}
}
The rules will only activate in test files.
- assertion-arguments - Enforce passing correct arguments to assertions.
- hooks-order - Enforce test hook ordering. (fixable)
- max-asserts - Limit the number of assertions in a test.
- no-async-fn-without-await - Ensure that async tests use
await
. - no-cb-test - Ensure no
test.cb()
is used. - no-duplicate-modifiers - Ensure tests do not have duplicate modifiers.
- no-identical-title - Ensure no tests have the same title.
- no-ignored-test-files - Ensure no tests are written in ignored files.
- no-import-test-files - Ensure no test files are imported anywhere.
- no-incorrect-deep-equal - Avoid using
deepEqual
with primitives. (fixable) - no-inline-assertions - Ensure assertions are not called from inline arrow functions. (fixable)
- no-invalid-end - Ensure
t.end()
is only called insidetest.cb()
. - no-nested-tests - Ensure no tests are nested.
- no-only-test - Ensure no
test.only()
are present. - no-skip-assert - Ensure no assertions are skipped.
- no-skip-test - Ensure no tests are skipped.
- no-statement-after-end - Ensure
t.end()
is the last statement executed. - no-todo-implementation - Ensure
test.todo()
is not given an implementation function. - no-todo-test - Ensure no
test.todo()
is used. - no-unknown-modifiers - Prevent the use of unknown test modifiers.
- prefer-async-await - Prefer using async/await instead of returning a Promise.
- prefer-power-assert - Allow only use of the asserts that have no power-assert alternative.
- prefer-t-regex - Prefer using
t.regex()
to test regular expressions. (fixable) - test-ended - Ensure callback tests are explicitly ended.
- test-title - Ensure tests have a title.
- test-title-format - Ensure test titles have a certain format.
- use-t - Ensure test functions use
t
as their parameter. - use-t-throws-async-well - Ensure that
t.throwsAsync()
andt.notThrowsAsync()
are awaited. (partly fixable) - use-t-well - Prevent the incorrect use of
t
. (partly fixable) - use-test - Ensure that AVA is imported with
test
as the variable name. - use-true-false - Ensure that
t.true()
/t.false()
are used instead oft.truthy()
/t.falsy()
.
This plugin exports a recommended
config that enforces good practices.
Enable it in your package.json
with the extends
option:
{
"name": "my-awesome-project",
"eslintConfig": {
"extends": "plugin:ava/recommended"
}
}
See the ESLint docs for more information about extending config files.
Note: This config will also enable the correct parser options and environment.