eslint-plugin-cypress-strict
v0.0.14
Published
Strict & opinionated ESLint rules for writing Cypress tests
Downloads
6
Readme
eslint-plugin-cypress-strict
🤘 Opinionated ESLint rules for writing Cypress.io tests 🤘
Installation & Setup
Install
# with NPM
npm i -D eslint-plugin-cypress-strict
# or Yarn
yarn add -D eslint-plugin-cypress-strict
Setup – adjust your .eslintrc
Option A: Via extends – this will add the plugin and use all the rules automatically
"extends": [ "plugin:cypress-strict/recommended" ]
Option B: Add the plugin and list individual rules manually
plugins: [ "cypress-strict" ]
rules: {
"cypress-strict/»rule name«": "error"
}
Supported Rules
CSS selectors over commands cypress-strict/selectors-over-commands
Prefer whole selectors directly inside cy.get(»selector«)
instead of using Cypress commands.
Why? When whole selector is in one string, it's easier to copy-paste it and debug it in Cypress playground / Dev Tools.
| 😐 | 🤩 |
| ------------------------------------- | --------------------------------- |
| cy.get("button").first()
| cy.get("button:first")
|
| cy.get("button").eq(3)
| cy.get("button:eq(3)")
|
| cy.get("button").not(".unwanted")
| cy.get("button:not(.unwanted)")
|
| cy.get("»modal«").find(»close btn«)
| cy.get("»modal« »close btn«")
|
| cy.get("tr").filter(".odd")
| cy.get("tr.odd")
|
Subject-less commands chained directly on cy cypress-strict/subjectless-commands-directly-on-cy
Why? Chained commands can cause impression that they are working with previous results.
cy.get(".parent").get(".child")
– Looks like it's selecting .child
inside .parent
cy.get("…").wait(5000)
- Looks like it's waiting 5s for the element...
"Should be" instead of "should to be" cypress-strict/no-should-to-be
Why? Should to be is incorrect
Contributing
🙏 🙏 🙏 Issues/PRs/gratitude is welcome 🙏 🙏 🙏
Development tips
Publish
npx pack publish
Link locally
In this project
npx pack build
cd pkg
yarn link
cd ..
# after changes
npx pack build
In dependant projects
yarn link "eslint-plugin-cypress-strict"