From 99ec82818addfdc8517758836163b01ba4b34c2e Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Sun, 30 Aug 2026 10:19:49 -0400 Subject: [PATCH 1/2] fix: Stop importing the generated test-utils barrel from two wrappers `src/test-utils/dom/index.ts` is generated and gitignored, and it imports every component wrapper, so a wrapper importing it back is circular. `ban-files` already bans it, and these two files are the only importers left. They escaped the ban by writing `'../index.js'` rather than `'../index'`. The rule resolves a specifier against the files on disk and only probed extensions appended to the literal path, so `src/test-utils/dom/index.js` and `index.js.ts` never matched the banned `src/test-utils/dom/index.ts`. `@cloudscape-design/test-utils-core` exports `createWrapper` from both its `/dom` and `/selectors` entry points, with the same implementation the generated barrel copies, so this is behaviour-identical in both variants. Importing it from `test-utils-core/dom` also lets the selectors converter rewrite the path, which drops the barrel import from the generated selectors output as well. 547 test-utils tests pass with 3 unchanged snapshots, plus 165 popover and button-group tests. Lint is unchanged at 0 errors. --- src/test-utils/dom/button-group/index.ts | 3 +-- src/test-utils/dom/popover/index.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test-utils/dom/button-group/index.ts b/src/test-utils/dom/button-group/index.ts index 064e405580..9f868b2dd8 100644 --- a/src/test-utils/dom/button-group/index.ts +++ b/src/test-utils/dom/button-group/index.ts @@ -1,11 +1,10 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; +import { ComponentWrapper, createWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; import ButtonWrapper from '../button/index.js'; import ButtonDropdownWrapper from '../button-dropdown/index.js'; import FileInputWrapper from '../file-input/index.js'; -import createWrapper from '../index.js'; import ToggleButtonWrapper from '../toggle-button/index.js'; import testUtilStyles from '../../../button-group/test-classes/styles.selectors.js'; diff --git a/src/test-utils/dom/popover/index.ts b/src/test-utils/dom/popover/index.ts index f3bd809669..f7dbb4c795 100644 --- a/src/test-utils/dom/popover/index.ts +++ b/src/test-utils/dom/popover/index.ts @@ -1,9 +1,8 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; +import { ComponentWrapper, createWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; import ButtonWrapper from '../button'; -import createWrapper from '../index.js'; import styles from '../../../popover/styles.selectors.js'; From e005fcde2382e70bdc0944409c51f01031e3cb80 Mon Sep 17 00:00:00 2001 From: Gethin Webster Date: Mon, 31 Aug 2026 09:53:37 +0200 Subject: [PATCH 2/2] Update linter to catch these issues --- eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index eb0288a1d0..65e489aa9c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -217,7 +217,7 @@ export default tsEslint.config( 'error', [ { - pattern: './src/test-utils/dom/index.ts', + pattern: './src/test-utils/dom/index.*s', message: "Do not import from the augmented ElementWrapper barrel '{{ path }}'. Use @cloudscape-design/test-utils-core/dom instead.", },