From a9db0af5bae2d6b0f088609fb8c0e043933dcc94 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 08:43:38 +0000 Subject: [PATCH 1/3] chore: bump the vitest group with 4 updates [AR-89256] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dependabot's original PR (#694) bumped vitest, @vitest/coverage-v8, @vitest/browser-playwright to v5 and vitest-browser-react to v2.3.0, but CI failed: vitest 5's browser-mode matchers split `toHaveTextContent` into an exact-match-only assertion plus a new `toMatchTextContent` for partial/RegExp matching, and `getByRole`/`getByText` locators now need `exact: false` explicitly for substring name matching that used to be the default. This updates the affected browser tests to match. Also fixes a table test that hovered a reveal-on-hover icon directly (pointer-events: none until the parent is hovered) — hovering the parent cell first mirrors how a real pointer reaches the icon. Claude-Session: https://claude.ai/code/session_01FruzGJAvphgB11ptUBPrBt --- .changeset/wise-cats-relax.md | 5 + packages/design-system/package.json | 4 +- .../ds-avatar-group.browser.test.tsx | 6 +- .../ds-comments-drawer.browser.test.tsx | 2 +- .../__tests__/ds-select.browser.test.tsx | 84 +-- .../ds-split-button.browser.test.tsx | 2 +- .../ds-table-editable.browser.test.tsx | 3 + .../ds-table-header-ellipsis.browser.test.tsx | 2 +- .../ds-table-row-actions.browser.test.tsx | 8 +- .../ds-table-search.browser.test.tsx | 2 +- .../__tests__/ds-table.browser.test.tsx | 4 +- .../__tests__/ds-time-picker.browser.test.tsx | 6 +- .../__tests__/ds-toggle.browser.test.tsx | 4 +- .../__tests__/ds-user-card.browser.test.tsx | 2 +- pnpm-lock.yaml | 528 +++++++++--------- pnpm-workspace.yaml | 4 +- 16 files changed, 351 insertions(+), 315 deletions(-) create mode 100644 .changeset/wise-cats-relax.md diff --git a/.changeset/wise-cats-relax.md b/.changeset/wise-cats-relax.md new file mode 100644 index 000000000..29e3d8730 --- /dev/null +++ b/.changeset/wise-cats-relax.md @@ -0,0 +1,5 @@ +--- +'@drivenets/design-system': patch +--- + +Update dependencies diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 799c01f92..d6c9a5757 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -103,7 +103,7 @@ "@types/serve-handler": "^6.1.4", "@typescript/native": "catalog:", "@vitejs/plugin-react": "^6.0.4", - "@vitest/browser-playwright": "^4.1.10", + "@vitest/browser-playwright": "^5.0.0", "@vitest/coverage-v8": "catalog:", "babel-plugin-react-compiler": "^1.0.0", "eslint": "catalog:", @@ -127,7 +127,7 @@ "typescript-plugin-css-modules": "^5.2.0", "vite": "8.1.5", "vitest": "catalog:", - "vitest-browser-react": "^2.1.0", + "vitest-browser-react": "^2.3.0", "zod": "^4.4.3" } } diff --git a/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx b/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx index 458e01c7c..cd27e49ae 100644 --- a/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx +++ b/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx @@ -26,8 +26,8 @@ describe('DsAvatarGroup', () => { await page.getByText('+3').hover(); const tooltip = page.getByRole('tooltip'); - await expect.element(tooltip).toHaveTextContent('Fiona Gallagher'); - await expect.element(tooltip).toHaveTextContent('George Miller'); - await expect.element(tooltip).toHaveTextContent('Hannah Abbott'); + await expect.element(tooltip).toMatchTextContent('Fiona Gallagher'); + await expect.element(tooltip).toMatchTextContent('George Miller'); + await expect.element(tooltip).toMatchTextContent('Hannah Abbott'); }); }); diff --git a/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx b/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx index 1581f469a..75d02351e 100644 --- a/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx +++ b/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx @@ -247,7 +247,7 @@ describe('DsCommentsDrawer', () => { const toggleButton = page.getByRole('button', { name: /show resolved/i }); await expect.element(toggleButton).toBeInTheDocument(); - await expect.element(toggleButton).toHaveTextContent(/\(2\)/); + await expect.element(toggleButton).toMatchTextContent(/\(2\)/); await toggleButton.click(); diff --git a/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx b/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx index e4321effe..5d37c3e92 100644 --- a/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx +++ b/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx @@ -122,13 +122,13 @@ describe('DsSelect', () => { await expect.element(option1).not.toHaveAttribute('data-state', 'checked'); await option1.click(); - await expect.element(trigger).toHaveTextContent(firstOption.label); + await expect.element(trigger).toMatchTextContent(firstOption.label); await trigger.click(); const option2 = page.getByRole('option', { name: secondOption.label }); await option2.click(); - await expect.element(trigger).toHaveTextContent(secondOption.label); + await expect.element(trigger).toMatchTextContent(secondOption.label); await trigger.click(); @@ -143,7 +143,7 @@ describe('DsSelect', () => { const closeButton = page.getByRole('button', { name: 'Clear value' }); await closeButton.click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should select options when items have icons (WithIcons story)', async () => { @@ -168,13 +168,13 @@ describe('DsSelect', () => { await expect.element(option1).not.toHaveAttribute('data-state', 'checked'); await option1.click(); - await expect.element(trigger).toHaveTextContent(firstOption.label); + await expect.element(trigger).toMatchTextContent(firstOption.label); await trigger.click(); const option2 = page.getByRole('option', { name: secondOption.label }); await option2.click(); - await expect.element(trigger).toHaveTextContent(secondOption.label); + await expect.element(trigger).toMatchTextContent(secondOption.label); await trigger.click(); @@ -188,7 +188,7 @@ describe('DsSelect', () => { await page.getByRole('button', { name: 'Clear value' }).click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should select all, expand +N chip, delete chip, and clear all (MultiSelect story)', async () => { @@ -211,7 +211,7 @@ describe('DsSelect', () => { await trigger.click(); for (const option of mockOptions) { - await expect.element(trigger).toHaveTextContent(option.label); + await expect.element(trigger).toMatchTextContent(option.label); } await trigger.click(); @@ -227,7 +227,7 @@ describe('DsSelect', () => { await trigger.click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should filter via search, select multiple, and clear via Backspace (MultiSelectWithSearch story)', async () => { @@ -261,17 +261,17 @@ describe('DsSelect', () => { await page.getByRole('option', { name: 'Banana' }).click(); await page.getByRole('option', { name: 'Cherry' }).click(); - await expect.element(trigger).toHaveTextContent('Apple'); - await expect.element(trigger).toHaveTextContent('Banana'); - await expect.element(trigger).toHaveTextContent('Cherry'); + await expect.element(trigger).toMatchTextContent('Apple'); + await expect.element(trigger).toMatchTextContent('Banana'); + await expect.element(trigger).toMatchTextContent('Cherry'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Backspace}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); - await expect.element(trigger).not.toHaveTextContent('Apple'); - await expect.element(trigger).not.toHaveTextContent('Banana'); - await expect.element(trigger).not.toHaveTextContent('Cherry'); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); + await expect.element(trigger).not.toMatchTextContent('Apple'); + await expect.element(trigger).not.toMatchTextContent('Banana'); + await expect.element(trigger).not.toMatchTextContent('Cherry'); }); it('should select options rendered with custom markup (CustomRenderOption story)', async () => { @@ -291,12 +291,12 @@ describe('DsSelect', () => { await expect.element(usOption).toBeInTheDocument(); await usOption.click(); - await expect.element(trigger).toHaveTextContent('United States'); + await expect.element(trigger).toMatchTextContent('United States'); await trigger.click(); await page.getByRole('option', { name: /France/ }).click(); - await expect.element(trigger).toHaveTextContent('France'); + await expect.element(trigger).toMatchTextContent('France'); }); it('should render selected items as chips with custom option markup (CustomRenderOptionMultiSelect story)', async () => { @@ -351,7 +351,7 @@ describe('DsSelect', () => { await searchInput.fill('Japan'); await page.getByRole('option', { name: /Japan/ }).click(); - await expect.element(trigger).toHaveTextContent('Japan'); + await expect.element(trigger).toMatchTextContent('Japan'); }); it('should render selected value with custom markup in trigger (CustomRenderValue story)', async () => { @@ -387,21 +387,21 @@ describe('DsSelect', () => { const trigger = page.getByRole('combobox'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); await page.getByRole('option', { name: 'v0.8' }).click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); await trigger.click(); await page.getByRole('option', { name: 'v2.3' }).click(); - await expect.element(trigger).toHaveTextContent('v2.3'); - await expect.element(trigger).toHaveTextContent('Pending'); + await expect.element(trigger).toMatchTextContent('v2.3'); + await expect.element(trigger).toMatchTextContent('Pending'); }); it('should render multi selection with custom value markup (CustomRenderValueMultiSelect story)', async () => { @@ -446,8 +446,8 @@ describe('DsSelect', () => { await page.getByRole('option', { name: /United States/ }).click(); await page.getByRole('option', { name: /Germany/ }).click(); - await expect.element(trigger).toHaveTextContent('US'); - await expect.element(trigger).toHaveTextContent('DE'); + await expect.element(trigger).toMatchTextContent('US'); + await expect.element(trigger).toMatchTextContent('DE'); }); it('should render both options and value with custom markup (CustomRenderValueAndOption story)', async () => { @@ -499,25 +499,25 @@ describe('DsSelect', () => { const trigger = page.getByRole('combobox'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); const v08 = page.getByRole('option', { name: /v0.8/ }); - await expect.element(v08).toHaveTextContent('Live'); + await expect.element(v08).toMatchTextContent('Live'); await v08.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); await trigger.click(); const v14 = page.getByRole('option', { name: /v1.4/ }); - await expect.element(v14).toHaveTextContent('Running'); + await expect.element(v14).toMatchTextContent('Running'); await v14.click(); - await expect.element(trigger).toHaveTextContent('v1.4'); - await expect.element(trigger).toHaveTextContent('Running'); + await expect.element(trigger).toMatchTextContent('v1.4'); + await expect.element(trigger).toMatchTextContent('Running'); }); it('should render multi selection with both custom render fns (CustomRenderValueAndOptionMultiSelect story)', async () => { @@ -575,18 +575,18 @@ describe('DsSelect', () => { await trigger.click(); const v08 = page.getByRole('option', { name: /v0.8/ }); - await expect.element(v08).toHaveTextContent('Live'); + await expect.element(v08).toMatchTextContent('Live'); await v08.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); const v36 = page.getByRole('option', { name: /v3.6/ }); - await expect.element(v36).toHaveTextContent('Draft'); + await expect.element(v36).toMatchTextContent('Draft'); await v36.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('+1'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('+1'); }); it('should clear via Backspace, Delete, and allow Space in search (KeyboardInteractions story)', async () => { @@ -605,22 +605,22 @@ describe('DsSelect', () => { await trigger.click(); await page.getByRole('option', { name: 'Apple' }).click(); - await expect.element(trigger).toHaveTextContent('Apple'); + await expect.element(trigger).toMatchTextContent('Apple'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Backspace}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); await page.getByRole('option', { name: 'Banana' }).click(); - await expect.element(trigger).toHaveTextContent('Banana'); + await expect.element(trigger).toMatchTextContent('Banana'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Delete}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); diff --git a/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx b/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx index e8e638d4b..84537ea74 100644 --- a/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx +++ b/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx @@ -75,7 +75,7 @@ describe('DsSplitButton', () => { expect(onValueChange).toHaveBeenCalledWith('60'); const combobox = page.getByRole('combobox'); - await expect.element(combobox).toHaveTextContent(/1m/); + await expect.element(combobox).toMatchTextContent(/1m/); }); it('disables primary button and select when disabled', async () => { diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx index a49855433..237c159ca 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx @@ -380,6 +380,9 @@ describe('DsTable Editable Cells', () => { const lockIcon = page.elementLocator(ageCell).getByRole('img', { name: 'Editing disabled' }); await expect.element(lockIcon).toBeVisible(); + // The icon only becomes interactive once the cell itself is hovered (reveal-on-hover styling), + // so hover the cell first to put it in the same state a real pointer path would produce. + await page.elementLocator(ageCell).hover(); await lockIcon.hover(); await expect.element(page.getByRole('tooltip')).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx index ffc93550d..b9f6ec03c 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx @@ -164,7 +164,7 @@ describe('DsTable header label ellipsis', () => { expect(label.textContent).toContain(LONG_LEAF_HEADER); expect(label.textContent).toContain(hiddenExtra); expectEllipsis(label); - await page.getByText(LONG_LEAF_HEADER).hover(); + await page.getByText(LONG_LEAF_HEADER, { exact: false }).hover(); await expect.element(page.getByRole('tooltip')).not.toBeInTheDocument(); await expect.element(page.getByRole('tooltip', { name: hiddenExtra })).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx index 6acdda7d8..42385b6be 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx @@ -17,8 +17,8 @@ describe('DsTable - Row Actions', () => { expect(dataRows).toHaveLength(5); await expect.element(page.getByText('Order')).toBeVisible(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); - await expect.element(page.getByRole('row').nth(2)).toHaveTextContent('Kevin'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(2)).toMatchTextContent('Kevin'); const handle = page.getByRole('row').nth(1).getByRole('button').element() as HTMLElement; const kevinRow = page.getByRole('row').nth(2).element() as HTMLTableRowElement; @@ -56,8 +56,8 @@ describe('DsTable - Row Actions', () => { const newOrder = onOrderChange.mock.calls[0]?.[0] as Person[] | undefined; expect(newOrder?.map((p) => p.firstName)).toEqual(['Kevin', 'Tanner', 'John', 'Jane', 'Peter']); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Kevin'); - await expect.element(page.getByRole('row').nth(2)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Kevin'); + await expect.element(page.getByRole('row').nth(2)).toMatchTextContent('Tanner'); }); it('should show row action buttons on hover and respect disabled state', async () => { diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx index 67cbe3288..968d55880 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx @@ -46,7 +46,7 @@ describe('DsTable - Search & Filtering', () => { const filteredDataRows = page.getByRole('row').all().slice(1); expect(filteredDataRows).toHaveLength(1); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); await page.getByPlaceholder('Search all columns...').clear(); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx index e2c0322f7..92e81ccee 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx @@ -32,11 +32,11 @@ describe('DsTable', () => { await firstNameHeader.click(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Daniel'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Daniel'); await firstNameHeader.click(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); }); it('should show empty state when no data is provided', async () => { diff --git a/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx b/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx index 1ec1ec3a3..63cf90647 100644 --- a/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx +++ b/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx @@ -133,7 +133,7 @@ describe('DsTimePicker', () => { // Click hour 5 PM — minute 50 exceeds max 5:40 PM → clamp to 5:40 PM await hour5PM.click(); - await expect.element(valueDisplay).toHaveTextContent('17:40'); + await expect.element(valueDisplay).toMatchTextContent('17:40'); // At 5:40 PM, minutes > 40 are disabled await expect @@ -147,7 +147,7 @@ describe('DsTimePicker', () => { // Switch to AM — 5:40 PM → clamp to 9:30 AM (min) await periodListbox.getByRole('option', { name: 'AM' }).click(); - await expect.element(valueDisplay).toHaveTextContent('09:30'); + await expect.element(valueDisplay).toMatchTextContent('09:30'); // At 9:30 AM, hours before 9 are disabled await expect @@ -217,7 +217,7 @@ describe('DsTimePicker', () => { await userEvent.keyboard('{Enter}'); // 1:02 AM = 01:02 in 24h format - await expect.element(page.getByText('Value:')).toHaveTextContent('01:02'); + await expect.element(page.getByText('Value:', { exact: false })).toMatchTextContent('01:02'); }); it('should reset input to last valid value on blur', async () => { diff --git a/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx b/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx index 5013dca34..dbb967933 100644 --- a/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx +++ b/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx @@ -12,7 +12,7 @@ describe('DsToggle', () => { await page.render(); - const toggle = page.getByRole('checkbox', { name: label }); + const toggle = page.getByRole('checkbox', { name: label, exact: false }); await expect.element(toggle).not.toBeChecked(); await expect.element(page.getByText(labelInfo)).toBeVisible(); @@ -31,7 +31,7 @@ describe('DsToggle', () => { await page.render(); - const toggle = page.getByRole('checkbox', { name: label }); + const toggle = page.getByRole('checkbox', { name: label, exact: false }); await expect.element(toggle).toBeChecked(); diff --git a/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx b/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx index e1d75117a..df5371de0 100644 --- a/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx +++ b/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx @@ -46,6 +46,6 @@ describe('DsUserCard', () => { const root = document.querySelector('.custom-card'); expect(root).not.toBeNull(); - expect(root).toHaveTextContent('Jane Smith'); + expect(root).toMatchTextContent('Jane Smith'); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 725078391..99ab5c927 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: npm:typescript@^7.0.2 version: 7.0.2 '@vitest/coverage-v8': - specifier: ^4.1.10 - version: 4.1.10 + specifier: ^5.0.0 + version: 5.0.0 publint: specifier: ^0.3.24 version: 0.3.24 @@ -25,8 +25,8 @@ catalogs: specifier: ^0.22.14 version: 0.22.14 vitest: - specifier: ^4.1.10 - version: 4.1.10 + specifier: ^5.0.0 + version: 5.0.0 overrides: '@typescript/native-preview': '-' @@ -108,7 +108,7 @@ importers: version: typescript@7.0.2 '@vitest/eslint-plugin': specifier: ^1.6.27 - version: 1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@4.1.10) + version: 1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@5.0.0) cspell: specifier: ^10.0.1 version: 10.0.1 @@ -260,10 +260,10 @@ importers: version: 10.4.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.17.19)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@storybook/addon-mcp': specifier: ^0.6.0 - version: 0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)) + version: 0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)) '@storybook/addon-vitest': specifier: ^10.4.1 - version: 10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10) + version: 10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0) '@storybook/react-vite': specifier: ^10.4.1 version: 10.4.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.17.19)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) @@ -295,11 +295,11 @@ importers: specifier: ^6.0.4 version: 6.0.4(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@vitest/browser-playwright': - specifier: ^4.1.10 - version: 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) + specifier: ^5.0.0 + version: 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0) babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 @@ -365,10 +365,10 @@ importers: version: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) vitest-browser-react: - specifier: ^2.1.0 - version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + specifier: ^2.3.0 + version: 2.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@5.0.0) zod: specifier: ^4.4.3 version: 4.4.3 @@ -396,7 +396,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -408,7 +408,7 @@ importers: version: 0.22.14(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.22.14)(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(publint@0.3.24) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/eslint-plugin-internal: dependencies: @@ -430,7 +430,7 @@ importers: version: 8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -439,7 +439,7 @@ importers: version: 7.6.2(eslint@10.2.0(jiti@2.7.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/mcp: dependencies: @@ -473,7 +473,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -488,7 +488,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/vite-plugin: dependencies: @@ -504,7 +504,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -519,7 +519,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages: @@ -588,6 +588,10 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} @@ -605,6 +609,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime@7.29.7': resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} @@ -621,12 +630,16 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@blazediff/core@1.9.1': - resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} + '@blazediff/core@1.10.0': + resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==} '@braidai/lang@1.1.2': resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} @@ -1651,6 +1664,9 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -3579,22 +3595,22 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/browser-playwright@4.1.10': - resolution: {integrity: sha512-nMoXGEiRpT7m3W7NsbvrM2aKNwiNHZf+zEpUCvMteGjZFvfT96Q9fh7QyB98dvDWXiKvrLxA7bJ1mCOOv+JQPw==} + '@vitest/browser-playwright@5.0.0': + resolution: {integrity: sha512-N+gED9y4/8pypaHjz/x0ah3CjoBr+N0hWWT+Gq4VXtMzyB+rUIdHni0ulzpD1j4H77iWy5Jg8PRMlVn6kjxo6g==} peerDependencies: playwright: '*' - vitest: 4.1.10 + vitest: 5.0.0 - '@vitest/browser@4.1.10': - resolution: {integrity: sha512-UDwuWGwXj646CBx/bQHOaJSX7np0I8JL/UKQYa1e4QrVHH8VdWtx8eaOuf8sy0ShwDgR6NjJAsp5eF6vjF6qng==} + '@vitest/browser@5.0.0': + resolution: {integrity: sha512-JC9FG5xIRxPHXJPcdCaluIJcEoeM0IwGQ3xneuJk09LXKHRNs40BqWDWymQikbb20yOpYvzpKzmYgPRuSzKmvg==} peerDependencies: - vitest: 4.1.10 + vitest: 5.0.0 - '@vitest/coverage-v8@4.1.10': - resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==} + '@vitest/coverage-v8@5.0.0': + resolution: {integrity: sha512-toMg6PZGCIa/lQNCDoASrfb1ly4hsUKXFtFYC9kD4t78o5Y6LyNJU7AENt8eHPr3quYdxaxK7hj2mnbFfUk9NA==} peerDependencies: - '@vitest/browser': 4.1.10 - vitest: 4.1.10 + '@vitest/browser': 5.0.0 + vitest: 5.0.0 peerDependenciesMeta: '@vitest/browser': optional: true @@ -3618,11 +3634,16 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + '@vitest/istanbul-lib-coverage@1.0.1': + resolution: {integrity: sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==} + engines: {node: '>=22'} + + '@vitest/istanbul-lib-report@1.0.1': + resolution: {integrity: sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==} + engines: {node: '>=22'} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + '@vitest/mocker@5.0.0': + resolution: {integrity: sha512-66PGTMIiVJP3t4a5yxU9qPtf7MdTBs8jmToMvy+HVflB3Yy13WJZTtPePdvU+wjRV02SKK5doLbSA6o9pwOmiA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3635,26 +3656,25 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + '@vitest/pretty-format@5.0.0': + resolution: {integrity: sha512-PVRNuB3wpReb4SQEs4zTKM4KWFhQ5pw3spE8naoDJNB5T5aWRzGKHwXcLUllr0WeOTXpB6bSr3CJLo5+7XQSSQ==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + '@vitest/spy@5.0.0': + resolution: {integrity: sha512-uy+luWBAPw9XfthoHi5AkfHUnuPYEESjl0p/r+meoBnU8bxg5GDQ3Ey8MjcJ6sqahkL4PFyrvfMJJBw7LbU06g==} + + '@vitest/ui@5.0.0': + resolution: {integrity: sha512-h2FIFwggCY2GxUd2UdQoYNVQkOIqEQLPhNREcl3FUiRsdzQep7NWwYbSmhGEA9nFLPDq5pXzRMcBZQU8Py83sg==} + peerDependencies: + vitest: 5.0.0 '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + '@vitest/utils@5.0.0': + resolution: {integrity: sha512-dO++xL3vDfvhTAVimfkuQUA3k+JClIF1i1vAkPqpcGAthRmeWnXmHB7YPViPvgCwviX8u7Y5W1u2N//AaQr3fw==} '@webcontainer/env@1.1.1': resolution: {integrity: sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==} @@ -4124,8 +4144,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@1.0.0: - resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} + ast-v8-to-istanbul@1.0.5: + resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -4659,8 +4679,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-toolkit@1.50.0: resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} @@ -4824,8 +4844,8 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} extend@3.0.2: @@ -4902,6 +4922,9 @@ packages: flatted@3.4.3: resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -5033,9 +5056,6 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -5214,18 +5234,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - jackspeak@4.2.3: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} @@ -5492,8 +5500,11 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.2: - resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} + magic-string@1.2.3: + resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==} + + magicast@0.5.4: + resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} make-asynchronous@1.1.0: resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} @@ -5503,10 +5514,6 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -5944,6 +5951,10 @@ packages: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + picoquery@2.5.0: resolution: {integrity: sha512-j1kgOFxtaCyoFCkpoYG2Oj3OdGakadO7HZ7o5CqyRazlmBekKhbDoUnNnXASE07xSY4nDImWZkrZv7toSxMi/g==} @@ -6517,8 +6528,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} storybook@10.4.1: resolution: {integrity: sha512-V1Zd2e+gBFufqAQVZ1JR8KLqALsEZ3JYSBnWwQbKa6zCfWWanR6AFMyuOkLt2gZOgGp3h2Riuz88pGNVTQSG0A==} @@ -6678,8 +6689,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinybench@6.1.4: + resolution: {integrity: sha512-9APumHG7r4yOk4X4WlkmE71aZcv1gvin1czO3OQ1U9iJcFA5Ja/ygyb0vPOVHTthFozUYs8CLoLUlM8grb2lTQ==} + engines: {node: '>=20.0.0'} tinyexec@1.3.0: resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} @@ -6697,8 +6709,8 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} tinyspy@4.0.4: @@ -7015,37 +7027,37 @@ packages: yaml: optional: true - vitest-browser-react@2.2.0: - resolution: {integrity: sha512-oY3KM6305kwJMa6nHo92vVtkOsih7mjEf12dLKuphaF+9ywWPEc+qanIBd394SZ6m5LadVEaG6dicvvizOzmjA==} + vitest-browser-react@2.3.0: + resolution: {integrity: sha512-S5vdGHHA93j2Z6dbmIJI1wtxT3AXPTRlmC1Meo+ekG011yNnEutMAnHrwyj8qFlGhgBYA8ENGK6+o1Q+vnFz6A==} peerDependencies: '@types/react': ^18.0.0 || ^19.0.0 '@types/react-dom': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - vitest: ^4.0.0 + vitest: ^4.0.0 || ^5.0.0 peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.0: + resolution: {integrity: sha512-gpsMNoRhMjMktVxPtstOH4/PJuPyovVaMDr4oDilXaGH1EcqM2OE96SoHT2VIQ6fTGtTjqmHDrEu2X9RQiXf8Q==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.0 + '@vitest/browser-preview': 5.0.0 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.0 + '@vitest/coverage-v8': 5.0.0 + '@vitest/ui': 5.0.0 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -7151,6 +7163,18 @@ packages: utf-8-validate: optional: true + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + wsl-utils@0.1.0: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} @@ -7416,6 +7440,8 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-validator-identifier@7.29.7': {} '@babel/helper-validator-option@7.27.1': {} @@ -7429,6 +7455,10 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + '@babel/runtime@7.29.7': {} '@babel/template@7.28.6': @@ -7442,7 +7472,7 @@ snapshots: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -7454,9 +7484,14 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.29.7 + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@bcoe/v8-coverage@1.0.2': {} - '@blazediff/core@1.9.1': {} + '@blazediff/core@1.10.0': {} '@braidai/lang@1.1.2': {} @@ -8454,7 +8489,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -8466,10 +8501,12 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@loaderkit/resolve@1.0.4': dependencies: @@ -8903,7 +8940,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.5 + picomatch: 4.0.7 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.6 '@parcel/watcher-darwin-arm64': 2.5.6 @@ -9332,7 +9369,7 @@ snapshots: dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.5 + picomatch: 4.0.7 '@simple-libs/child-process-utils@2.0.0': dependencies: @@ -9373,7 +9410,7 @@ snapshots: - vite - webpack - '@storybook/addon-mcp@0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))': + '@storybook/addon-mcp@0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))': dependencies: '@storybook/mcp': 0.7.0(@typescript/typescript6@6.0.2) '@tmcp/adapter-valibot': 0.1.6(tmcp@1.20.0(@typescript/typescript6@6.0.2))(valibot@1.2.0(@typescript/typescript6@6.0.2)) @@ -9383,21 +9420,20 @@ snapshots: tmcp: 1.20.0(@typescript/typescript6@6.0.2) valibot: 1.2.0(@typescript/typescript6@6.0.2) optionalDependencies: - '@storybook/addon-vitest': 10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10) + '@storybook/addon-vitest': 10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0) transitivePeerDependencies: - '@tmcp/auth' - typescript - '@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10)': + '@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0)': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) storybook: 10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) optionalDependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/runner': 4.1.10 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - react - react-dom @@ -9648,7 +9684,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -9660,7 +9696,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': @@ -9986,26 +10022,26 @@ snapshots: '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) babel-plugin-react-compiler: 1.0.0 - '@vitest/browser-playwright@4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) playwright: 1.62.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) playwright: 1.62.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -10013,34 +10049,36 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/ui': 5.0.0(vitest@5.0.0) + '@vitest/utils': 5.0.0 + magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/ui': 5.0.0(vitest@5.0.0) + '@vitest/utils': 5.0.0 + magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw @@ -10048,23 +10086,35 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10)': + '@vitest/coverage-v8@5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.10 - ast-v8-to-istanbul: 1.0.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.2 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.5 + magicast: 0.5.4 obug: 2.1.4 - std-env: 4.1.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + std-env: 4.2.0 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/eslint-plugin@1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@4.1.10)': + '@vitest/coverage-v8@5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.5 + magicast: 0.5.4 + obug: 2.1.4 + std-env: 4.2.0 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + optionalDependencies: + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + + '@vitest/eslint-plugin@1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@5.0.0)': dependencies: '@typescript-eslint/scope-manager': 8.69.0 '@typescript-eslint/utils': 8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) @@ -10072,7 +10122,7 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) typescript: '@typescript/typescript6@6.0.2' - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - supports-color @@ -10084,28 +10134,27 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.1.10': + '@vitest/istanbul-lib-coverage@1.0.1': {} + + '@vitest/istanbul-lib-report@1.0.1': dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - chai: 6.2.2 - tinyrainbow: 3.1.0 + '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.10 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.2.3 optionalDependencies: vite: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.10 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.2.3 optionalDependencies: vite: 8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) @@ -10113,27 +10162,25 @@ snapshots: dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.1.10': + '@vitest/pretty-format@5.0.0': dependencies: - tinyrainbow: 3.1.0 - - '@vitest/runner@4.1.10': - dependencies: - '@vitest/utils': 4.1.10 - pathe: 2.0.3 - - '@vitest/snapshot@4.1.10': - dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pathe: 2.0.3 + tinyrainbow: 3.1.1 '@vitest/spy@3.2.4': dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.1.10': {} + '@vitest/spy@5.0.0': {} + + '@vitest/ui@5.0.0(vitest@5.0.0)': + dependencies: + '@vitest/utils': 5.0.0 + fflate: 0.8.3 + flatted: 3.4.4 + pathe: 2.0.3 + sirv: 3.0.2 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@vitest/utils@3.2.4': dependencies: @@ -10141,11 +10188,11 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.1.10': + '@vitest/utils@5.0.0': dependencies: - '@vitest/pretty-format': 4.1.10 + '@vitest/pretty-format': 5.0.0 convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 '@webcontainer/env@1.1.1': {} @@ -10874,7 +10921,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@1.0.0: + ast-v8-to-istanbul@1.0.5: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -11410,7 +11457,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.0.0: {} + es-module-lexer@2.3.2: {} es-toolkit@1.50.0: {} @@ -11694,7 +11741,7 @@ snapshots: esutils@2.0.3: {} - expect-type@1.3.0: {} + expect-type@1.4.0: {} extend@3.0.2: {} @@ -11763,6 +11810,8 @@ snapshots: flatted@3.4.3: {} + flatted@3.4.4: {} + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -11899,8 +11948,6 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 - html-escaper@2.0.2: {} - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -12031,19 +12078,6 @@ snapshots: isexe@2.0.0: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - jackspeak@4.2.3: dependencies: '@isaacs/cliui': 9.0.0 @@ -12290,10 +12324,14 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.5.2: + magic-string@1.2.3: dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@jridgewell/sourcemap-codec': 1.6.0 + + magicast@0.5.4: + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 make-asynchronous@1.1.0: @@ -12308,10 +12346,6 @@ snapshots: semver: 7.8.5 optional: true - make-dir@4.0.0: - dependencies: - semver: 7.8.5 - markdown-table@3.0.4: {} marked-terminal@7.3.0(marked@9.1.6): @@ -12969,6 +13003,8 @@ snapshots: picomatch@4.0.5: {} + picomatch@4.0.7: {} + picoquery@2.5.0: {} pify@4.0.1: {} @@ -13519,7 +13555,7 @@ snapshots: stackback@0.0.2: {} - std-env@4.1.0: {} + std-env@4.2.0: {} storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: @@ -13679,7 +13715,7 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.9.0: {} + tinybench@6.1.4: {} tinyexec@1.3.0: {} @@ -13692,7 +13728,7 @@ snapshots: tinyrainbow@2.0.0: {} - tinyrainbow@3.1.0: {} + tinyrainbow@3.1.1: {} tinyspy@4.0.4: {} @@ -13923,7 +13959,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.5 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 unrs-resolver@1.12.2: @@ -14061,71 +14097,61 @@ snapshots: stylus: 0.62.0 yaml: 2.9.0 - vitest-browser-react@2.2.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10): + vitest-browser-react@2.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@5.0.0): dependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 + vitest@5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + chai: 6.2.2 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.2.3 obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 vite: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0) + '@vitest/ui': 5.0.0(vitest@5.0.0) jsdom: 24.1.3 transitivePeerDependencies: - msw - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 + vitest@5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + chai: 6.2.2 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.2.3 obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 vite: 8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) + '@vitest/ui': 5.0.0(vitest@5.0.0) jsdom: 24.1.3 transitivePeerDependencies: - msw @@ -14192,6 +14218,8 @@ snapshots: ws@8.21.1: {} + ws@8.21.3: {} + wsl-utils@0.1.0: dependencies: is-wsl: 3.1.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a4c51acdb..9bcd9fa16 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,12 +9,12 @@ catalog: '@arethetypeswrong/cli': ^0.18.5 '@eslint/core': ^1.1.1 '@typescript/native': 'npm:typescript@^7.0.2' - '@vitest/coverage-v8': ^4.1.10 + '@vitest/coverage-v8': ^5.0.0 eslint: ^10.0.1 publint: ^0.3.24 tsdown: ^0.22.14 typescript: 'npm:@typescript/typescript6' - vitest: ^4.1.10 + vitest: ^5.0.0 allowBuilds: '@parcel/watcher': false From bca1a2c865627632cdf2f4bcf21c9f441de0d6c8 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 08:50:17 +0000 Subject: [PATCH 2/3] chore: deduplicate dependencies pnpm dedupe --check (Check Unused Code and Dependencies job) flagged several transitive packages left with duplicate resolved versions after the scoped vitest update. Running pnpm dedupe collapses them, matching the dedupe step dependabot's own automation runs after a bump (.github/workflows/dependabot-side-effects.yml). Claude-Session: https://claude.ai/code/session_01FruzGJAvphgB11ptUBPrBt --- pnpm-lock.yaml | 120 ++++++++++++++----------------------------------- 1 file changed, 33 insertions(+), 87 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99ab5c927..bd60b1c30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -584,10 +584,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} @@ -604,11 +600,6 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.3': - resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.8': resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} @@ -626,10 +617,6 @@ packages: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.8': resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} @@ -1661,9 +1648,6 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/sourcemap-codec@1.6.0': resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} @@ -4919,9 +4903,6 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.4.3: - resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} - flatted@3.4.4: resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} @@ -5947,10 +5928,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} - picomatch@4.0.7: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} @@ -7151,18 +7128,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.21.3: resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} engines: {node: '>=10.0.0'} @@ -7391,10 +7356,10 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -7406,8 +7371,8 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -7425,7 +7390,7 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -7438,8 +7403,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-string-parser@7.29.7': {} '@babel/helper-validator-identifier@7.29.7': {} @@ -7449,11 +7412,7 @@ snapshots: '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.3': - dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@babel/parser@7.29.8': dependencies: @@ -7464,8 +7423,8 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@babel/traverse@7.29.0': dependencies: @@ -7474,16 +7433,11 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.8 '@babel/template': 7.28.6 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 @@ -8499,8 +8453,6 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': @@ -9357,7 +9309,7 @@ snapshots: '@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.0 - picomatch: 4.0.5 + picomatch: 4.0.7 rolldown: 1.2.0 optionalDependencies: '@babel/runtime': 7.29.7 @@ -9685,23 +9637,23 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.29.8 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.29.8 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/chai@5.2.3': dependencies: @@ -10935,7 +10887,7 @@ snapshots: babel-plugin-react-compiler@1.0.0: dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 bail@2.0.2: {} @@ -11257,7 +11209,7 @@ snapshots: cspell-glob@10.0.1: dependencies: '@cspell/url': 10.0.1 - picomatch: 4.0.5 + picomatch: 4.0.7 cspell-grammar@10.0.1: dependencies: @@ -11319,7 +11271,7 @@ snapshots: cspell-io: 10.0.1 cspell-lib: 10.0.1 fast-json-stable-stringify: 2.1.0 - flatted: 3.4.3 + flatted: 3.4.4 semver: 7.8.5 tinyglobby: 0.2.17 @@ -11602,7 +11554,7 @@ snapshots: eslint-plugin-react-hooks@7.1.1(eslint@10.2.0(jiti@2.7.0)): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 eslint: 10.2.0(jiti@2.7.0) hermes-parser: 0.25.1 zod: 4.4.3 @@ -11777,9 +11729,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 fflate@0.8.3: {} @@ -11805,11 +11757,9 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.3 + flatted: 3.4.4 keyv: 4.5.4 - flatted@3.4.3: {} - flatted@3.4.4: {} foreground-child@3.3.1: @@ -12124,7 +12074,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.21.1 + ws: 8.21.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -12166,13 +12116,13 @@ snapshots: knip@6.29.0: dependencies: - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) formatly: 0.3.0 get-tsconfig: 4.14.0 jiti: 2.7.0 oxc-parser: 0.140.0 oxc-resolver: 11.24.2 - picomatch: 4.0.5 + picomatch: 4.0.7 smol-toml: 1.7.0 strip-json-comments: 5.0.3 tinyglobby: 0.2.17 @@ -12261,7 +12211,7 @@ snapshots: lint-staged@17.2.0: dependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 string-argv: 0.3.2 tinyexec: 1.3.0 optionalDependencies: @@ -12322,7 +12272,7 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 magic-string@1.2.3: dependencies: @@ -13001,8 +12951,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.5: {} - picomatch@4.0.7: {} picoquery@2.5.0: {} @@ -13145,7 +13093,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 @@ -13573,7 +13521,7 @@ snapshots: recast: 0.23.11 semver: 7.8.5 use-sync-external-store: 1.6.0(react@19.2.8) - ws: 8.21.1 + ws: 8.21.3 optionalDependencies: '@types/react': 19.2.17 prettier: 2.8.8 @@ -13721,8 +13669,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinypool@2.1.0: {} @@ -13789,7 +13737,7 @@ snapshots: hookable: 6.1.1 import-without-cache: 0.4.0 obug: 2.1.4 - picomatch: 4.0.5 + picomatch: 4.0.7 rolldown: 1.2.0 rolldown-plugin-dts: 0.27.14(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0) tinyexec: 1.3.0 @@ -14064,7 +14012,7 @@ snapshots: vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.23 rolldown: 1.1.5 tinyglobby: 0.2.17 @@ -14082,7 +14030,7 @@ snapshots: vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.23 rolldown: 1.1.5 tinyglobby: 0.2.17 @@ -14216,8 +14164,6 @@ snapshots: wrappy@1.0.2: {} - ws@8.21.1: {} - ws@8.21.3: {} wsl-utils@0.1.0: From fa0dc2a18bd9aba0a88f39133a0bb026091805d4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 09:25:24 +0000 Subject: [PATCH 3/3] fix(design-system): fix more vitest 5 exact-match browser test failures Same root cause as the earlier fix: several components render an icon glyph as literal text (material-symbols-outlined ligature) directly adjacent to a label within one accessible-name/text run (tile links in DsMainMenu/DsTopBarNavigation, group labels in DsDropdownMenu, status messages in DsFileUpload, labels/values in DsKeyValuePair, breadcrumb segments). Passing `exact: false` restores the substring name/text matching these tests relied on before the vitest 5 upgrade. Also fixes: - DsMainMenu's coming-soon tooltip hover test: the badge sits inside an aria-disabled tile: `hover({ force: true })` bypasses the stricter actionability check the new Playwright version now enforces there. - DsPanel's width tests: querying `getByText('Content')` synchronously needs exact:false for the same reason as everywhere else above. One known failure was investigated and left as-is: `ds-comment-bubble.browser.test.tsx > should call onClose when close button is clicked in thread` reproduces identically against the pre-bump vitest 4.1.10 on current main, so it predates this change and is unrelated to it. Claude-Session: https://claude.ai/code/session_01FruzGJAvphgB11ptUBPrBt --- .../__tests__/ds-breadcrumb.browser.test.tsx | 8 ++-- .../ds-dropdown-menu.browser.test.tsx | 10 ++--- .../__tests__/ds-file-upload.browser.test.tsx | 22 +++++----- .../ds-key-value-pair.browser.test.tsx | 11 +++-- .../__tests__/ds-main-menu.browser.test.tsx | 44 ++++++++++--------- .../__tests__/ds-panel.browser.test.tsx | 10 ++++- .../ds-top-bar-navigation.browser.test.tsx | 2 +- 7 files changed, 60 insertions(+), 47 deletions(-) diff --git a/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx b/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx index 72ad625c7..d1b6f3364 100644 --- a/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx +++ b/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx @@ -140,16 +140,16 @@ describe('DsBreadcrumb', () => { it('marks the last link segment as current page', async () => { await renderWithRouter({ items: defaultItems }, '/inventory/catalog'); - const catalogLink = page.getByText('Catalog'); + const catalogLink = page.getByText('Catalog', { exact: false }); await expect.element(catalogLink).toHaveAttribute('aria-current', 'page'); }); it('truncates trail when navigating to a parent link', async () => { await renderWithRouter({ items: defaultItems }, '/inventory/catalog'); - await page.getByText('Inventory').click(); + await page.getByText('Inventory', { exact: false }).click(); - const inventoryLink = page.getByText('Inventory'); + const inventoryLink = page.getByText('Inventory', { exact: false }); await expect.element(inventoryLink).toHaveAttribute('aria-current', 'page'); await expect.element(page.getByText('Catalog')).not.toBeInTheDocument(); }); @@ -194,7 +194,7 @@ describe('DsBreadcrumb', () => { const onSelect = vi.fn(); await renderWithRouter({ items: defaultItems, onSelect }, '/inventory/catalog'); - await page.getByText('Inventory').click(); + await page.getByText('Inventory', { exact: false }).click(); expect(onSelect).toHaveBeenCalledWith('/inventory'); }); }); diff --git a/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx b/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx index 8089dc9ba..47b9100b0 100644 --- a/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx +++ b/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx @@ -195,7 +195,7 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Multi Select/i }).click(); - const groupLabel = page.getByRole('button', { name: 'Group Name' }); + const groupLabel = page.getByRole('button', { name: 'Group Name', exact: false }); // Collapse. await groupLabel.click(); @@ -257,8 +257,8 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Controlled Group/i }).click(); - await expect.element(page.getByRole('button', { name: 'Settings' })).toBeVisible(); - await expect.element(page.getByRole('menuitem', { name: 'Profile' })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'Settings', exact: false })).toBeVisible(); + await expect.element(page.getByRole('menuitem', { name: 'Profile', exact: false })).toBeVisible(); }); it('should call onCollapsedChange when toggling group', async () => { @@ -268,7 +268,7 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Controlled Group/i }).click(); - const groupLabel = page.getByRole('button', { name: 'Settings' }); + const groupLabel = page.getByRole('button', { name: 'Settings', exact: false }); // Collapse. await groupLabel.click(); @@ -280,7 +280,7 @@ describe('DsDropdownMenu', () => { await groupLabel.click(); expect(onCollapsedChange).toHaveBeenCalledWith(false); expect(onCollapsedChange).toHaveBeenCalledTimes(2); - await expect.element(page.getByRole('menuitem', { name: 'Profile' })).toBeVisible(); + await expect.element(page.getByRole('menuitem', { name: 'Profile', exact: false })).toBeVisible(); }); }); }); diff --git a/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx b/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx index d636b05a6..05cc803ae 100644 --- a/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx +++ b/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx @@ -41,7 +41,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); await expect.element(page.getByText('test-document.pdf')).toBeInTheDocument(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); expect(onFileUploadComplete).toHaveBeenCalled(); }); @@ -52,7 +52,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await page.getByRole('button', { name: /delete/i }).click(); @@ -81,7 +81,7 @@ describe('DsFileUpload', () => { await page.getByRole('button', { name: /cancel/i }).click(); - await expect.element(page.getByText('Upload cancelled')).toBeInTheDocument(); + await expect.element(page.getByText('Upload cancelled', { exact: false })).toBeInTheDocument(); expect(onFileUploadCanceled).toHaveBeenCalled(); }); @@ -97,7 +97,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload interrupted')).toBeInTheDocument(); + await expect.element(page.getByText('Upload interrupted', { exact: false })).toBeInTheDocument(); await expect.element(page.getByRole('button', { name: /retry/i })).toBeInTheDocument(); }); @@ -114,11 +114,11 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload interrupted')).toBeInTheDocument(); + await expect.element(page.getByText('Upload interrupted', { exact: false })).toBeInTheDocument(); await page.getByRole('button', { name: /retry/i }).click(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); expect(onFileUploadComplete).toHaveBeenCalled(); }); @@ -131,7 +131,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); await expect.element(page.getByText('test-document.pdf')).toBeInTheDocument(); - await expect.element(page.getByText('Server error')).toBeInTheDocument(); + await expect.element(page.getByText('Server error', { exact: false })).toBeInTheDocument(); expect(onFileUploadError).toHaveBeenCalled(); }); }); @@ -142,11 +142,11 @@ describe('DsFileUpload', () => { await uploadTestFile('first'); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await uploadTestFile('second'); - await expect.element(page.getByText('Too many files selected')).toBeInTheDocument(); + await expect.element(page.getByText('Too many files selected', { exact: false })).toBeInTheDocument(); }); it('should reject duplicate files with FILE_EXISTS error', async () => { @@ -154,11 +154,11 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await uploadTestFile(); - await expect.element(page.getByText('File already exists')).toBeInTheDocument(); + await expect.element(page.getByText('File already exists', { exact: false })).toBeInTheDocument(); }); }); }); diff --git a/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx b/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx index fdcdae405..c04ceb046 100644 --- a/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx +++ b/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx @@ -21,7 +21,10 @@ const MANUFACTURER_OPTIONS: DsSelectOption[] = [ // vitest browser iframe. Focus the editable container directly to trigger the `:focus-within` // reveal deterministically. const focusEditableContainerOf = (text: string) => { - const container = page.getByText(text).element().closest('[data-editable="true"]'); + const container = page + .getByText(text, { exact: false }) + .element() + .closest('[data-editable="true"]'); if (!container) { throw new Error(`No editable value-container ancestor for text "${text}"`); @@ -88,7 +91,7 @@ describe('DsKeyValuePair', () => { />, ); - await expect.element(page.getByText('Serial Number')).toBeInTheDocument(); + await expect.element(page.getByText('Serial Number', { exact: false })).toBeInTheDocument(); await expect.element(page.getByText('99887766')).toBeVisible(); }); @@ -199,7 +202,7 @@ describe('DsKeyValuePair', () => { />, ); - await expect.element(page.getByText('Editable value')).toBeVisible(); + await expect.element(page.getByText('Editable value', { exact: false })).toBeVisible(); await expect.element(page.getByText('info').first()).toBeVisible(); focusEditableContainerOf('Editable value'); @@ -363,7 +366,7 @@ describe('DsKeyValuePair', () => { await renderWithParkedMouse(); await expect.element(page.getByText('Read only value')).toBeVisible(); - await expect.element(page.getByText('Active')).toBeVisible(); + await expect.element(page.getByText('Active', { exact: false })).toBeVisible(); await expect.element(page.getByText('Tag-name').first()).toBeVisible(); await expect.element(page.getByText('Cisco Systems').first()).toBeVisible(); }); diff --git a/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx b/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx index 11cf2e390..21f59ac21 100644 --- a/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx +++ b/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx @@ -101,7 +101,7 @@ describe('DsMainMenu — trigger and open/close', () => { await openMenu(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); await assertClosed(); }); @@ -110,7 +110,7 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'Help & Support' })); + await userEvent.click(page.getByRole('button', { name: 'Help & Support', exact: false })); await expect.element(triggerLocator()).toHaveAttribute('aria-expanded', 'false'); }); @@ -119,7 +119,7 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - (page.getByRole('button', { name: 'Disabled app' }).element() as HTMLButtonElement).click(); + (page.getByRole('button', { name: 'Disabled app', exact: false }).element() as HTMLButtonElement).click(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); }); @@ -128,7 +128,9 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - (page.getByRole('button', { name: 'Coming soon app' }).element() as HTMLButtonElement).click(); + ( + page.getByRole('button', { name: 'Coming soon app', exact: false }).element() as HTMLButtonElement + ).click(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); }); @@ -172,7 +174,7 @@ describe('DsMainMenu — controlled open', () => { await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); expect(onOpenChange).toHaveBeenCalledWith(false); }); @@ -186,10 +188,10 @@ describe('DsMainMenu — tile and utility link behavior', () => { const nav = page.getByRole('navigation', { name: 'Main menu' }); await expect.element(nav).toBeVisible(); - await expect.element(page.getByRole('link', { name: 'Inventory' })).toBeVisible(); - await expect.element(page.getByRole('button', { name: 'My dashboard' })).toBeVisible(); - await expect.element(page.getByRole('button', { name: 'Help & Support' })).toBeVisible(); - await expect.element(page.getByRole('link', { name: 'Knowledge Center' })).toBeVisible(); + await expect.element(page.getByRole('link', { name: 'Inventory', exact: false })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'My dashboard', exact: false })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'Help & Support', exact: false })).toBeVisible(); + await expect.element(page.getByRole('link', { name: 'Knowledge Center', exact: false })).toBeVisible(); }); it('marks the selected tile with aria-current="page"', async () => { @@ -199,7 +201,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const selectedTile = page.getByRole('button', { name: 'My dashboard' }); + const selectedTile = page.getByRole('button', { name: 'My dashboard', exact: false }); expect(selectedTile.element().getAttribute('aria-current')).toBe('page'); }); @@ -211,11 +213,11 @@ describe('DsMainMenu — tile and utility link behavior', () => { ); await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); // Reopen after auto-close await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'Help & Support' })); + await userEvent.click(page.getByRole('button', { name: 'Help & Support', exact: false })); expect(onItemSelect).toHaveBeenCalledTimes(2); expect(onItemSelect).toHaveBeenNthCalledWith(1, 'dashboard'); @@ -238,7 +240,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const inventoryLink = page.getByRole('link', { name: 'Inventory' }); + const inventoryLink = page.getByRole('link', { name: 'Inventory', exact: false }); inventoryLink.element().addEventListener('click', (event) => event.preventDefault()); await userEvent.click(inventoryLink); @@ -254,8 +256,10 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - (page.getByRole('button', { name: 'Disabled app' }).element() as HTMLButtonElement).click(); - (page.getByRole('button', { name: 'Coming soon app' }).element() as HTMLButtonElement).click(); + (page.getByRole('button', { name: 'Disabled app', exact: false }).element() as HTMLButtonElement).click(); + ( + page.getByRole('button', { name: 'Coming soon app', exact: false }).element() as HTMLButtonElement + ).click(); expect(onItemSelect).not.toHaveBeenCalled(); }); @@ -265,7 +269,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const disabledTile = page.getByRole('button', { name: 'Disabled app' }); + const disabledTile = page.getByRole('button', { name: 'Disabled app', exact: false }); expect(disabledTile.element().tabIndex).toBe(-1); expect(disabledTile.element().getAttribute('aria-disabled')).toBe('true'); }); @@ -275,11 +279,11 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const comingSoonTile = page.getByRole('button', { name: 'Coming soon app' }); + const comingSoonTile = page.getByRole('button', { name: 'Coming soon app', exact: false }); const badge = comingSoonTile.element().querySelector('[class*="badge"]') as HTMLElement; await comingSoonTile.hover(); - await page.elementLocator(badge).hover(); + await page.elementLocator(badge).hover({ force: true }); await expect .element(page.getByRole('tooltip', { name: COMING_SOON_TOOLTIP }), { timeout: 3000 }) @@ -297,7 +301,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const tile = page.getByRole('button', { name: 'My dashboard' }); + const tile = page.getByRole('button', { name: 'My dashboard', exact: false }); await expect.element(tile).toBeVisible(); expect(tile.element().querySelector('svg')).not.toBeNull(); }); @@ -326,7 +330,7 @@ describe('DsMainMenu — expanded variant', () => { await openMenu(); - await expect.element(page.getByRole('button', { name: 'My dashboard' })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'My dashboard', exact: false })).toBeVisible(); await expect.element(page.getByText('Hidden in compact.')).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx b/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx index b5e35da19..68d7e39a6 100644 --- a/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx +++ b/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx @@ -113,7 +113,10 @@ describe('DsPanel', () => { it('should apply default responsive width when no width prop is provided', async () => { await page.render(Content); - const panel = page.getByText('Content').element().closest('[data-state]') as HTMLElement; + const panel = page + .getByText('Content', { exact: false }) + .element() + .closest('[data-state]') as HTMLElement; const { width } = panel.getBoundingClientRect(); const expectedWidth = Math.min(480, Math.max(240, window.innerWidth * 0.2)); @@ -127,7 +130,10 @@ describe('DsPanel', () => { , ); - const panel = page.getByText('Content').element().closest('[data-state]') as HTMLElement; + const panel = page + .getByText('Content', { exact: false }) + .element() + .closest('[data-state]') as HTMLElement; const { width } = panel.getBoundingClientRect(); expect(Math.round(width)).toBe(350); diff --git a/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx b/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx index 0e28d5202..61d0bbbbc 100644 --- a/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx +++ b/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx @@ -111,7 +111,7 @@ describe('DsTopBarNavigation', () => { await expect.element(trigger).toHaveAttribute('aria-expanded', 'true'); // A tile with no `href` renders as a button. - await userEvent.click(page.getByRole('button', { name: 'Inventory' })); + await userEvent.click(page.getByRole('button', { name: 'Inventory', exact: false })); expect(onItemSelect).toHaveBeenCalledWith('inventory'); expect(onAppsClick).not.toHaveBeenCalled();