diff --git a/lib/rules/no-await-sync-events.ts b/lib/rules/no-await-sync-events.ts index 2076a59c..4b1c983a 100644 --- a/lib/rules/no-await-sync-events.ts +++ b/lib/rules/no-await-sync-events.ts @@ -35,16 +35,16 @@ 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) && property.key.name === 'delay' ); - if (!(node.name === 'userEvent' && methodNode.name === 'type' && withDelay)) { + if (!(node.name === 'userEvent' && ['type', 'keyboard'].includes(methodNode.name) && withDelay)) { context.report({ node: methodNode, messageId: 'noAwaitSyncEvents', 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' }, + ], } ], });