From bb3ced453366c7c8617fcda2f09c86fc0658f828 Mon Sep 17 00:00:00 2001 From: StyleShit <32631382+StyleShit@users.noreply.github.com> Date: Thu, 15 May 2025 14:20:09 +0300 Subject: [PATCH 1/2] fix: `no-wait-for-side-effects` doesn't detect await expression Closes #742 --- lib/node-utils/index.ts | 4 ++++ .../rules/no-wait-for-side-effects.test.ts | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/node-utils/index.ts b/lib/node-utils/index.ts index 0343e61f..425b0f0a 100644 --- a/lib/node-utils/index.ts +++ b/lib/node-utils/index.ts @@ -374,6 +374,10 @@ export function getPropertyIdentifierNode( return getPropertyIdentifierNode(node.expression); } + if (ASTUtils.isAwaitExpression(node)) { + return getPropertyIdentifierNode(node.argument); + } + return null; } diff --git a/tests/lib/rules/no-wait-for-side-effects.test.ts b/tests/lib/rules/no-wait-for-side-effects.test.ts index 45475961..cd959a05 100644 --- a/tests/lib/rules/no-wait-for-side-effects.test.ts +++ b/tests/lib/rules/no-wait-for-side-effects.test.ts @@ -112,6 +112,16 @@ ruleTester.run(RULE_NAME, rule, { // Side effects are allowed inside .then() userEvent.click(button); }) + `, + }, + { + code: ` + import { waitFor } from '${testingFramework}'; + import { notUserEvent } from 'somewhere-else'; + + waitFor(() => { + await notUserEvent.click(button) + }) `, }, ]), @@ -797,5 +807,19 @@ ruleTester.run(RULE_NAME, rule, { ], } as const, ]), + + ...SUPPORTED_TESTING_FRAMEWORKS.flatMap((testingFramework) => [ + { + code: ` + import { waitFor } from '${testingFramework}'; + import userEvent from '@testing-library/user-event' + + await waitFor(() => { + await userEvent.click(button); + }) + `, + errors: [{ line: 6, column: 11, messageId: 'noSideEffectsWaitFor' }], + }, + ]), ], }); From 712e32c4a91b7b309b372234989c9c64655d2bed Mon Sep 17 00:00:00 2001 From: StyleShit <32631382+StyleShit@users.noreply.github.com> Date: Sun, 18 May 2025 07:51:46 +0300 Subject: [PATCH 2/2] test: change test case --- tests/lib/rules/no-wait-for-side-effects.test.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/lib/rules/no-wait-for-side-effects.test.ts b/tests/lib/rules/no-wait-for-side-effects.test.ts index cd959a05..2cdbe093 100644 --- a/tests/lib/rules/no-wait-for-side-effects.test.ts +++ b/tests/lib/rules/no-wait-for-side-effects.test.ts @@ -814,11 +814,13 @@ ruleTester.run(RULE_NAME, rule, { import { waitFor } from '${testingFramework}'; import userEvent from '@testing-library/user-event' - await waitFor(() => { - await userEvent.click(button); - }) + it("some test", async () => { + await waitFor(async () => { + await fireEvent.click(screen.getByTestId("something")); + }); + }); `, - errors: [{ line: 6, column: 11, messageId: 'noSideEffectsWaitFor' }], + errors: [{ line: 7, column: 13, messageId: 'noSideEffectsWaitFor' }], }, ]), ],