From 722ad518a038c0fb074bf3b7c4884b9fc41aad39 Mon Sep 17 00:00:00 2001 From: Marcin Date: Wed, 27 Nov 2019 16:10:41 -0800 Subject: [PATCH 1/2] Added support for Identifier values --- lib/rules/no-unnecessary-waiting.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/rules/no-unnecessary-waiting.js b/lib/rules/no-unnecessary-waiting.js index 3bac062e..405f1f8e 100644 --- a/lib/rules/no-unnecessary-waiting.js +++ b/lib/rules/no-unnecessary-waiting.js @@ -21,8 +21,12 @@ module.exports = { create (context) { return { CallExpression (node) { - if (isCallingCyWait(node) && isNumberArgument(node)) { - context.report({ node, messageId: 'unexpected' }) + if (isCallingCyWait(node)) { + const scope = context.getScope() + + if (isIdentifierNumberConstArgument(node, scope) || isNumberArgument(node)) { + context.report({ node, messageId: 'unexpected' }) + } } }, } @@ -42,3 +46,14 @@ function isNumberArgument (node) { node.arguments[0].type === 'Literal' && typeof (node.arguments[0].value) === 'number' } + +function isIdentifierNumberConstArgument (node, scope) { + if (node.arguments[0].type !== 'Identifier') { + return false + } + + const resolvedIdentifier = scope.resolve(node.arguments[0]).resolved + const IdentifierValue = resolvedIdentifier.defs[0].node.init.value + + return typeof IdentifierValue === 'number' +} From 0ef8935c4fc604b07e072d636155b74134239f86 Mon Sep 17 00:00:00 2001 From: Marcin Date: Wed, 27 Nov 2019 16:11:24 -0800 Subject: [PATCH 2/2] Added extended tests for no unnecessary waiting to handle const situations. --- tests/lib/rules/no-unnecessary-waiting.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/lib/rules/no-unnecessary-waiting.js b/tests/lib/rules/no-unnecessary-waiting.js index 5532f71c..50d1bca9 100644 --- a/tests/lib/rules/no-unnecessary-waiting.js +++ b/tests/lib/rules/no-unnecessary-waiting.js @@ -18,11 +18,14 @@ ruleTester.run('no-unnecessary-waiting', rule, { { code: 'cy.clock(5000)', parserOptions }, { code: 'cy.scrollTo(0, 10)', parserOptions }, { code: 'cy.tick(500)', parserOptions }, + + { code: 'const someRequest="@someRequest"; cy.wait(someRequest)', parserOptions, errors }, ], invalid: [ { code: 'cy.wait(0)', parserOptions, errors }, { code: 'cy.wait(100)', parserOptions, errors }, { code: 'cy.wait(5000)', parserOptions, errors }, + { code: 'const someNumber=500; cy.wait(someNumber)', parserOptions, errors }, ], })