Note: If you installed ESLint globally then you must also install
npm install eslint-plugin-cypress --save-dev
yarn add eslint-plugin-cypress --dev
.eslintrc.json file to your
cypress directory with the following:
You can add rules:
You can allow certain globals provided by Cypress:
Use the recommended configuration and you can forego configuring plugins, rules, and env individually. See below for which rules are included.
These rules enforce some of the best practices recommended for using Cypress.
Rules with a check mark (✅) are enabled by default while using the
NOTE: These rules currently require eslint 5.0 or greater. If you would like support added for eslint 4.x, please 👍 this issue.
|✅||no-assigning-return-values||Prevent assigning return values of cy calls|
|✅||no-unnecessary-waiting||Prevent waiting for arbitrary time periods|
|✅||no-async-tests||Prevent using async/await in Cypress test case|
|assertion-before-screenshot||Ensure screenshots are preceded by an assertion|
|require-data-selectors||Only allow data-* attribute selectors (require-data-selectors)|
Using an assertion such as
expect(value).to.be.true can fail the ESLint rule
no-unused-expressions even though it's not an error in this case. To fix this, you can install and use eslint-plugin-chai-friendly.
npm install --save-dev eslint-plugin-chai-friendly
Or you can simply add its
To add a new rule:
- Fork and clone this repository
- Generate a new rule (a yeoman generator is available)
- Write test scenarios then implement logic
- Describe the rule in the generated
- Make sure all tests are passing
- Add the rule to this README
- Create a PR
Use the following commit message conventions: https://github.com/semantic-release/semantic-release#commit-message-format