diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf7d898f93b..67474c5e4d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -479,6 +479,32 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: ./.github/actions/setup - uses: ./.github/actions/cypress-atomic-screenshots + storybook-atomic: + name: "Run Storybook tests" + needs: build + runs-on: ubuntu-latest + container: + image: mcr.microsoft.com/playwright:v1.56.1-noble + options: --user 1001 + strategy: + fail-fast: false + matrix: + shardIndex: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + shardTotal: [10] + steps: + - name: Harden Runner + uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + with: + fetch-depth: 0 + filter: blob:none + - run: git branch main origin/main + - uses: ./.github/actions/setup + - run: npm run test:storybook -- --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} + working-directory: packages/atomic playwright-atomic-search-commerce-react-test: name: "Run e2e tests on Atomic Search Commerce React" needs: affected diff --git a/packages/atomic/.storybook/Introduction.stories.tsx b/packages/atomic/.storybook/Introduction.stories.tsx index f5e46d9d0fe..801ec69d78f 100644 --- a/packages/atomic/.storybook/Introduction.stories.tsx +++ b/packages/atomic/.storybook/Introduction.stories.tsx @@ -27,5 +27,5 @@ export const Default: StoryObj = { export const Crawling: StoryObj = { name: 'Crawling', - tags: ['!dev'], + tags: ['!dev', '!test'], }; diff --git a/packages/atomic/.storybook/main.mts b/packages/atomic/.storybook/main.ts similarity index 98% rename from packages/atomic/.storybook/main.mts rename to packages/atomic/.storybook/main.ts index fe785ebbfb3..795ca6f3227 100644 --- a/packages/atomic/.storybook/main.mts +++ b/packages/atomic/.storybook/main.ts @@ -108,7 +108,11 @@ const config: StorybookConfig = { {from: '../dist/atomic/lang', to: './lang'}, {from: './public', to: '/'}, ], - addons: ['@storybook/addon-a11y', '@storybook/addon-docs'], + addons: [ + '@storybook/addon-a11y', + '@storybook/addon-docs', + '@storybook/addon-vitest', + ], framework: { name: '@storybook/web-components-vite', options: {}, diff --git a/packages/atomic/.storybook/preview.ts b/packages/atomic/.storybook/preview.ts index f2e55123483..8798abaa434 100644 --- a/packages/atomic/.storybook/preview.ts +++ b/packages/atomic/.storybook/preview.ts @@ -89,6 +89,13 @@ export const parameters: Parameters = { controls: { expanded: true, }, + + a11y: { + // 'todo' - show a11y violations in the test UI only + // 'error' - fail CI on a11y violations + // 'off' - skip a11y checks entirely + test: 'todo', + }, }; export const decorators = [ diff --git a/packages/atomic/.storybook/vitest.setup.ts b/packages/atomic/.storybook/vitest.setup.ts new file mode 100644 index 00000000000..2db2bf04cf2 --- /dev/null +++ b/packages/atomic/.storybook/vitest.setup.ts @@ -0,0 +1,14 @@ +import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview'; +import {setProjectAnnotations} from '@storybook/web-components-vite'; +import {beforeEach, vi} from 'vitest'; +import * as projectAnnotations from './preview'; + +// Complement packages/atomic/vitest-utils/setup.ts by silencing console.warn and console.log as well (Storybook is a bit noisy atm). +beforeEach(async () => { + vi.spyOn(console, 'warn').mockImplementation(() => {}); + vi.spyOn(console, 'log').mockImplementation(() => {}); +}); + +// This is an important step to apply the right configuration when testing your stories. +// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations +setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]); diff --git a/packages/atomic/package.json b/packages/atomic/package.json index 42276f9bccf..14a1a7974ee 100644 --- a/packages/atomic/package.json +++ b/packages/atomic/package.json @@ -61,8 +61,9 @@ "prod": "npx serve www -l 3333 --no-request-logging", "test": "pnpm run test:stencil && pnpm run test:lit", "test:stencil": "stencil test --spec -- src/utils/initialization-utils.spec.ts", - "test:lit": "vitest run", - "test:watch": "vitest", + "test:lit": "vitest run --project=atomic-default", + "test:watch": "vitest --project=atomic-default", + "test:storybook": "vitest run --project=storybook", "e2e": "cypress run --browser chrome", "e2e:firefox": "cypress run --browser firefox", "e2e:watch": "cypress open --browser chrome --e2e", @@ -113,6 +114,7 @@ "@stencil/react-output-target": "0.5.3", "@storybook/addon-a11y": "9.1.2", "@storybook/addon-docs": "9.1.2", + "@storybook/addon-vitest": "9.1.2", "@storybook/icons": "1.4.0", "@storybook/web-components-vite": "9.1.2", "@tailwindcss/postcss": "4.1.13", @@ -122,6 +124,7 @@ "@types/minimatch": "5.1.2", "@types/node": "catalog:", "@vitest/browser": "3.2.4", + "@vitest/coverage-v8": "^3.2.4", "@wc-toolkit/storybook-helpers": "9.0.1", "axe-core": "4.10.3", "cypress": "catalog:", diff --git a/packages/atomic/src/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.new.stories.tsx b/packages/atomic/src/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.new.stories.tsx index 8acc82b22ef..700918bbb0c 100644 --- a/packages/atomic/src/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.new.stories.tsx +++ b/packages/atomic/src/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.new.stories.tsx @@ -28,12 +28,17 @@ const meta: Meta = { }, args, argTypes, - - play: async (context) => { - await commerceInterfacePlay(context); - const canvas = within(context.canvasElement); - const searchBox = await canvas.findAllByShadowPlaceholderText('Search'); - await userEvent.click(searchBox[0]); + //TODO KIT-5111: Remove beforeEach when refactored in preview.ts + beforeEach({canvasElement, canvas}) { + Object.assign(canvas, {...within(canvasElement)}); + }, + play: async ({mount, step, ...restOfContext}) => { + const canvas = (await mount()) as ReturnType; + await commerceInterfacePlay({mount, step, ...restOfContext}); + await step('Click in the search box', async () => { + const searchBox = await canvas.findByShadowRole('textbox'); + await userEvent.click(searchBox); + }); }, }; diff --git a/packages/atomic/src/components/common/atomic-icon/atomic-icon.new.stories.tsx b/packages/atomic/src/components/common/atomic-icon/atomic-icon.new.stories.tsx index 36a27debb7b..97a97c141ce 100644 --- a/packages/atomic/src/components/common/atomic-icon/atomic-icon.new.stories.tsx +++ b/packages/atomic/src/components/common/atomic-icon/atomic-icon.new.stories.tsx @@ -36,6 +36,8 @@ const meta: Meta = { argTypes, play, + //TODO: Investigate https://coveord.atlassian.net/browse/KIT-5112 + tags: ['!test'], }; export default meta; diff --git a/packages/atomic/src/components/search/atomic-result-children-template/atomic-result-children-template.new.stories.tsx b/packages/atomic/src/components/search/atomic-result-children-template/atomic-result-children-template.new.stories.tsx index d37ab959c68..ad7daec5766 100644 --- a/packages/atomic/src/components/search/atomic-result-children-template/atomic-result-children-template.new.stories.tsx +++ b/packages/atomic/src/components/search/atomic-result-children-template/atomic-result-children-template.new.stories.tsx @@ -137,20 +137,19 @@ const meta: Meta = { export default meta; -const {decorator: searchInterfaceDecorator, play: initializeSearchInterface} = - wrapInSearchInterface({ - config: { - preprocessRequest: (request: any) => { - const parsed = JSON.parse(request.body as string); - parsed.numberOfResults = 4; - parsed.aq = '@source=iNaturalistTaxons'; - request.body = JSON.stringify(parsed); - return request; - }, +const {decorator, play} = wrapInSearchInterface({ + config: { + preprocessRequest: (request: any) => { + const parsed = JSON.parse(request.body as string); + parsed.numberOfResults = 4; + parsed.aq = '@source=iNaturalistTaxons'; + request.body = JSON.stringify(parsed); + return request; }, - skipFirstSearch: false, - includeCodeRoot: false, - }); + }, + skipFirstSearch: false, + includeCodeRoot: false, +}); export const Default: Story = { name: 'In a folded result list', @@ -165,9 +164,9 @@ export const Default: Story = { `, - searchInterfaceDecorator, + decorator, ], - afterEach: initializeSearchInterface, + play, parameters: { docs: { source: { diff --git a/packages/atomic/src/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.new.stories.tsx b/packages/atomic/src/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.new.stories.tsx index ddbc945555a..62eaeaa6e34 100644 --- a/packages/atomic/src/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.new.stories.tsx +++ b/packages/atomic/src/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.new.stories.tsx @@ -39,6 +39,7 @@ const meta: Meta = { handles: events, }, }, + tags: ['!test'], args, argTypes, diff --git a/packages/atomic/turbo.json b/packages/atomic/turbo.json index 56827fb2598..dd1709da706 100644 --- a/packages/atomic/turbo.json +++ b/packages/atomic/turbo.json @@ -46,6 +46,10 @@ "dependsOn": ["^build", "build"], "outputs": ["coverage/**"] }, + "test:storybook": { + "dependsOn": ["^build", "build"], + "outputs": [] + }, "web:dev": { "dependsOn": ["build"], "cache": false, diff --git a/packages/atomic/vitest.config.js b/packages/atomic/vitest.config.js index b51f1e9f1e7..bd87dd1d2de 100644 --- a/packages/atomic/vitest.config.js +++ b/packages/atomic/vitest.config.js @@ -1,5 +1,6 @@ import {readFileSync} from 'node:fs'; import path, {dirname, resolve} from 'node:path'; +import {storybookTest} from '@storybook/addon-vitest/vitest-plugin'; import tailwindcss from '@tailwindcss/vite'; import {configDefaults, defineConfig} from 'vitest/config'; import packageJsonHeadless from '../headless/package.json' with {type: 'json'}; @@ -23,7 +24,8 @@ function svgTransform(code, id) { ); } -export default defineConfig({ +const atomicDefault = defineConfig({ + name: 'atomic-default', define: { 'import.meta.env.RESOURCE_URL': `"${resourceUrl}"`, __ATOMIC_VERSION__: `"${packageJson.version}"`, @@ -35,7 +37,10 @@ export default defineConfig({ }, resolve: { alias: [ - {find: '@/', replacement: `${path.resolve(import.meta.dirname, './')}/`}, + { + find: '@/', + replacement: `${path.resolve(import.meta.dirname, './')}/`, + }, { find: /^@coveo\/headless\/(.*)$/, replacement: path.resolve( @@ -94,6 +99,7 @@ export default defineConfig({ }, ], test: { + name: 'atomic-default', css: true, include: ['src/**/*.spec.ts', 'scripts/stencil-proxy.spec.mjs'], exclude: [ @@ -120,3 +126,34 @@ export default defineConfig({ }, }, }); + +// More info at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon +const storybook = defineConfig({ + name: 'storybook', + plugins: [ + // The plugin will run tests for the stories defined in your Storybook config + // See options at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon#storybooktest + storybookTest({ + configDir: path.join(import.meta.dirname, '.storybook'), + storybookUrl: 'http://localhost:4400', + storybookScript: 'npx storybook dev -p 4400 --no-open', + }), + ], + test: { + name: 'storybook', + fileParallelism: false, + browser: { + fileParallelism: false, + enabled: true, + headless: true, + provider: 'playwright', + instances: [{browser: 'chromium'}], + context: { + actionTimeout: 3000, + }, + }, + setupFiles: ['./vitest-utils/setup.ts', '.storybook/vitest.setup.ts'], + }, +}); + +export default defineConfig({test: {projects: [atomicDefault, storybook]}}); diff --git a/patches/@wc-toolkit+storybook-helpers+9.0.1.patch b/patches/@wc-toolkit+storybook-helpers+9.0.1.patch index 697bc151ce7..5ccce8a398f 100644 --- a/patches/@wc-toolkit+storybook-helpers+9.0.1.patch +++ b/patches/@wc-toolkit+storybook-helpers+9.0.1.patch @@ -50,7 +50,7 @@ index 1c0f4ce..1051420 100644 ) : ""} `; } -@@ -705,18 +717,29 @@ function getSlotsTemplate(component, args, excludeCategories) { +@@ -705,18 +717,32 @@ function getSlotsTemplate(component, args, excludeCategories) { ${slotTemplates} `) : ""; } @@ -70,6 +70,9 @@ index 1c0f4ce..1051420 100644 + containerElement = containerElement.shadowRoot; + } + const selectedComponent = containerElement.querySelector(component.tagName); ++ if(!selectedComponent) { ++ return; ++ } argObserver?.observe(selectedComponent, { - attributes: true + attributes: true, @@ -84,7 +87,7 @@ index 1c0f4ce..1051420 100644 const { attrArgs: attributes } = getAttributesAndProperties(component); if (argObserver) { return; -@@ -726,13 +749,24 @@ function setArgObserver(component) { +@@ -726,13 +752,24 @@ function setArgObserver(component) { if (mutation.attributeName === "class" && isUpdating) { return; } @@ -110,7 +113,7 @@ index 1c0f4ce..1051420 100644 updateArgs({ [`${mutation.attributeName}`]: mutation.target.getAttribute(mutation.attributeName || "") }); -@@ -781,7 +815,8 @@ function getStorybookHelpers(tagName, options3) { +@@ -781,7 +818,8 @@ function getStorybookHelpers(tagName, options3) { slot, argTypes, options3?.excludeCategories || [], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 038bb5f6b54..765399e3535 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,7 @@ patchedDependencies: hash: bca691c52b3fa2f491c35229af7f145e17fd520326f997c6a15ca31fd19b937e path: patches/@stencil__react-output-target@0.5.3.patch '@wc-toolkit/storybook-helpers@9.0.1': - hash: 9f098b922d1c5841f98943006971dda1b8c3725e1f23933b1a6399beadddeff4 + hash: faa3d80e4fe5c26a948e0387112f223337748e98d4e1537126dddddf2569576a path: patches/@wc-toolkit+storybook-helpers+9.0.1.patch fix-esm-import-path@1.10.1: hash: d8c4a243b0a6082b2f2f0dedd8551ff16da1e9adcda2a63b337f2664708a7f7d @@ -294,6 +294,9 @@ importers: '@storybook/addon-docs': specifier: 9.1.2 version: 9.1.2(@types/react@19.2.2)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + '@storybook/addon-vitest': + specifier: 9.1.2 + version: 9.1.2(@vitest/browser@3.2.4)(@vitest/runner@3.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@3.2.4) '@storybook/icons': specifier: 1.4.0 version: 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -321,9 +324,12 @@ importers: '@vitest/browser': specifier: 3.2.4 version: 3.2.4(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(playwright@1.56.1)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4) + '@vitest/coverage-v8': + specifier: ^3.2.4 + version: 3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4) '@wc-toolkit/storybook-helpers': specifier: 9.0.1 - version: 9.0.1(patch_hash=9f098b922d1c5841f98943006971dda1b8c3725e1f23933b1a6399beadddeff4)(lit@3.3.1)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.0.1(patch_hash=faa3d80e4fe5c26a948e0387112f223337748e98d4e1537126dddddf2569576a)(lit@3.3.1)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) axe-core: specifier: 4.10.3 version: 4.10.3 @@ -918,10 +924,10 @@ importers: version: 1.56.1 '@salesforce/eslint-config-lwc': specifier: 3.7.2 - version: 3.7.2(@lwc/eslint-plugin-lwc@2.2.0(@babel/eslint-parser@7.24.8(@babel/core@7.28.4)(eslint@8.57.1))(eslint@8.57.1))(@salesforce/eslint-plugin-lightning@1.0.1(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1) + version: 3.7.2(@lwc/eslint-plugin-lwc@2.2.0(@babel/eslint-parser@7.24.8(@babel/core@7.28.4)(eslint@8.57.1))(eslint@8.57.1))(@salesforce/eslint-plugin-lightning@1.0.1(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1) '@salesforce/sfdx-lwc-jest': specifier: 5.1.0 - version: 5.1.0(@types/node@22.16.5)(eslint@8.57.1)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))(typescript@5.8.3) + version: 5.1.0(@types/node@24.7.2)(eslint@8.57.1)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))(typescript@5.8.3) '@types/wait-on': specifier: 5.3.4 version: 5.3.4 @@ -942,7 +948,7 @@ importers: version: 3.1.2 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + version: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) jest-junit: specifier: 16.0.0 version: 16.0.0 @@ -957,7 +963,7 @@ importers: version: 2.2.6(prettier@3.6.2) ts-node: specifier: 10.9.2 - version: 10.9.2(@types/node@22.16.5)(typescript@5.8.3) + version: 10.9.2(@types/node@24.7.2)(typescript@5.8.3) wait-on: specifier: 8.0.4 version: 8.0.4 @@ -1009,7 +1015,7 @@ importers: version: 19.2.2(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.2(@angular/animations@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@coveo/atomic-angular': specifier: 3.7.15 - version: 3.7.15(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(@coveo/bueno@1.1.3)(@coveo/headless@3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3) + version: 3.7.15(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(@coveo/bueno@1.1.5)(@coveo/headless@3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3) rxjs: specifier: 7.8.2 version: 7.8.2 @@ -1043,7 +1049,7 @@ importers: dependencies: '@coveo/atomic-react': specifier: 3.3.19 - version: 3.3.19(@coveo/bueno@1.1.3)(@coveo/headless@packages+headless)(@types/react@19.2.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + version: 3.3.19(@coveo/bueno@1.1.5)(@coveo/headless@packages+headless)(@types/react@19.2.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) '@coveo/headless': specifier: workspace:* version: link:../../../packages/headless @@ -2512,6 +2518,10 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + '@biomejs/biome@2.1.4': resolution: {integrity: sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA==} engines: {node: '>=14.21.3'} @@ -2619,8 +2629,8 @@ packages: resolution: {integrity: sha512-m51EdkcG47/LJmCXOPrpKvYBaeiyNrs0JXpA0BaFiqnhdje/ap84iJxpXKnRUHMZvC9vxufdWExGTwXyt2NdNA==} engines: {node: ^20.9.0 || ^22.11.0} - '@coveo/bueno@1.1.3': - resolution: {integrity: sha512-JpF4f7l/dcmv4MTQAU+gIR5VAr+pAvZP/OxUN6a7wqKtzdCrTDnOEyDUKEbZjT3hgQw3FnXJeoXfTXJBg/T/ow==} + '@coveo/bueno@1.1.5': + resolution: {integrity: sha512-sDilwcVTBZ+pohmed4lkGnIqTGqsbf8fTLZb00EHPw6XZzwvT76xuV+4RO2chxyKbgjNa4FfjwBBz1FBUNgFJQ==} engines: {node: ^20.9.0 || ^22.11.0} '@coveo/create-atomic-component-project@1.4.2': @@ -2637,8 +2647,8 @@ packages: '@coveo/explorer-messenger@0.4.1': resolution: {integrity: sha512-MX+alPTsRQLAC99b7cUwMGtaGcDw44ftEJOFwoS8alTgFlY7oaUP4jyZSJ/BCOMXlYpkhU2VYDERr/HD5P1Dtw==} - '@coveo/headless@3.34.0': - resolution: {integrity: sha512-gD5AswSnyDyb5QZuDWHJ9vyM+/E/ykcvuPbLvIp6XZMZYdBzLDX7kAmgy6+fNZNWGM4j+wxlAdSS3f+h25KKWg==} + '@coveo/headless@3.34.2': + resolution: {integrity: sha512-I8wOsD03waUT27WEEkJNlA6OeDnDtRNfzYkyqyRnRwOmK6omz5Vi3rRLi7iz+q0xfAWhap3lfKY/3/e+u6pvrQ==} engines: {node: ^20.9.0 || ^22.11.0} peerDependencies: encoding: ^0.1.13 @@ -5344,6 +5354,21 @@ packages: peerDependencies: storybook: ^9.1.2 + '@storybook/addon-vitest@9.1.2': + resolution: {integrity: sha512-lfaGyWFg8lu9ObHg8i783U/JH8LYaAc+lTjBvy5dMx38HH/XC+QuAoOCYhHU2rx0zeFHIyXGDol4d1uQxMTlLQ==} + peerDependencies: + '@vitest/browser': ^3.0.0 + '@vitest/runner': ^3.0.0 + storybook: ^9.1.2 + vitest: ^3.0.0 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/runner': + optional: true + vitest: + optional: true + '@storybook/builder-vite@9.1.2': resolution: {integrity: sha512-5Y7e5wnSzFxCGP63UNRRZVoxHe1znU4dYXazJBobAlEcUPBk7A0sH2716tA6bS4oz92oG9tgvn1g996hRrw4ow==} peerDependencies: @@ -6018,6 +6043,15 @@ packages: webdriverio: optional: true + '@vitest/coverage-v8@3.2.4': + resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + peerDependencies: + '@vitest/browser': 3.2.4 + vitest: 3.2.4 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -6462,6 +6496,9 @@ packages: resolution: {integrity: sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==} engines: {node: '>= 0.8'} + ast-v8-to-istanbul@0.3.8: + resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -9477,6 +9514,10 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} @@ -10225,6 +10266,9 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -12740,6 +12784,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -15322,6 +15370,8 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@1.0.2': {} + '@biomejs/biome@2.1.4': optionalDependencies: '@biomejs/cli-darwin-arm64': 2.1.4 @@ -15360,12 +15410,12 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@coveo/atomic-angular@3.7.15(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(@coveo/bueno@1.1.3)(@coveo/headless@3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3)': + '@coveo/atomic-angular@3.7.15(@angular/common@19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(@coveo/bueno@1.1.5)(@coveo/headless@3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3)': dependencies: '@angular/common': 19.2.2(@angular/core@19.2.2(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 19.2.2(rxjs@7.8.2)(zone.js@0.15.1) - '@coveo/atomic': 3.37.0(@coveo/bueno@1.1.3)(@coveo/headless@3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3) - '@coveo/headless': 3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3) + '@coveo/atomic': 3.37.0(@coveo/bueno@1.1.5)(@coveo/headless@3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3) + '@coveo/headless': 3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3) tslib: 2.8.1 transitivePeerDependencies: - '@coveo/bueno' @@ -15378,9 +15428,9 @@ snapshots: chalk: 4.1.2 zod: 3.22.4 - '@coveo/atomic-react@3.3.19(@coveo/bueno@1.1.3)(@coveo/headless@packages+headless)(@types/react@19.2.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@coveo/atomic-react@3.3.19(@coveo/bueno@1.1.5)(@coveo/headless@packages+headless)(@types/react@19.2.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': dependencies: - '@coveo/atomic': 3.36.0(@coveo/bueno@1.1.3)(@coveo/headless@packages+headless)(postcss@8.5.6)(typescript@5.8.3) + '@coveo/atomic': 3.36.0(@coveo/bueno@1.1.5)(@coveo/headless@packages+headless)(postcss@8.5.6)(typescript@5.8.3) '@coveo/headless': link:packages/headless '@lit/react': 1.0.6(@types/react@19.2.2) react: 19.2.0 @@ -15392,9 +15442,9 @@ snapshots: - postcss - typescript - '@coveo/atomic@3.36.0(@coveo/bueno@1.1.3)(@coveo/headless@packages+headless)(postcss@8.5.6)(typescript@5.8.3)': + '@coveo/atomic@3.36.0(@coveo/bueno@1.1.5)(@coveo/headless@packages+headless)(postcss@8.5.6)(typescript@5.8.3)': dependencies: - '@coveo/bueno': 1.1.3 + '@coveo/bueno': 1.1.5 '@coveo/headless': link:packages/headless '@lit/context': 1.1.6 '@open-wc/lit-helpers': 0.7.0(lit@3.3.1) @@ -15416,10 +15466,10 @@ snapshots: - encoding - postcss - '@coveo/atomic@3.37.0(@coveo/bueno@1.1.3)(@coveo/headless@3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3)': + '@coveo/atomic@3.37.0(@coveo/bueno@1.1.5)(@coveo/headless@3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3))(encoding@0.1.13)(postcss@8.5.6)(typescript@5.8.3)': dependencies: - '@coveo/bueno': 1.1.3 - '@coveo/headless': 3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3) + '@coveo/bueno': 1.1.5 + '@coveo/headless': 3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3) '@lit/context': 1.1.6 '@open-wc/lit-helpers': 0.7.0(lit@3.3.1) '@popperjs/core': 2.11.8 @@ -15442,7 +15492,7 @@ snapshots: '@coveo/auth@2.1.1': {} - '@coveo/bueno@1.1.3': {} + '@coveo/bueno@1.1.5': {} '@coveo/create-atomic-component-project@1.4.2': {} @@ -15452,9 +15502,9 @@ snapshots: '@coveo/explorer-messenger@0.4.1': {} - '@coveo/headless@3.34.0(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3)': + '@coveo/headless@3.34.2(encoding@0.1.13)(pino-pretty@13.1.1)(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)(redux@5.0.1)(typescript@5.8.3)': dependencies: - '@coveo/bueno': 1.1.3 + '@coveo/bueno': 1.1.5 '@coveo/relay': 1.2.7 '@coveo/relay-event-types': 15.1.0 '@reduxjs/toolkit': 2.6.0(react@19.2.0) @@ -15469,6 +15519,7 @@ snapshots: pino: 9.7.0 pino-pretty: 13.1.1 redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -16736,33 +16787,33 @@ snapshots: globals: 13.24.0 minimatch: 9.0.5 - '@lwc/jest-preset@16.0.0(@lwc/compiler@6.7.2)(@lwc/engine-dom@6.7.2)(@lwc/engine-server@6.7.2)(@lwc/synthetic-shadow@6.7.2)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))': + '@lwc/jest-preset@16.0.0(@lwc/compiler@6.7.2)(@lwc/engine-dom@6.7.2)(@lwc/engine-server@6.7.2)(@lwc/synthetic-shadow@6.7.2)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))': dependencies: '@lwc/compiler': 6.7.2 '@lwc/engine-dom': 6.7.2 '@lwc/engine-server': 6.7.2 - '@lwc/jest-resolver': 16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) - '@lwc/jest-serializer': 16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) - '@lwc/jest-transformer': 16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) + '@lwc/jest-resolver': 16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) + '@lwc/jest-serializer': 16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) + '@lwc/jest-transformer': 16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) '@lwc/synthetic-shadow': 6.7.2 - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) transitivePeerDependencies: - supports-color - '@lwc/jest-resolver@16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))': + '@lwc/jest-resolver@16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))': dependencies: '@lwc/jest-shared': 16.0.0 - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) - '@lwc/jest-serializer@16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))': + '@lwc/jest-serializer@16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))': dependencies: '@lwc/jest-shared': 16.0.0 - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) pretty-format: 29.7.0 '@lwc/jest-shared@16.0.0': {} - '@lwc/jest-transformer@16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))': + '@lwc/jest-transformer@16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.28.4) @@ -16773,7 +16824,7 @@ snapshots: '@lwc/compiler': 6.7.2 '@lwc/jest-shared': 16.0.0 babel-preset-jest: 29.6.3(@babel/core@7.28.4) - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) magic-string: 0.30.19 semver: 7.7.2 transitivePeerDependencies: @@ -17864,7 +17915,7 @@ snapshots: dependencies: postcss: 8.5.6 - '@salesforce/eslint-config-lwc@3.7.2(@lwc/eslint-plugin-lwc@2.2.0(@babel/eslint-parser@7.24.8(@babel/core@7.28.4)(eslint@8.57.1))(eslint@8.57.1))(@salesforce/eslint-plugin-lightning@1.0.1(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1)': + '@salesforce/eslint-config-lwc@3.7.2(@lwc/eslint-plugin-lwc@2.2.0(@babel/eslint-parser@7.24.8(@babel/core@7.28.4)(eslint@8.57.1))(eslint@8.57.1))(@salesforce/eslint-plugin-lightning@1.0.1(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1)': dependencies: '@babel/core': 7.24.9 '@babel/eslint-parser': 7.24.8(@babel/core@7.24.9)(eslint@8.57.1) @@ -17872,7 +17923,7 @@ snapshots: '@salesforce/eslint-plugin-lightning': 1.0.1(eslint@8.57.1) eslint: 8.57.1 eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) - eslint-plugin-jest: 29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3) + eslint-plugin-jest: 29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))(typescript@5.8.3) eslint-restricted-globals: 0.2.0 semver: 7.7.2 transitivePeerDependencies: @@ -17882,21 +17933,21 @@ snapshots: dependencies: eslint: 8.57.1 - '@salesforce/sfdx-lwc-jest@5.1.0(@types/node@22.16.5)(eslint@8.57.1)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))(typescript@5.8.3)': + '@salesforce/sfdx-lwc-jest@5.1.0(@types/node@24.7.2)(eslint@8.57.1)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))(typescript@5.8.3)': dependencies: '@lwc/compiler': 6.7.2 '@lwc/engine-dom': 6.7.2 '@lwc/engine-server': 6.7.2 - '@lwc/jest-preset': 16.0.0(@lwc/compiler@6.7.2)(@lwc/engine-dom@6.7.2)(@lwc/engine-server@6.7.2)(@lwc/synthetic-shadow@6.7.2)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) - '@lwc/jest-resolver': 16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) - '@lwc/jest-serializer': 16.0.0(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) - '@lwc/jest-transformer': 16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3))) + '@lwc/jest-preset': 16.0.0(@lwc/compiler@6.7.2)(@lwc/engine-dom@6.7.2)(@lwc/engine-server@6.7.2)(@lwc/synthetic-shadow@6.7.2)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) + '@lwc/jest-resolver': 16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) + '@lwc/jest-serializer': 16.0.0(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) + '@lwc/jest-transformer': 16.0.0(@lwc/compiler@6.7.2)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3))) '@lwc/module-resolver': 6.7.2 '@lwc/synthetic-shadow': 6.7.2 '@lwc/wire-service': 6.7.2 '@salesforce/wire-service-jest-util': 4.1.4(@lwc/engine-dom@6.7.2)(eslint@8.57.1)(typescript@5.8.3) fast-glob: 3.3.3 - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) jest-environment-jsdom: 29.7.0(patch_hash=b419a992476c3323e67ee6c86f3f9ecf6f4f073127cb572aa9af3b9c6550751d) yargs: 17.7.2 transitivePeerDependencies: @@ -18058,6 +18109,21 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@storybook/addon-vitest@9.1.2(@vitest/browser@3.2.4)(@vitest/runner@3.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@3.2.4)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + prompts: 2.4.2 + storybook: 9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + ts-dedent: 2.2.0 + optionalDependencies: + '@vitest/browser': 3.2.4(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(playwright@1.56.1)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4) + '@vitest/runner': 3.2.4 + vitest: 3.2.4(@types/node@22.16.5)(@vitest/browser@3.2.4)(jiti@2.6.1)(jsdom@20.0.3)(less@4.4.2)(lightningcss@1.30.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - react + - react-dom + '@storybook/builder-vite@9.1.2(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@storybook/csf-plugin': 9.1.2(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) @@ -18898,6 +18964,27 @@ snapshots: - vite optional: true + '@vitest/coverage-v8@3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + ast-v8-to-istanbul: 0.3.8 + debug: 4.4.3(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + magic-string: 0.30.19 + magicast: 0.3.5 + std-env: 3.9.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/node@22.16.5)(@vitest/browser@3.2.4)(jiti@2.6.1)(jsdom@20.0.3)(less@4.4.2)(lightningcss@1.30.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + optionalDependencies: + '@vitest/browser': 3.2.4(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(playwright@1.56.1)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4) + transitivePeerDependencies: + - supports-color + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.2 @@ -19038,7 +19125,7 @@ snapshots: '@vue/shared@3.5.22': {} - '@wc-toolkit/storybook-helpers@9.0.1(patch_hash=9f098b922d1c5841f98943006971dda1b8c3725e1f23933b1a6399beadddeff4)(lit@3.3.1)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@wc-toolkit/storybook-helpers@9.0.1(patch_hash=faa3d80e4fe5c26a948e0387112f223337748e98d4e1537126dddddf2569576a)(lit@3.3.1)(storybook@9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': dependencies: lit: 3.3.1 storybook: 9.1.2(@testing-library/dom@10.4.1)(msw@2.11.4(@types/node@22.16.5)(typescript@5.8.3))(prettier@3.6.2)(vite@7.0.5(@types/node@22.16.5)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) @@ -19405,6 +19492,12 @@ snapshots: ast-types@0.9.6: {} + ast-v8-to-istanbul@0.3.8: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 9.0.1 + astral-regex@2.0.0: {} astring@1.8.6: {} @@ -21301,12 +21394,12 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3): + eslint-plugin-jest@29.0.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.46.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 optionalDependencies: - jest: 29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)) + jest: 29.7.0(@types/node@24.7.2)(ts-node@10.9.2(@types/node@24.7.2)(typescript@5.8.3)) transitivePeerDependencies: - supports-color - typescript @@ -22990,6 +23083,14 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 @@ -24193,6 +24294,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magicast@0.3.5: + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + source-map-js: 1.2.1 + make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -27251,6 +27358,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-decoder@1.2.3: dependencies: b4a: 1.7.3 @@ -27437,7 +27550,6 @@ snapshots: typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optional: true ts-simple-type@2.0.0-next.0: {}