| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 'use strict'
- module.exports = {
- meta: {
- docs: {
- description: 'Prevent using async/await in Cypress test cases',
- category: 'Possible Errors',
- recommended: true,
- },
- messages: {
- unexpected: 'Avoid using async functions with Cypress tests',
- },
- },
- create (context) {
- function isTestBlock (callExpressionNode) {
- const { type, name } = callExpressionNode.callee
- return type === 'Identifier'
- && name === 'it' || name === 'test'
- }
- function isTestAsync (node) {
- return node.arguments
- && node.arguments.length >= 2
- && node.arguments[1].async === true
- }
- return {
- Identifier (node) {
- if (node.name === 'cy' || node.name === 'Cypress') {
- const ancestors = context.getAncestors()
- const asyncTestBlocks = ancestors
- .filter((n) => n.type === 'CallExpression')
- .filter(isTestBlock)
- .filter(isTestAsync)
- if (asyncTestBlocks.length >= 1) {
- asyncTestBlocks.forEach((node) => {
- context.report({ node, messageId: 'unexpected' })
- })
- }
- }
- },
- }
- },
- }
|