From 097705f557e89af612de9a0c002b8576acdf9608 Mon Sep 17 00:00:00 2001 From: StyleShit <32631382+StyleShit@users.noreply.github.com> Date: Thu, 15 May 2025 15:17:32 +0300 Subject: [PATCH 1/2] fix: `await-async-queries` has false positive with optional chaining Closes #882 --- lib/node-utils/index.ts | 4 ++++ tests/lib/rules/await-async-queries.test.ts | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lib/node-utils/index.ts b/lib/node-utils/index.ts index 0343e61f..a3211c1f 100644 --- a/lib/node-utils/index.ts +++ b/lib/node-utils/index.ts @@ -278,6 +278,10 @@ function getRootExpression( return parent.expressions[parent.expressions.length - 1] === expression ? getRootExpression(parent) : expression; + + case AST_NODE_TYPES.ChainExpression: + return getRootExpression(parent); + default: return expression; } diff --git a/tests/lib/rules/await-async-queries.test.ts b/tests/lib/rules/await-async-queries.test.ts index efab2cbd..6af7aae0 100644 --- a/tests/lib/rules/await-async-queries.test.ts +++ b/tests/lib/rules/await-async-queries.test.ts @@ -93,6 +93,9 @@ ruleTester.run(RULE_NAME, rule, { // async screen queries declaration are valid ...createTestCase((query) => `await screen.${query}('foo')`), + // async queries with optional chaining are valid + ...createTestCase((query) => `await screen?.${query}('foo')`), + // async @marko/testing-library screen queries declaration are valid ...createTestCase((query) => `await screen.${query}('foo')`, { testingFramework: '@marko/testing-library', From 764c9a55970d803ff1c0dc69d7cdec9a731b473c Mon Sep 17 00:00:00 2001 From: StyleShit <32631382+StyleShit@users.noreply.github.com> Date: Sun, 18 May 2025 07:55:32 +0300 Subject: [PATCH 2/2] test: add test case --- tests/lib/rules/await-async-queries.test.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/lib/rules/await-async-queries.test.ts b/tests/lib/rules/await-async-queries.test.ts index 6af7aae0..ebc48035 100644 --- a/tests/lib/rules/await-async-queries.test.ts +++ b/tests/lib/rules/await-async-queries.test.ts @@ -96,6 +96,18 @@ ruleTester.run(RULE_NAME, rule, { // async queries with optional chaining are valid ...createTestCase((query) => `await screen?.${query}('foo')`), + ...createTestCase( + (query) => ` + it('test case', async () => { + let renderResult: RenderResult | undefined; + + renderResult = render(