File size: 1,338 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# 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)
|