From c1678a15546a8729baa0fc1f3d8e6f81c1d1d79e Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 30 Mar 2026 18:52:00 +0200 Subject: [PATCH 1/9] feat: support `shadow-dom-testing-library` --- src/utils/index.ts | 36 ++++--- tests/rules/await-async-queries.test.ts | 6 ++ tests/rules/await-async-utils.test.ts | 1 + tests/rules/no-container.test.ts | 1 + tests/rules/no-debugging-utils.test.ts | 1 + tests/rules/no-node-access.test.ts | 1 + tests/rules/no-render-in-lifecycle.test.ts | 1 + tests/rules/no-test-id-queries.test.ts | 100 +++++++++++------- tests/rules/prefer-find-by.test.ts | 1 + .../prefer-query-by-disappearance.test.ts | 1 + tests/rules/prefer-screen-queries.test.ts | 1 + tests/utils/is-testing-library-module.test.ts | 3 +- 12 files changed, 99 insertions(+), 54 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 065a15b9..53966db7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -28,6 +28,7 @@ const LIBRARY_MODULES = [ '@testing-library/vue', '@testing-library/svelte', '@marko/testing-library', + 'shadow-dom-testing-library', ] as const; const USER_EVENT_MODULE = '@testing-library/user-event'; @@ -59,6 +60,15 @@ const ALL_QUERIES_METHODS = [ 'ByDisplayValue', 'ByRole', 'ByTestId', + // queries coming from 'shadow-dom-testing-library' + 'ByShadowLabelText', + 'ByShadowPlaceholderText', + 'ByShadowText', + 'ByShadowAltText', + 'ByShadowTitle', + 'ByShadowDisplayValue', + 'ByShadowRole', + 'ByShadowTestId', ] as const; const SYNC_QUERIES_COMBINATIONS = combineQueries( @@ -157,27 +167,27 @@ const PRESENCE_MATCHERS = [ const ABSENCE_MATCHERS = ['toBeNull', 'toBeFalsy'] as const; export { - combineQueries, - getDocsUrl, - SYNC_QUERIES_VARIANTS, - ASYNC_QUERIES_VARIANTS, - ALL_QUERIES_VARIANTS, + ABSENCE_MATCHERS, + ALL_QUERIES_COMBINATIONS, ALL_QUERIES_METHODS, - SYNC_QUERIES_COMBINATIONS, + ALL_QUERIES_VARIANTS, + ALL_RETURNING_NODES, ASYNC_QUERIES_COMBINATIONS, - ALL_QUERIES_COMBINATIONS, + ASYNC_QUERIES_VARIANTS, ASYNC_UTILS, + combineQueries, DEBUG_UTILS, + EVENT_HANDLER_METHODS, EVENTS_SIMULATORS, - TESTING_FRAMEWORK_SETUP_HOOKS, + getDocsUrl, LIBRARY_MODULES, - PROPERTIES_RETURNING_NODES, METHODS_RETURNING_NODES, - ALL_RETURNING_NODES, + OLD_LIBRARY_MODULES, PRESENCE_MATCHERS, - ABSENCE_MATCHERS, - EVENT_HANDLER_METHODS, + PROPERTIES_RETURNING_NODES, + SYNC_QUERIES_COMBINATIONS, + SYNC_QUERIES_VARIANTS, + TESTING_FRAMEWORK_SETUP_HOOKS, USER_EVENT_METHODS, USER_EVENT_MODULE, - OLD_LIBRARY_MODULES, }; diff --git a/tests/rules/await-async-queries.test.ts b/tests/rules/await-async-queries.test.ts index 932a5ac2..1485c058 100644 --- a/tests/rules/await-async-queries.test.ts +++ b/tests/rules/await-async-queries.test.ts @@ -25,6 +25,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; interface TestCode { @@ -121,6 +122,11 @@ ruleTester.run(rule.name, rule, { testingFramework: '@marko/testing-library', }), + // async shadow-dom-testing-library screen queries declaration are valid + ...createTestCase((query) => `await screen.${query}('foo')`, { + testingFramework: 'shadow-dom-testing-library', + }), + // async queries not called are valid ...createTestCase((query) => `expect(screen.${query}).toBeDefined()`, { isAsync: false, diff --git a/tests/rules/await-async-utils.test.ts b/tests/rules/await-async-utils.test.ts index 2713e99f..89cd9ed9 100644 --- a/tests/rules/await-async-utils.test.ts +++ b/tests/rules/await-async-utils.test.ts @@ -19,6 +19,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/no-container.test.ts b/tests/rules/no-container.test.ts index e4fcec8b..4b6db2d4 100644 --- a/tests/rules/no-container.test.ts +++ b/tests/rules/no-container.test.ts @@ -8,6 +8,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/no-debugging-utils.test.ts b/tests/rules/no-debugging-utils.test.ts index db025f82..067ae14a 100644 --- a/tests/rules/no-debugging-utils.test.ts +++ b/tests/rules/no-debugging-utils.test.ts @@ -8,6 +8,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/no-node-access.test.ts b/tests/rules/no-node-access.test.ts index 2c82251e..fb332957 100644 --- a/tests/rules/no-node-access.test.ts +++ b/tests/rules/no-node-access.test.ts @@ -18,6 +18,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/no-render-in-lifecycle.test.ts b/tests/rules/no-render-in-lifecycle.test.ts index f47dc771..f8bee1ef 100644 --- a/tests/rules/no-render-in-lifecycle.test.ts +++ b/tests/rules/no-render-in-lifecycle.test.ts @@ -9,6 +9,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/no-test-id-queries.test.ts b/tests/rules/no-test-id-queries.test.ts index 5dddc56a..f1e75555 100644 --- a/tests/rules/no-test-id-queries.test.ts +++ b/tests/rules/no-test-id-queries.test.ts @@ -9,6 +9,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; const QUERIES = [ @@ -20,6 +21,47 @@ const QUERIES = [ 'findAllByTestId', ]; +const createInvalidTestCase = (framework: string, query: string) => { + return [ + { + code: ` + import { render } from '${framework}'; + + test('test', async () => { + const { ${query} } = render(); + + expect(${query}('my-test-id')).toBeInTheDocument(); + }); + `, + errors: [ + { + messageId: 'noTestIdQueries', + line: 7, + column: 14, + }, + ], + }, + { + code: ` + import { render, screen } from '${framework}'; + + test('test', async () => { + render(); + + expect(screen.${query}('my-test-id')).toBeInTheDocument(); + }); + `, + errors: [ + { + messageId: 'noTestIdQueries', + line: 7, + column: 14, + }, + ], + }, + ] as const; +}; + ruleTester.run(rule.name, rule, { valid: [ ` @@ -43,44 +85,22 @@ ruleTester.run(rule.name, rule, { `, ], - invalid: SUPPORTED_TESTING_FRAMEWORKS.flatMap((framework) => - QUERIES.flatMap((query) => [ - { - code: ` - import { render } from '${framework}'; - - test('test', async () => { - const { ${query} } = render(); - - expect(${query}('my-test-id')).toBeInTheDocument(); - }); - `, - errors: [ - { - messageId: 'noTestIdQueries', - line: 7, - column: 14, - }, - ], - }, - { - code: ` - import { render, screen } from '${framework}'; - - test('test', async () => { - render(); - - expect(screen.${query}('my-test-id')).toBeInTheDocument(); - }); - `, - errors: [ - { - messageId: 'noTestIdQueries', - line: 7, - column: 14, - }, - ], - }, - ]) - ), + invalid: [ + ...SUPPORTED_TESTING_FRAMEWORKS.flatMap((framework) => + QUERIES.flatMap((query) => createInvalidTestCase(framework, query)) + ), + // special cases for shadow-dom-testing-library + ...[ + 'ByShadowLabelText', + 'ByShadowPlaceholderText', + 'ByShadowText', + 'ByShadowAltText', + 'ByShadowTitle', + 'ByShadowDisplayValue', + 'ByShadowRole', + 'ByShadowTestId', + ].flatMap((query) => + createInvalidTestCase('shadow-dom-testing-library', query) + ), + ], }); diff --git a/tests/rules/prefer-find-by.test.ts b/tests/rules/prefer-find-by.test.ts index e1b2b8d2..ae226d04 100644 --- a/tests/rules/prefer-find-by.test.ts +++ b/tests/rules/prefer-find-by.test.ts @@ -19,6 +19,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; function buildFindByMethod(queryMethod: string) { diff --git a/tests/rules/prefer-query-by-disappearance.test.ts b/tests/rules/prefer-query-by-disappearance.test.ts index 4700299f..59a71abd 100644 --- a/tests/rules/prefer-query-by-disappearance.test.ts +++ b/tests/rules/prefer-query-by-disappearance.test.ts @@ -9,6 +9,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; ruleTester.run(rule.name, rule, { diff --git a/tests/rules/prefer-screen-queries.test.ts b/tests/rules/prefer-screen-queries.test.ts index 6d60153d..84396a9c 100644 --- a/tests/rules/prefer-screen-queries.test.ts +++ b/tests/rules/prefer-screen-queries.test.ts @@ -14,6 +14,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', + 'shadow-dom-testing-library', ]; const CUSTOM_QUERY_COMBINATIONS = combineQueries(ALL_QUERIES_VARIANTS, [ diff --git a/tests/utils/is-testing-library-module.test.ts b/tests/utils/is-testing-library-module.test.ts index 84edc728..7b2fe8d7 100644 --- a/tests/utils/is-testing-library-module.test.ts +++ b/tests/utils/is-testing-library-module.test.ts @@ -1,4 +1,4 @@ -import { it, expect, describe } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { isCustomTestingLibraryModule, @@ -20,6 +20,7 @@ const LIBRARY_MODULES = [ '@testing-library/vue', '@testing-library/svelte', '@marko/testing-library', + 'shadow-dom-testing-library', ] as const; const USER_EVENT_MODULE = '@testing-library/user-event'; From 1a783f78929082e8b657b8414b693cc4f6deacb1 Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 30 Mar 2026 19:03:36 +0200 Subject: [PATCH 2/9] fix: no-test-id --- src/rules/no-test-id-queries.ts | 7 ++++++- tests/rules/no-test-id-queries.test.ts | 14 ++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/rules/no-test-id-queries.ts b/src/rules/no-test-id-queries.ts index 88f79e84..556eebc1 100644 --- a/src/rules/no-test-id-queries.ts +++ b/src/rules/no-test-id-queries.ts @@ -7,7 +7,12 @@ const RULE_NAME = 'no-test-id-queries'; export type MessageIds = 'noTestIdQueries'; type Options = []; -const QUERIES_REGEX = `/^(${ALL_QUERIES_VARIANTS.join('|')})TestId$/`; +const QUERY_VARIANTS = [ + ...ALL_QUERIES_VARIANTS, + ...ALL_QUERIES_VARIANTS.map((query) => `${query}Shadow` as const), +]; + +const QUERIES_REGEX = `/^(${QUERY_VARIANTS.join('|')})TestId$/`; export default createTestingLibraryRule({ name: RULE_NAME, diff --git a/tests/rules/no-test-id-queries.test.ts b/tests/rules/no-test-id-queries.test.ts index f1e75555..1aa0debd 100644 --- a/tests/rules/no-test-id-queries.test.ts +++ b/tests/rules/no-test-id-queries.test.ts @@ -91,14 +91,12 @@ ruleTester.run(rule.name, rule, { ), // special cases for shadow-dom-testing-library ...[ - 'ByShadowLabelText', - 'ByShadowPlaceholderText', - 'ByShadowText', - 'ByShadowAltText', - 'ByShadowTitle', - 'ByShadowDisplayValue', - 'ByShadowRole', - 'ByShadowTestId', + 'getByShadowTestId', + 'queryByShadowTestId', + 'getAllByShadowTestId', + 'queryAllByShadowTestId', + 'findByShadowTestId', + 'findAllByShadowTestId', ].flatMap((query) => createInvalidTestCase('shadow-dom-testing-library', query) ), From e5f9d068871721d69ef802f7dfb1434c45343dc8 Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 30 Mar 2026 19:47:55 +0200 Subject: [PATCH 3/9] refactor: uncomment for await-async-utils test --- tests/rules/await-async-utils.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/rules/await-async-utils.test.ts b/tests/rules/await-async-utils.test.ts index 89cd9ed9..d1633c9c 100644 --- a/tests/rules/await-async-utils.test.ts +++ b/tests/rules/await-async-utils.test.ts @@ -19,7 +19,7 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', - 'shadow-dom-testing-library', + // 'shadow-dom-testing-library', does not export waitFor and waitForElementToBeRemoved utils, so not relevant to this rule ]; ruleTester.run(rule.name, rule, { From 12c7ccfa6b46e77d6741c3c2bfd4151b570fc4a9 Mon Sep 17 00:00:00 2001 From: "Alexander S." Date: Thu, 9 Apr 2026 21:47:48 +0200 Subject: [PATCH 4/9] Apply suggestion from @Sysix Signed-off-by: Alexander S. --- tests/rules/prefer-find-by.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/rules/prefer-find-by.test.ts b/tests/rules/prefer-find-by.test.ts index ae226d04..288eef80 100644 --- a/tests/rules/prefer-find-by.test.ts +++ b/tests/rules/prefer-find-by.test.ts @@ -19,7 +19,10 @@ const SUPPORTED_TESTING_FRAMEWORKS = [ '@testing-library/react', '@testing-library/vue', '@marko/testing-library', - 'shadow-dom-testing-library', + // list of supported frameworks, but not tested + // this test suite has too much test cases already, + // so we are skipping some of them to avoid making it even bigger + // 'shadow-dom-testing-library' ]; function buildFindByMethod(queryMethod: string) { From 79cf7487d80679fa8f42583677cc64f5b5a0b74c Mon Sep 17 00:00:00 2001 From: Sysix Date: Sun, 12 Apr 2026 17:58:29 +0200 Subject: [PATCH 5/9] ci: --maxWorkers=2 for ci test --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index aa5f2d76..eb175a1c 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "eslint-remote-tester": "eslint-remote-tester --config eslint-remote-tester.config.ts", "semantic-release": "semantic-release", "test": "vitest run", - "test:ci": "vitest run --coverage", + "test:ci": "vitest run --coverage --maxWorkers=2", "test:ui": "vitest --ui", "test:watch": "vitest", "type-check": "tsc --noEmit" @@ -62,10 +62,10 @@ "@commitlint/config-conventional": "20.5.0", "@eslint/eslintrc": "3.3.5", "@eslint/js": "9.35.0", - "@types/node": "22.19.17", + "@types/node": "22.19.15", "@typescript-eslint/rule-tester": "^8.56.0", "@vitest/coverage-v8": "3.2.4", - "@vitest/eslint-plugin": "1.6.14", + "@vitest/eslint-plugin": "1.6.13", "@vitest/ui": "3.2.4", "eslint": "9.35.0", "eslint-config-prettier": "10.1.8", From 100f9e436c9debf387993551862220fa1aa4013f Mon Sep 17 00:00:00 2001 From: Sysix Date: Sun, 12 Apr 2026 17:59:50 +0200 Subject: [PATCH 6/9] fix: after merge --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 677a2335..fbc97ba9 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@commitlint/config-conventional": "20.5.0", "@eslint/eslintrc": "3.3.5", "@eslint/js": "9.35.0", - "@types/node": "22.19.15", + "@types/node": "22.19.17", "@typescript-eslint/rule-tester": "^8.56.0", "@vitest/coverage-v8": "3.2.4", "@vitest/eslint-plugin": "1.6.15", From 5f11f4c215b243b1c643c1fa0a776e7d2e208063 Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 4 May 2026 20:00:29 +0200 Subject: [PATCH 7/9] feat: add recommended config --- src/configs/shadow-dom.ts | 31 ++++++++++++++++++++ src/rules/await-async-events.ts | 1 + src/rules/await-async-queries.ts | 1 + src/rules/await-async-utils.ts | 1 + src/rules/consistent-data-testid.ts | 1 + src/rules/no-await-sync-events.ts | 1 + src/rules/no-await-sync-queries.ts | 1 + src/rules/no-container.ts | 1 + src/rules/no-debugging-utils.ts | 3 +- src/rules/no-dom-import.ts | 3 +- src/rules/no-global-regexp-flag-in-query.ts | 9 +++--- src/rules/no-manual-cleanup.ts | 1 + src/rules/no-node-access.ts | 1 + src/rules/no-promise-in-fire-event.ts | 1 + src/rules/no-render-in-lifecycle.ts | 1 + src/rules/no-test-id-queries.ts | 1 + src/rules/no-unnecessary-act.ts | 1 + src/rules/no-wait-for-multiple-assertions.ts | 1 + src/rules/no-wait-for-side-effects.ts | 7 +++-- src/rules/no-wait-for-snapshot.ts | 1 + src/rules/prefer-explicit-assert.ts | 5 ++-- src/rules/prefer-find-by.ts | 3 +- src/rules/prefer-implicit-assert.ts | 3 +- src/rules/prefer-presence-queries.ts | 1 + src/rules/prefer-query-by-disappearance.ts | 7 +++-- src/rules/prefer-query-matchers.ts | 1 + src/rules/prefer-screen-queries.ts | 1 + src/rules/prefer-user-event-setup.ts | 1 + src/rules/prefer-user-event.ts | 1 + src/rules/render-result-naming-convention.ts | 1 + src/utils/types.ts | 1 + 31 files changed, 77 insertions(+), 16 deletions(-) create mode 100644 src/configs/shadow-dom.ts diff --git a/src/configs/shadow-dom.ts b/src/configs/shadow-dom.ts new file mode 100644 index 00000000..551cfb8f --- /dev/null +++ b/src/configs/shadow-dom.ts @@ -0,0 +1,31 @@ +// THIS CODE WAS AUTOMATICALLY GENERATED +// DO NOT EDIT THIS CODE BY HAND +// YOU CAN REGENERATE IT USING pnpm run generate:configs + +import type { Linter } from 'eslint'; + +export default { + rules: { + 'testing-library/await-async-events': [ + 'error', + { eventModule: ['userEvent'] }, + ], + 'testing-library/await-async-queries': 'error', + 'testing-library/await-async-utils': 'error', + 'testing-library/no-await-sync-events': [ + 'error', + { eventModules: ['fire-event'] }, + ], + 'testing-library/no-await-sync-queries': 'error', + 'testing-library/no-global-regexp-flag-in-query': 'error', + 'testing-library/no-node-access': 'error', + 'testing-library/no-promise-in-fire-event': 'error', + 'testing-library/no-wait-for-multiple-assertions': 'error', + 'testing-library/no-wait-for-side-effects': 'error', + 'testing-library/no-wait-for-snapshot': 'error', + 'testing-library/prefer-find-by': 'error', + 'testing-library/prefer-presence-queries': 'error', + 'testing-library/prefer-query-by-disappearance': 'error', + 'testing-library/prefer-screen-queries': 'error', + }, +} satisfies { rules: Linter.RulesRecord }; diff --git a/src/rules/await-async-events.ts b/src/rules/await-async-events.ts index 691dc9d2..a51ef483 100644 --- a/src/rules/await-async-events.ts +++ b/src/rules/await-async-events.ts @@ -40,6 +40,7 @@ export default createTestingLibraryRule({ vue: ['error', { eventModule: ['fireEvent', 'userEvent'] }], svelte: ['error', { eventModule: ['fireEvent', 'userEvent'] }], marko: ['error', { eventModule: ['fireEvent', 'userEvent'] }], + 'shadow-dom': ['error', { eventModule: ['userEvent'] }], }, }, messages: { diff --git a/src/rules/await-async-queries.ts b/src/rules/await-async-queries.ts index c347bcbe..0bb05f56 100644 --- a/src/rules/await-async-queries.ts +++ b/src/rules/await-async-queries.ts @@ -32,6 +32,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/await-async-utils.ts b/src/rules/await-async-utils.ts index 6609aa8c..57f3e05b 100644 --- a/src/rules/await-async-utils.ts +++ b/src/rules/await-async-utils.ts @@ -35,6 +35,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/consistent-data-testid.ts b/src/rules/consistent-data-testid.ts index 50f90e44..a7e21635 100644 --- a/src/rules/consistent-data-testid.ts +++ b/src/rules/consistent-data-testid.ts @@ -29,6 +29,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-await-sync-events.ts b/src/rules/no-await-sync-events.ts index b9ea58ba..8939d742 100644 --- a/src/rules/no-await-sync-events.ts +++ b/src/rules/no-await-sync-events.ts @@ -37,6 +37,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': ['error', { eventModules: DEFAULT_EVENT_MODULES }], }, }, messages: { diff --git a/src/rules/no-await-sync-queries.ts b/src/rules/no-await-sync-queries.ts index 834840ed..9afe7c08 100644 --- a/src/rules/no-await-sync-queries.ts +++ b/src/rules/no-await-sync-queries.ts @@ -21,6 +21,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-container.ts b/src/rules/no-container.ts index fae7fa73..2d5f3e63 100644 --- a/src/rules/no-container.ts +++ b/src/rules/no-container.ts @@ -29,6 +29,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-debugging-utils.ts b/src/rules/no-debugging-utils.ts index 844d0009..42641790 100644 --- a/src/rules/no-debugging-utils.ts +++ b/src/rules/no-debugging-utils.ts @@ -13,7 +13,7 @@ import { } from '../node-utils'; import { DEBUG_UTILS, getDeclaredVariables } from '../utils'; -import type { TSESTree, JSONSchema } from '@typescript-eslint/utils'; +import type { JSONSchema, TSESTree } from '@typescript-eslint/utils'; type DebugUtilsToCheckForConfig = Record<(typeof DEBUG_UTILS)[number], boolean>; type DebugUtilsToCheckFor = Partial; @@ -44,6 +44,7 @@ export default createTestingLibraryRule({ vue: 'warn', svelte: 'warn', marko: 'warn', + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-dom-import.ts b/src/rules/no-dom-import.ts index 37908fdf..d5ed0e8c 100644 --- a/src/rules/no-dom-import.ts +++ b/src/rules/no-dom-import.ts @@ -1,5 +1,5 @@ import { createTestingLibraryRule } from '../create-testing-library-rule'; -import { isCallExpression, getImportModuleName } from '../node-utils'; +import { getImportModuleName, isCallExpression } from '../node-utils'; import type { TSESTree } from '@typescript-eslint/utils'; @@ -42,6 +42,7 @@ export default createTestingLibraryRule({ vue: ['error', 'vue'], svelte: ['error', 'svelte'], marko: ['error', 'marko'], + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-global-regexp-flag-in-query.ts b/src/rules/no-global-regexp-flag-in-query.ts index 275725d1..5373147a 100644 --- a/src/rules/no-global-regexp-flag-in-query.ts +++ b/src/rules/no-global-regexp-flag-in-query.ts @@ -2,12 +2,12 @@ import { ASTUtils } from '@typescript-eslint/utils'; import { createTestingLibraryRule } from '../create-testing-library-rule'; import { - isMemberExpression, - isCallExpression, - isProperty, - isObjectExpression, getDeepestIdentifierNode, + isCallExpression, isLiteral, + isMemberExpression, + isObjectExpression, + isProperty, } from '../node-utils'; import type { TSESTree } from '@typescript-eslint/utils'; @@ -29,6 +29,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-manual-cleanup.ts b/src/rules/no-manual-cleanup.ts index e26d13f7..495e40f0 100644 --- a/src/rules/no-manual-cleanup.ts +++ b/src/rules/no-manual-cleanup.ts @@ -36,6 +36,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-node-access.ts b/src/rules/no-node-access.ts index ba195cb0..1e84812e 100644 --- a/src/rules/no-node-access.ts +++ b/src/rules/no-node-access.ts @@ -32,6 +32,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-promise-in-fire-event.ts b/src/rules/no-promise-in-fire-event.ts index d2a1537b..8c9f0d61 100644 --- a/src/rules/no-promise-in-fire-event.ts +++ b/src/rules/no-promise-in-fire-event.ts @@ -30,6 +30,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-render-in-lifecycle.ts b/src/rules/no-render-in-lifecycle.ts index d893edff..1ecf4d5a 100644 --- a/src/rules/no-render-in-lifecycle.ts +++ b/src/rules/no-render-in-lifecycle.ts @@ -59,6 +59,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-test-id-queries.ts b/src/rules/no-test-id-queries.ts index 556eebc1..885273df 100644 --- a/src/rules/no-test-id-queries.ts +++ b/src/rules/no-test-id-queries.ts @@ -27,6 +27,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-unnecessary-act.ts b/src/rules/no-unnecessary-act.ts index b410f173..6635f175 100644 --- a/src/rules/no-unnecessary-act.ts +++ b/src/rules/no-unnecessary-act.ts @@ -34,6 +34,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: 'error', + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/no-wait-for-multiple-assertions.ts b/src/rules/no-wait-for-multiple-assertions.ts index 2853ecb3..757b1ca7 100644 --- a/src/rules/no-wait-for-multiple-assertions.ts +++ b/src/rules/no-wait-for-multiple-assertions.ts @@ -26,6 +26,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-wait-for-side-effects.ts b/src/rules/no-wait-for-side-effects.ts index c00a0164..88e79edd 100644 --- a/src/rules/no-wait-for-side-effects.ts +++ b/src/rules/no-wait-for-side-effects.ts @@ -3,12 +3,12 @@ import { isAwaitExpression } from '@typescript-eslint/utils/ast-utils'; import { createTestingLibraryRule } from '../create-testing-library-rule'; import { getPropertyIdentifierNode, - isExpressionStatement, - isVariableDeclaration, + hasThenProperty, isAssignmentExpression, isCallExpression, + isExpressionStatement, isSequenceExpression, - hasThenProperty, + isVariableDeclaration, } from '../node-utils'; import { getSourceCode } from '../utils'; @@ -31,6 +31,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/no-wait-for-snapshot.ts b/src/rules/no-wait-for-snapshot.ts index d79bbc2f..7c8374cb 100644 --- a/src/rules/no-wait-for-snapshot.ts +++ b/src/rules/no-wait-for-snapshot.ts @@ -28,6 +28,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/prefer-explicit-assert.ts b/src/rules/prefer-explicit-assert.ts index e76657ee..6960210b 100644 --- a/src/rules/prefer-explicit-assert.ts +++ b/src/rules/prefer-explicit-assert.ts @@ -1,4 +1,4 @@ -import { TSESTree, ASTUtils } from '@typescript-eslint/utils'; +import { ASTUtils, TSESTree } from '@typescript-eslint/utils'; import { createTestingLibraryRule } from '../create-testing-library-rule'; import { @@ -6,7 +6,7 @@ import { isCallExpression, isMemberExpression, } from '../node-utils'; -import { PRESENCE_MATCHERS, ABSENCE_MATCHERS } from '../utils'; +import { ABSENCE_MATCHERS, PRESENCE_MATCHERS } from '../utils'; const RULE_NAME = 'prefer-explicit-assert'; export type MessageIds = @@ -77,6 +77,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/prefer-find-by.ts b/src/rules/prefer-find-by.ts index 356b4624..a85d82f4 100644 --- a/src/rules/prefer-find-by.ts +++ b/src/rules/prefer-find-by.ts @@ -15,7 +15,7 @@ import { } from '../node-utils'; import { getScope, getSourceCode } from '../utils'; -import type { TSESTree, TSESLint } from '@typescript-eslint/utils'; +import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; const RULE_NAME = 'prefer-find-by'; export type MessageIds = 'preferFindBy'; @@ -65,6 +65,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/prefer-implicit-assert.ts b/src/rules/prefer-implicit-assert.ts index c993a115..5a826fcc 100644 --- a/src/rules/prefer-implicit-assert.ts +++ b/src/rules/prefer-implicit-assert.ts @@ -4,7 +4,7 @@ import { createTestingLibraryRule } from '../create-testing-library-rule'; import { isCallExpression, isMemberExpression } from '../node-utils'; import type { TestingLibrarySettings } from '../create-testing-library-rule/detect-testing-library-utils'; -import type { TSESTree, TSESLint } from '@typescript-eslint/utils'; +import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; const RULE_NAME = 'prefer-implicit-assert'; export type MessageIds = 'preferImplicitAssert'; @@ -69,6 +69,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/prefer-presence-queries.ts b/src/rules/prefer-presence-queries.ts index 065c3c26..1dfaca57 100644 --- a/src/rules/prefer-presence-queries.ts +++ b/src/rules/prefer-presence-queries.ts @@ -25,6 +25,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/prefer-query-by-disappearance.ts b/src/rules/prefer-query-by-disappearance.ts index 2c6a03de..3bff2279 100644 --- a/src/rules/prefer-query-by-disappearance.ts +++ b/src/rules/prefer-query-by-disappearance.ts @@ -2,12 +2,12 @@ import { createTestingLibraryRule } from '../create-testing-library-rule'; import { getPropertyIdentifierNode, isArrowFunctionExpression, + isBlockStatement, isCallExpression, - isMemberExpression, - isFunctionExpression, isExpressionStatement, + isFunctionExpression, + isMemberExpression, isReturnStatement, - isBlockStatement, } from '../node-utils'; import type { TSESTree } from '@typescript-eslint/utils'; @@ -30,6 +30,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/prefer-query-matchers.ts b/src/rules/prefer-query-matchers.ts index 230b6caf..a38e76c1 100644 --- a/src/rules/prefer-query-matchers.ts +++ b/src/rules/prefer-query-matchers.ts @@ -27,6 +27,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/prefer-screen-queries.ts b/src/rules/prefer-screen-queries.ts index 43e2e748..bce51d28 100644 --- a/src/rules/prefer-screen-queries.ts +++ b/src/rules/prefer-screen-queries.ts @@ -50,6 +50,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': 'error', }, }, messages: { diff --git a/src/rules/prefer-user-event-setup.ts b/src/rules/prefer-user-event-setup.ts index 553634c8..3a1dcd9d 100644 --- a/src/rules/prefer-user-event-setup.ts +++ b/src/rules/prefer-user-event-setup.ts @@ -27,6 +27,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/prefer-user-event.ts b/src/rules/prefer-user-event.ts index 103f354b..bda1aefc 100644 --- a/src/rules/prefer-user-event.ts +++ b/src/rules/prefer-user-event.ts @@ -81,6 +81,7 @@ export default createTestingLibraryRule({ vue: false, svelte: false, marko: false, + 'shadow-dom': false, }, }, messages: { diff --git a/src/rules/render-result-naming-convention.ts b/src/rules/render-result-naming-convention.ts index 4024cd55..fb430078 100644 --- a/src/rules/render-result-naming-convention.ts +++ b/src/rules/render-result-naming-convention.ts @@ -33,6 +33,7 @@ export default createTestingLibraryRule({ vue: 'error', svelte: 'error', marko: 'error', + 'shadow-dom': false, }, }, messages: { diff --git a/src/utils/types.ts b/src/utils/types.ts index d37ef85f..3867c6b8 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -33,6 +33,7 @@ export const SUPPORTED_TESTING_FRAMEWORKS = [ 'vue', 'svelte', 'marko', + 'shadow-dom', ] as const; export type SupportedTestingFramework = From 581054cd5541dc6944fc98884217e5da9dd54d1d Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 4 May 2026 20:52:25 +0200 Subject: [PATCH 8/9] docs: add shadow-dom badges --- .eslint-doc-generatorrc.js | 5 ++ README.md | 63 ++++++++++--------- docs/rules/await-async-events.md | 2 +- docs/rules/await-async-queries.md | 2 +- docs/rules/await-async-utils.md | 2 +- docs/rules/no-await-sync-events.md | 2 +- docs/rules/no-await-sync-queries.md | 2 +- docs/rules/no-global-regexp-flag-in-query.md | 2 +- docs/rules/no-node-access.md | 2 +- docs/rules/no-promise-in-fire-event.md | 2 +- docs/rules/no-wait-for-multiple-assertions.md | 2 +- docs/rules/no-wait-for-side-effects.md | 2 +- docs/rules/no-wait-for-snapshot.md | 2 +- docs/rules/prefer-find-by.md | 2 +- docs/rules/prefer-presence-queries.md | 2 +- docs/rules/prefer-query-by-disappearance.md | 2 +- docs/rules/prefer-screen-queries.md | 2 +- src/configs/index.ts | 2 + 18 files changed, 54 insertions(+), 46 deletions(-) diff --git a/.eslint-doc-generatorrc.js b/.eslint-doc-generatorrc.js index 88809479..14389c2b 100644 --- a/.eslint-doc-generatorrc.js +++ b/.eslint-doc-generatorrc.js @@ -27,6 +27,10 @@ export default { 'vue', '![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black)', ], + [ + 'shadow-dom', + '![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square)', + ], ], ignoreConfig: [ 'flat/angular', @@ -35,6 +39,7 @@ export default { 'flat/react', 'flat/svelte', 'flat/vue', + 'flat/shadow-dom', ], postprocess: async (content, path) => { const prettierConfig = await prettier.resolveConfig(path); diff --git a/README.md b/README.md index 6e334723..742a3072 100644 --- a/README.md +++ b/README.md @@ -324,41 +324,42 @@ module.exports = [ ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) Set in the `dom` configuration.\ ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) Set in the `marko` configuration.\ ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) Set in the `react` configuration.\ +![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) Set in the `shadow-dom` configuration.\ ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) Set in the `svelte` configuration.\ ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) Set in the `vue` configuration.\ πŸ”§ Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix). -| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | πŸ”§ | -| :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-- | -| [await-async-events](docs/rules/await-async-events.md) | Enforce promises from async event methods are handled | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [await-async-queries](docs/rules/await-async-queries.md) | Enforce promises from async queries to be handled | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [await-async-utils](docs/rules/await-async-utils.md) | Enforce promises from async utils to be awaited properly | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [consistent-data-testid](docs/rules/consistent-data-testid.md) | Ensures consistent usage of `data-testid` | | | | -| [no-await-sync-events](docs/rules/no-await-sync-events.md) | Disallow unnecessary `await` for sync events | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) | | | -| [no-await-sync-queries](docs/rules/no-await-sync-queries.md) | Disallow unnecessary `await` for sync queries | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [no-container](docs/rules/no-container.md) | Disallow the use of `container` methods | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [no-debugging-utils](docs/rules/no-debugging-utils.md) | Disallow the use of debugging utilities like `debug` | | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | -| [no-dom-import](docs/rules/no-dom-import.md) | Disallow importing from DOM Testing Library | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [no-global-regexp-flag-in-query](docs/rules/no-global-regexp-flag-in-query.md) | Disallow the use of the global RegExp flag (/g) in queries | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [no-manual-cleanup](docs/rules/no-manual-cleanup.md) | Disallow the use of `cleanup` | ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [no-node-access](docs/rules/no-node-access.md) | Disallow direct Node access | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [no-promise-in-fire-event](docs/rules/no-promise-in-fire-event.md) | Disallow the use of promises passed to a `fireEvent` method | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [no-render-in-lifecycle](docs/rules/no-render-in-lifecycle.md) | Disallow the use of `render` in testing frameworks setup functions | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [no-test-id-queries](docs/rules/no-test-id-queries.md) | Ensure no `data-testid` queries are used | | | | -| [no-unnecessary-act](docs/rules/no-unnecessary-act.md) | Disallow wrapping Testing Library utils or empty callbacks in `act` | ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) | | | -| [no-wait-for-multiple-assertions](docs/rules/no-wait-for-multiple-assertions.md) | Disallow the use of multiple `expect` calls inside `waitFor` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [no-wait-for-side-effects](docs/rules/no-wait-for-side-effects.md) | Disallow the use of side effects in `waitFor` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [no-wait-for-snapshot](docs/rules/no-wait-for-snapshot.md) | Ensures no snapshot is generated inside of a `waitFor` call | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [prefer-explicit-assert](docs/rules/prefer-explicit-assert.md) | Suggest using explicit assertions rather than standalone queries | | | | -| [prefer-find-by](docs/rules/prefer-find-by.md) | Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [prefer-implicit-assert](docs/rules/prefer-implicit-assert.md) | Suggest using implicit assertions for getBy* & findBy* queries | | | | -| [prefer-presence-queries](docs/rules/prefer-presence-queries.md) | Ensure appropriate `get*`/`query*` queries are used with their respective matchers | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | -| [prefer-query-by-disappearance](docs/rules/prefer-query-by-disappearance.md) | Suggest using `queryBy*` queries when waiting for disappearance | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [prefer-query-matchers](docs/rules/prefer-query-matchers.md) | Ensure the configured `get*`/`query*` query is used with the corresponding matchers | | | | -| [prefer-screen-queries](docs/rules/prefer-screen-queries.md) | Suggest using `screen` while querying | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | -| [prefer-user-event](docs/rules/prefer-user-event.md) | Suggest using `userEvent` over `fireEvent` for simulating user interactions | | | | -| [prefer-user-event-setup](docs/rules/prefer-user-event-setup.md) | Suggest using userEvent with setup() instead of direct methods | | | | -| [render-result-naming-convention](docs/rules/render-result-naming-convention.md) | Enforce a valid naming for return value from `render` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | πŸ”§ | +| :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-- | +| [await-async-events](docs/rules/await-async-events.md) | Enforce promises from async event methods are handled | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [await-async-queries](docs/rules/await-async-queries.md) | Enforce promises from async queries to be handled | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [await-async-utils](docs/rules/await-async-utils.md) | Enforce promises from async utils to be awaited properly | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [consistent-data-testid](docs/rules/consistent-data-testid.md) | Ensures consistent usage of `data-testid` | | | | +| [no-await-sync-events](docs/rules/no-await-sync-events.md) | Disallow unnecessary `await` for sync events | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) | | | +| [no-await-sync-queries](docs/rules/no-await-sync-queries.md) | Disallow unnecessary `await` for sync queries | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [no-container](docs/rules/no-container.md) | Disallow the use of `container` methods | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [no-debugging-utils](docs/rules/no-debugging-utils.md) | Disallow the use of debugging utilities like `debug` | | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | +| [no-dom-import](docs/rules/no-dom-import.md) | Disallow importing from DOM Testing Library | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [no-global-regexp-flag-in-query](docs/rules/no-global-regexp-flag-in-query.md) | Disallow the use of the global RegExp flag (/g) in queries | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [no-manual-cleanup](docs/rules/no-manual-cleanup.md) | Disallow the use of `cleanup` | ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [no-node-access](docs/rules/no-node-access.md) | Disallow direct Node access | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [no-promise-in-fire-event](docs/rules/no-promise-in-fire-event.md) | Disallow the use of promises passed to a `fireEvent` method | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [no-render-in-lifecycle](docs/rules/no-render-in-lifecycle.md) | Disallow the use of `render` in testing frameworks setup functions | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [no-test-id-queries](docs/rules/no-test-id-queries.md) | Ensure no `data-testid` queries are used | | | | +| [no-unnecessary-act](docs/rules/no-unnecessary-act.md) | Disallow wrapping Testing Library utils or empty callbacks in `act` | ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) | | | +| [no-wait-for-multiple-assertions](docs/rules/no-wait-for-multiple-assertions.md) | Disallow the use of multiple `expect` calls inside `waitFor` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [no-wait-for-side-effects](docs/rules/no-wait-for-side-effects.md) | Disallow the use of side effects in `waitFor` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [no-wait-for-snapshot](docs/rules/no-wait-for-snapshot.md) | Ensures no snapshot is generated inside of a `waitFor` call | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [prefer-explicit-assert](docs/rules/prefer-explicit-assert.md) | Suggest using explicit assertions rather than standalone queries | | | | +| [prefer-find-by](docs/rules/prefer-find-by.md) | Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [prefer-implicit-assert](docs/rules/prefer-implicit-assert.md) | Suggest using implicit assertions for getBy* & findBy* queries | | | | +| [prefer-presence-queries](docs/rules/prefer-presence-queries.md) | Ensure appropriate `get*`/`query*` queries are used with their respective matchers | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | πŸ”§ | +| [prefer-query-by-disappearance](docs/rules/prefer-query-by-disappearance.md) | Suggest using `queryBy*` queries when waiting for disappearance | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [prefer-query-matchers](docs/rules/prefer-query-matchers.md) | Ensure the configured `get*`/`query*` query is used with the corresponding matchers | | | | +| [prefer-screen-queries](docs/rules/prefer-screen-queries.md) | Suggest using `screen` while querying | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | +| [prefer-user-event](docs/rules/prefer-user-event.md) | Suggest using `userEvent` over `fireEvent` for simulating user interactions | | | | +| [prefer-user-event-setup](docs/rules/prefer-user-event-setup.md) | Suggest using userEvent with setup() instead of direct methods | | | | +| [render-result-naming-convention](docs/rules/render-result-naming-convention.md) | Enforce a valid naming for return value from `render` | ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) | | | diff --git a/docs/rules/await-async-events.md b/docs/rules/await-async-events.md index 3515016a..e958ee0d 100644 --- a/docs/rules/await-async-events.md +++ b/docs/rules/await-async-events.md @@ -2,7 +2,7 @@ πŸ“ Enforce promises from async event methods are handled. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/await-async-queries.md b/docs/rules/await-async-queries.md index d0fbb4bb..b7bdef72 100644 --- a/docs/rules/await-async-queries.md +++ b/docs/rules/await-async-queries.md @@ -2,7 +2,7 @@ πŸ“ Enforce promises from async queries to be handled. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/await-async-utils.md b/docs/rules/await-async-utils.md index 1481bf1b..4a23c57e 100644 --- a/docs/rules/await-async-utils.md +++ b/docs/rules/await-async-utils.md @@ -2,7 +2,7 @@ πŸ“ Enforce promises from async utils to be awaited properly. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/no-await-sync-events.md b/docs/rules/no-await-sync-events.md index 554ef0a2..b9bfb82c 100644 --- a/docs/rules/no-await-sync-events.md +++ b/docs/rules/no-await-sync-events.md @@ -2,7 +2,7 @@ πŸ“ Disallow unnecessary `await` for sync events. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`. diff --git a/docs/rules/no-await-sync-queries.md b/docs/rules/no-await-sync-queries.md index b4b203b5..a1203178 100644 --- a/docs/rules/no-await-sync-queries.md +++ b/docs/rules/no-await-sync-queries.md @@ -2,7 +2,7 @@ πŸ“ Disallow unnecessary `await` for sync queries. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/no-global-regexp-flag-in-query.md b/docs/rules/no-global-regexp-flag-in-query.md index 384d62cc..59598ed5 100644 --- a/docs/rules/no-global-regexp-flag-in-query.md +++ b/docs/rules/no-global-regexp-flag-in-query.md @@ -2,7 +2,7 @@ πŸ“ Disallow the use of the global RegExp flag (/g) in queries. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/no-node-access.md b/docs/rules/no-node-access.md index 0e0ee80b..865d3fd7 100644 --- a/docs/rules/no-node-access.md +++ b/docs/rules/no-node-access.md @@ -2,7 +2,7 @@ πŸ“ Disallow direct Node access. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. diff --git a/docs/rules/no-promise-in-fire-event.md b/docs/rules/no-promise-in-fire-event.md index 0dcdcb28..a15aa4b6 100644 --- a/docs/rules/no-promise-in-fire-event.md +++ b/docs/rules/no-promise-in-fire-event.md @@ -2,7 +2,7 @@ πŸ“ Disallow the use of promises passed to a `fireEvent` method. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. diff --git a/docs/rules/no-wait-for-multiple-assertions.md b/docs/rules/no-wait-for-multiple-assertions.md index 4ddcab7e..1b029b2d 100644 --- a/docs/rules/no-wait-for-multiple-assertions.md +++ b/docs/rules/no-wait-for-multiple-assertions.md @@ -2,7 +2,7 @@ πŸ“ Disallow the use of multiple `expect` calls inside `waitFor`. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/no-wait-for-side-effects.md b/docs/rules/no-wait-for-side-effects.md index 3fc4a942..e2ed6570 100644 --- a/docs/rules/no-wait-for-side-effects.md +++ b/docs/rules/no-wait-for-side-effects.md @@ -2,7 +2,7 @@ πŸ“ Disallow the use of side effects in `waitFor`. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/no-wait-for-snapshot.md b/docs/rules/no-wait-for-snapshot.md index b66c84ec..a7a55b74 100644 --- a/docs/rules/no-wait-for-snapshot.md +++ b/docs/rules/no-wait-for-snapshot.md @@ -2,7 +2,7 @@ πŸ“ Ensures no snapshot is generated inside of a `waitFor` call. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. diff --git a/docs/rules/prefer-find-by.md b/docs/rules/prefer-find-by.md index 09a14c7a..5aa8b91d 100644 --- a/docs/rules/prefer-find-by.md +++ b/docs/rules/prefer-find-by.md @@ -2,7 +2,7 @@ πŸ“ Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/prefer-presence-queries.md b/docs/rules/prefer-presence-queries.md index 98798ea2..8f892a8a 100644 --- a/docs/rules/prefer-presence-queries.md +++ b/docs/rules/prefer-presence-queries.md @@ -2,7 +2,7 @@ πŸ“ Ensure appropriate `get*`/`query*` queries are used with their respective matchers. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/prefer-query-by-disappearance.md b/docs/rules/prefer-query-by-disappearance.md index 98d7c53b..99b4c133 100644 --- a/docs/rules/prefer-query-by-disappearance.md +++ b/docs/rules/prefer-query-by-disappearance.md @@ -2,7 +2,7 @@ πŸ“ Suggest using `queryBy*` queries when waiting for disappearance. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. diff --git a/docs/rules/prefer-screen-queries.md b/docs/rules/prefer-screen-queries.md index 2c6ae393..c34fa183 100644 --- a/docs/rules/prefer-screen-queries.md +++ b/docs/rules/prefer-screen-queries.md @@ -2,7 +2,7 @@ πŸ“ Suggest using `screen` while querying. -πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. +πŸ’Ό This rule is enabled in the following configs: ![badge-angular](https://img.shields.io/badge/-Angular-black?style=flat-square&logo=angular&logoColor=white&labelColor=DD0031&color=black) `angular`, ![badge-dom](https://img.shields.io/badge/%F0%9F%90%99-DOM-black?style=flat-square) `dom`, ![badge-marko](https://img.shields.io/badge/-Marko-black?style=flat-square&logo=marko&logoColor=white&labelColor=2596BE&color=black) `marko`, ![badge-react](https://img.shields.io/badge/-React-black?style=flat-square&logo=react&logoColor=white&labelColor=61DAFB&color=black) `react`, ![badge-shadow-dom](https://img.shields.io/badge/%F0%9F%90%99-Shadow_DOM-black?style=flat-square) `shadow-dom`, ![badge-svelte](https://img.shields.io/badge/-Svelte-black?style=flat-square&logo=svelte&logoColor=white&labelColor=FF3E00&color=black) `svelte`, ![badge-vue](https://img.shields.io/badge/-Vue-black?style=flat-square&logo=vue.js&logoColor=white&labelColor=4FC08D&color=black) `vue`. diff --git a/src/configs/index.ts b/src/configs/index.ts index ce11f06e..c4d95382 100644 --- a/src/configs/index.ts +++ b/src/configs/index.ts @@ -2,6 +2,7 @@ import angular from './angular'; import dom from './dom'; import marko from './marko'; import react from './react'; +import shadowDom from './shadow-dom'; import svelte from './svelte'; import vue from './vue'; @@ -19,6 +20,7 @@ export const baseConfigs = { vue, svelte, marko, + 'shadow-dom': shadowDom, } as const satisfies { [TKey in SupportedTestingFramework]: BaseConfig; }; From e77841fe8a79f36759de2ac3ef32b8238765df93 Mon Sep 17 00:00:00 2001 From: Sysix Date: Mon, 4 May 2026 21:02:50 +0200 Subject: [PATCH 9/9] test: update config tests to include shadow-dom --- tests/index.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/index.test.ts b/tests/index.test.ts index 9075aa9b..79b18e6e 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -1,7 +1,7 @@ import { existsSync, readdirSync } from 'node:fs'; import { resolve } from 'node:path'; -import { it, expect } from 'vitest'; +import { expect, it } from 'vitest'; import plugin from '../src'; @@ -51,12 +51,14 @@ it('should export configs that refer to actual rules', () => { 'flat/vue', 'flat/svelte', 'flat/marko', + 'flat/shadow-dom', 'dom', 'angular', 'react', 'vue', 'svelte', 'marko', + 'shadow-dom', ]); const allConfigRules = Object.values(allConfigs)