eslint-plugin-ava icon indicating copy to clipboard operation
eslint-plugin-ava copied to clipboard

ESLint rules for AVA

eslint-plugin-ava Coverage Status

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 ➡

Install

$ npm install --save-dev eslint eslint-plugin-ava

Usage

Configure it in package.json.

{
	"name": "my-awesome-project",
	"eslintConfig": {
		"env": {
			"es6": true
		},
		"parserOptions": {
			"ecmaVersion": "latest",
			"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-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-nested-tests": "error",
			"ava/no-only-test": "error",
			"ava/no-skip-assert": "error",
			"ava/no-skip-test": "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-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"
		}
	}
}

Rules

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-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-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-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-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() and t.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 of t.truthy()/t.falsy().

Recommended config

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.