52 lines
1.3 KiB
Markdown
52 lines
1.3 KiB
Markdown
# Disallow using `async`/`await` in Cypress `before` methods (`cypress/no-async-before`)
|
|
|
|
<!-- end auto-generated rule header -->
|
|
Cypress commands that return a promise may cause side effects in `before`/`beforeEach` hooks, possibly causing unexpected behavior.
|
|
|
|
## Rule Details
|
|
|
|
This rule disallows using `async` `before` and `beforeEach` functions.
|
|
|
|
Examples of **incorrect** code for this rule:
|
|
|
|
```js
|
|
describe('my feature', () => {
|
|
before('my test case', async () => {
|
|
await cy.get('.myClass')
|
|
// other operations
|
|
})
|
|
})
|
|
```
|
|
|
|
```js
|
|
describe('my feature', () => {
|
|
before('my test case', async () => {
|
|
cy
|
|
.get('.myClass')
|
|
.click()
|
|
|
|
await someAsyncFunction()
|
|
})
|
|
})
|
|
```
|
|
|
|
Examples of **correct** code for this rule:
|
|
|
|
```js
|
|
describe('my feature', () => {
|
|
before('my test case', () => {
|
|
cy.get('.myClass')
|
|
// other operations
|
|
})
|
|
})
|
|
```
|
|
|
|
## When Not To Use It
|
|
|
|
If there are genuine use-cases for using `async/await` in your `before` hooks then you may not want to include this rule (or at least demote it to a warning).
|
|
|
|
## Further Reading
|
|
|
|
- [Mixing Async and Sync code](https://on.cypress.io/guides/core-concepts/introduction-to-cypress#Mixing-Async-and-Sync-code)
|
|
- [Commands Are Asynchronous](https://on.cypress.io/guides/core-concepts/introduction-to-cypress.html#Commands-Are-Asynchronous)
|