From 25ad2809624014c9cce8a28a2d6cf1c6c63b846b Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Sat, 13 Mar 2021 19:36:02 +0100 Subject: [PATCH 1/4] Update no-await-sync-events.ts --- lib/rules/no-await-sync-events.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rules/no-await-sync-events.ts b/lib/rules/no-await-sync-events.ts index 2076a59c..39c51686 100644 --- a/lib/rules/no-await-sync-events.ts +++ b/lib/rules/no-await-sync-events.ts @@ -44,7 +44,7 @@ export default ESLintUtils.RuleCreator(getDocsUrl)({ property.key.name === 'delay' ); - if (!(node.name === 'userEvent' && methodNode.name === 'type' && withDelay)) { + if (!(node.name === 'userEvent' && (methodNode.name === 'type' || methodNode.name === 'keyboard') && withDelay)) { context.report({ node: methodNode, messageId: 'noAwaitSyncEvents', From fe8a335ec116991cb1d8a0e37fb9620bd0c0d32c Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Sat, 20 Mar 2021 21:21:48 +0100 Subject: [PATCH 2/4] refactor: use includes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaƫl De Boey --- lib/rules/no-await-sync-events.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rules/no-await-sync-events.ts b/lib/rules/no-await-sync-events.ts index 39c51686..aecd58d8 100644 --- a/lib/rules/no-await-sync-events.ts +++ b/lib/rules/no-await-sync-events.ts @@ -44,7 +44,7 @@ export default ESLintUtils.RuleCreator(getDocsUrl)({ property.key.name === 'delay' ); - if (!(node.name === 'userEvent' && (methodNode.name === 'type' || methodNode.name === 'keyboard') && withDelay)) { + if (!(node.name === 'userEvent' && ['type', 'keyboard'].includes(methodNode.name) && withDelay)) { context.report({ node: methodNode, messageId: 'noAwaitSyncEvents', From 0ea3d7ff545fdac450e310efba3ffdb6976cde73 Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Sat, 20 Mar 2021 22:48:06 +0100 Subject: [PATCH 3/4] test: add tests for userEvent.keyboard --- tests/lib/rules/no-await-sync-events.test.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/lib/rules/no-await-sync-events.test.ts b/tests/lib/rules/no-await-sync-events.test.ts index c221b03c..1aef0bc6 100644 --- a/tests/lib/rules/no-await-sync-events.test.ts +++ b/tests/lib/rules/no-await-sync-events.test.ts @@ -138,6 +138,12 @@ ruleTester.run(RULE_NAME, rule, { } `, }, + { + code: `() => { + await userEvent.keyboard('foo', {delay: 1234}) + } + `, + }, ], invalid: [ @@ -157,9 +163,13 @@ ruleTester.run(RULE_NAME, rule, { import userEvent from '@testing-library/user-event'; test('should report sync event awaited', async() => { await userEvent.type('foo', 'bar', {hello: 1234}); + await userEvent.keyboard('foo', {hello: 1234}); }); `, - errors: [{ line: 4, messageId: 'noAwaitSyncEvents' },], + errors: [ + { line: 4, messageId: 'noAwaitSyncEvents' }, + { line: 5, messageId: 'noAwaitSyncEvents' }, + ], } ], }); From 22c5e39503f5c7b65b17f9b05b70fdd25df34ab5 Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Sat, 20 Mar 2021 22:57:42 +0100 Subject: [PATCH 4/4] fix: check last arg for delay --- lib/rules/no-await-sync-events.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/rules/no-await-sync-events.ts b/lib/rules/no-await-sync-events.ts index aecd58d8..4b1c983a 100644 --- a/lib/rules/no-await-sync-events.ts +++ b/lib/rules/no-await-sync-events.ts @@ -35,9 +35,9 @@ export default ESLintUtils.RuleCreator(getDocsUrl)({ const memberExpression = node.parent as TSESTree.MemberExpression; const methodNode = memberExpression.property as TSESTree.Identifier; const callExpression = memberExpression.parent as TSESTree.CallExpression; - const withDelay = callExpression.arguments.length >= 3 && - isObjectExpression(callExpression.arguments[2]) && - callExpression.arguments[2].properties.some( + const lastArg = callExpression.arguments[callExpression.arguments.length - 1] + const withDelay = isObjectExpression(lastArg) && + lastArg.properties.some( property => isProperty(property) && isIdentifier(property.key) &&