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": 2020, "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-invalid-modifier-chain": "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-invalid-modifier-chain - Ensure valid modifier chains in tests and hooks
- no-nested-tests - Ensure no tests are nested.
- no-only-test - Ensure no
test.only()
are present. (fixable) - no-skip-assert - Ensure no assertions are skipped.
- no-skip-test - Ensure no tests are skipped. (fixable)
- 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.