From 7d787dba99b581a09385d4f66f8eaab63e142993 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 23 Apr 2025 11:19:15 +0200 Subject: [PATCH 01/11] upgrade to Storybook 9 beta and get rid of @storybook/csf --- .storybook/main.ts | 21 +- .storybook/preview.ts | 14 +- .storybook/test-runner.ts | 17 + package.json | 12 +- src/csf/transformCsf.ts | 2 +- src/playwright/hooks.ts | 2 +- src/playwright/transformPlaywrightJson.ts | 6 +- src/typings.d.ts | 2 +- stories/atoms/Button.stories.tsx | 4 +- stories/atoms/button.css | 20 +- stories/expected-failures/Failure.stories.tsx | 2 +- stories/molecules/Header.stories.tsx | 2 +- stories/molecules/header.css | 16 +- stories/pages/Page.stories.tsx | 4 +- stories/pages/page.css | 41 +- yarn.lock | 1675 +++++++---------- 16 files changed, 722 insertions(+), 1118 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index 08cb33ff..47555a6b 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,4 +1,4 @@ -import { StorybookConfig } from '@storybok/react-vite'; +import { StorybookConfig } from '@storybook/react-vite'; let stories = [ '../stories/docs/**/*.mdx', @@ -18,18 +18,10 @@ let stories = [ if (process.env.TEST_FAILURES) { stories = ['../stories/expected-failures/*.stories.@(js|jsx|ts|tsx)']; } -const addons = [ - process.env.WITHOUT_DOCS - ? { - name: '@storybook/addon-essentials', - options: { - docs: false, - }, - } - : '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/addon-coverage', -]; +const addons = process.env.WITHOUT_DOCS + ? ['@storybook/addon-coverage', '@storybook/addon-a11y'] + : ['@storybook/addon-coverage', '@storybook/addon-a11y', '@storybook/addon-docs']; + const config: StorybookConfig = { stories, addons, @@ -40,9 +32,6 @@ const config: StorybookConfig = { name: '@storybook/react-vite', options: {}, }, - docs: { - autodocs: true, - }, }; export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts index a1cc7482..764e0755 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,4 +1,4 @@ -import type { Preview } from '@storybook/react'; +import type { Preview } from '@storybook/react-vite'; import { isTestRunner } from './is-test-runner'; const withSkippableTests = (StoryFn, { parameters }) => { @@ -12,6 +12,18 @@ const withSkippableTests = (StoryFn, { parameters }) => { const preview: Preview = { tags: ['global-tag'], decorators: [withSkippableTests], + parameters: { + a11y: { + config: { + rules: [ + { + id: 'region', + enabled: false, + }, + ], + }, + }, + }, }; export default preview; diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index c1038230..d6eb5a10 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -1,4 +1,6 @@ import { toMatchImageSnapshot } from 'jest-image-snapshot'; +import { injectAxe, checkA11y, configureAxe } from 'axe-playwright'; + import { getStoryContext, waitForPageReady } from '../dist'; import type { TestRunnerConfig } from '../dist'; @@ -19,6 +21,9 @@ const config: TestRunnerConfig = { setup() { expect.extend({ toMatchImageSnapshot }); }, + async preVisit(page) { + await injectAxe(page); + }, async postVisit(page, context) { // Get entire context of a story, including parameters, args, argTypes, etc. const { parameters } = await getStoryContext(page, context); @@ -46,6 +51,18 @@ const config: TestRunnerConfig = { const innerHTML = await elementHandler?.innerHTML(); // HTML snapshot tests expect(innerHTML).toMatchSnapshot(); + + await configureAxe(page, { + rules: parameters?.a11y?.config?.rules, + }); + + const element = parameters?.a11y?.element ?? 'body'; + await checkA11y(page, element, { + detailedReport: true, + detailedReportOptions: { + html: true, + }, + }); }, }; diff --git a/package.json b/package.json index 60c1b8b0..513d2a41 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "start": "concurrently \"yarn build:watch\" \"yarn storybook -- --quiet\"", "storybook": "storybook dev -p 6006", "test": "jest", - "test-storybook": "node dist/test-storybook", + "test-storybook": "node dist/test-storybook --maxWorkers=9", "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook\"", "test-storybook:ci-coverage": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook --coverage\"", "test-storybook:ci-failures": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"TEST_FAILURES=1 yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook:failures\"", @@ -56,7 +56,6 @@ "@babel/template": "^7.22.5", "@babel/types": "^7.22.5", "@jest/types": "^29.6.3", - "@storybook/csf": "^0.1.11", "@swc/core": "^1.5.22", "@swc/jest": "^0.2.23", "expect-playwright": "^0.8.0", @@ -77,17 +76,16 @@ "@babel/preset-env": "^7.19.4", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.18.6", + "@storybook/addon-a11y": "next", "@storybook/addon-coverage": "^1.0.0", - "@storybook/addon-essentials": "next", - "@storybook/addon-interactions": "next", - "@storybook/react": "next", + "@storybook/addon-docs": "next", "@storybook/react-vite": "next", - "@storybook/test": "next", "@types/jest": "^29.0.0", "@types/node": "^16.4.1", "@types/node-fetch": "^2.6.11", "@vitejs/plugin-react": "^4.0.3", "auto": "^11.1.6", + "axe-playwright": "^2.1.0", "babel-jest": "^29.0.0", "babel-loader": "^8.1.0", "babel-plugin-istanbul": "^6.1.1", @@ -110,7 +108,7 @@ "ts-jest": "^29.0.0", "tsup": "^6.5.0", "typescript": "~4.9.4", - "vite": "^4.4.5", + "vite": "^6.3.2", "wait-on": "^7.2.0" }, "peerDependencies": { diff --git a/src/csf/transformCsf.ts b/src/csf/transformCsf.ts index 9f1ddf82..c004a16e 100644 --- a/src/csf/transformCsf.ts +++ b/src/csf/transformCsf.ts @@ -1,5 +1,5 @@ /* eslint-disable no-underscore-dangle */ -import { toId, storyNameFromExport, combineTags } from '@storybook/csf'; +import { toId, storyNameFromExport, combineTags } from 'storybook/internal/csf'; import { loadCsf } from 'storybook/internal/csf-tools'; import * as t from '@babel/types'; import generate from '@babel/generator'; diff --git a/src/playwright/hooks.ts b/src/playwright/hooks.ts index df693cb5..d316b936 100644 --- a/src/playwright/hooks.ts +++ b/src/playwright/hooks.ts @@ -1,5 +1,5 @@ import type { BrowserContext, Page } from 'playwright'; -import type { StoryContextForEnhancers } from '@storybook/csf'; +import type { StoryContextForEnhancers } from 'storybook/internal/csf'; export type TestContext = { id: string; diff --git a/src/playwright/transformPlaywrightJson.ts b/src/playwright/transformPlaywrightJson.ts index 1777c85a..9a8b1238 100644 --- a/src/playwright/transformPlaywrightJson.ts +++ b/src/playwright/transformPlaywrightJson.ts @@ -1,6 +1,6 @@ import * as t from '@babel/types'; import generate from '@babel/generator'; -import { ComponentTitle, StoryId, StoryName, toId } from '@storybook/csf'; +import { ComponentTitle, StoryId, StoryName, toId } from 'storybook/internal/csf'; import { testPrefixer } from './transformPlaywright'; import { getTagOptions } from '../util/getTagOptions'; @@ -101,7 +101,7 @@ function v3TitleMapToV4TitleMap(titleIdToStories: Record) { type: isV3DocsOnly(stories) ? 'docs' : 'story', tags: isV3DocsOnly(stories) ? [] : ['test', 'dev'], ...story, - }) satisfies V4Entry + } satisfies V4Entry) ), ]) ); @@ -121,7 +121,7 @@ function v4TitleMapToV5TitleMap(titleIdToStories: Record) { ({ ...story, tags: story.tags ? ['test', 'dev', ...story.tags] : ['test', 'dev'], - }) satisfies V4Entry + } satisfies V4Entry) ), ]) ); diff --git a/src/typings.d.ts b/src/typings.d.ts index f4bdf425..c6c6364f 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -1,6 +1,6 @@ import { TestHook } from './playwright/hooks'; import { type setupPage } from './setup-page'; -import type { StoryContext } from '@storybook/csf'; +import type { StoryContext } from 'storybook/internal/csf'; declare global { var __sbPreVisit: TestHook; diff --git a/stories/atoms/Button.stories.tsx b/stories/atoms/Button.stories.tsx index ed66dab6..acea1406 100644 --- a/stories/atoms/Button.stories.tsx +++ b/stories/atoms/Button.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import type { Meta, StoryObj } from '@storybook/react'; -import { fn, expect, within, waitFor, userEvent, waitForElementToBeRemoved } from '@storybook/test'; +import type { Meta, StoryObj } from '@storybook/react-vite'; +import { fn, expect, within, waitFor, userEvent, waitForElementToBeRemoved } from 'storybook/test'; import { isTestRunner } from '../../.storybook/is-test-runner'; diff --git a/stories/atoms/button.css b/stories/atoms/button.css index dc91dc76..4e3620b0 100644 --- a/stories/atoms/button.css +++ b/stories/atoms/button.css @@ -1,30 +1,30 @@ .storybook-button { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 700; + display: inline-block; + cursor: pointer; border: 0; border-radius: 3em; - cursor: pointer; - display: inline-block; + font-weight: 700; line-height: 1; + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } .storybook-button--primary { + background-color: #555ab9; color: white; - background-color: #1ea7fd; } .storybook-button--secondary { - color: #333; - background-color: transparent; box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; + background-color: transparent; + color: #333; } .storybook-button--small { - font-size: 12px; padding: 10px 16px; + font-size: 12px; } .storybook-button--medium { - font-size: 14px; padding: 11px 20px; + font-size: 14px; } .storybook-button--large { - font-size: 16px; padding: 12px 24px; + font-size: 16px; } diff --git a/stories/expected-failures/Failure.stories.tsx b/stories/expected-failures/Failure.stories.tsx index b5afa3b9..8f118dfc 100644 --- a/stories/expected-failures/Failure.stories.tsx +++ b/stories/expected-failures/Failure.stories.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { within, userEvent } from '@storybook/test'; +import { within, userEvent } from 'storybook/test'; import { Page } from '../pages/Page'; diff --git a/stories/molecules/Header.stories.tsx b/stories/molecules/Header.stories.tsx index 99a621fc..f8d87a6e 100644 --- a/stories/molecules/Header.stories.tsx +++ b/stories/molecules/Header.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { Header } from './Header'; diff --git a/stories/molecules/header.css b/stories/molecules/header.css index d9a70528..5efd46c2 100644 --- a/stories/molecules/header.css +++ b/stories/molecules/header.css @@ -1,10 +1,10 @@ .storybook-header { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding: 15px 20px; display: flex; - align-items: center; justify-content: space-between; + align-items: center; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 15px 20px; + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } .storybook-header svg { @@ -13,12 +13,12 @@ } .storybook-header h1 { + display: inline-block; + vertical-align: top; + margin: 6px 0 6px 10px; font-weight: 700; font-size: 20px; line-height: 1; - margin: 6px 0 6px 10px; - display: inline-block; - vertical-align: top; } .storybook-header button + button { @@ -26,7 +26,7 @@ } .storybook-header .welcome { + margin-right: 10px; color: #333; font-size: 14px; - margin-right: 10px; } diff --git a/stories/pages/Page.stories.tsx b/stories/pages/Page.stories.tsx index 469d4845..dc6ac1fe 100644 --- a/stories/pages/Page.stories.tsx +++ b/stories/pages/Page.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { within, userEvent } from '@storybook/test'; +import type { Meta, StoryObj } from '@storybook/react-vite'; +import { within, userEvent } from 'storybook/test'; import { Page } from './Page'; diff --git a/stories/pages/page.css b/stories/pages/page.css index 098dad11..77c81d2d 100644 --- a/stories/pages/page.css +++ b/stories/pages/page.css @@ -1,20 +1,20 @@ .storybook-page { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 48px 20px; margin: 0 auto; + padding: 48px 20px; max-width: 600px; color: #333; + font-size: 14px; + line-height: 24px; + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } .storybook-page h2 { + display: inline-block; + vertical-align: top; + margin: 0 0 4px; font-weight: 700; font-size: 32px; line-height: 1; - margin: 0 0 4px; - display: inline-block; - vertical-align: top; } .storybook-page p { @@ -22,13 +22,12 @@ } .storybook-page a { - text-decoration: none; - color: #1ea7fd; + color: inherit; } .storybook-page ul { - padding-left: 30px; margin: 1em 0; + padding-left: 30px; } .storybook-page li { @@ -37,31 +36,31 @@ .storybook-page .tip { display: inline-block; + vertical-align: top; + margin-right: 10px; border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; background: #e7fdd8; - color: #66bf3c; padding: 4px 12px; - margin-right: 10px; - vertical-align: top; + color: #357a14; + font-weight: 700; + font-size: 11px; + line-height: 12px; } .storybook-page .tip-wrapper { - font-size: 13px; - line-height: 20px; margin-top: 40px; margin-bottom: 40px; + font-size: 13px; + line-height: 20px; } .storybook-page .tip-wrapper svg { display: inline-block; - height: 12px; - width: 12px; - margin-right: 4px; vertical-align: top; margin-top: 3px; + margin-right: 4px; + width: 12px; + height: 12px; } .storybook-page .tip-wrapper svg path { diff --git a/yarn.lock b/yarn.lock index 9d3fb0a4..b985ba5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1633,9 +1633,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/aix-ppc64@npm:0.24.0" +"@esbuild/aix-ppc64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/aix-ppc64@npm:0.25.3" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -1647,16 +1647,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm64@npm:0.18.20" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm64@npm:0.24.0" +"@esbuild/android-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-arm64@npm:0.25.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1668,16 +1661,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm@npm:0.18.20" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm@npm:0.24.0" +"@esbuild/android-arm@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-arm@npm:0.25.3" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -1689,16 +1675,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-x64@npm:0.18.20" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-x64@npm:0.24.0" +"@esbuild/android-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-x64@npm:0.25.3" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -1710,16 +1689,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-arm64@npm:0.18.20" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-arm64@npm:0.24.0" +"@esbuild/darwin-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/darwin-arm64@npm:0.25.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -1731,16 +1703,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-x64@npm:0.18.20" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-x64@npm:0.24.0" +"@esbuild/darwin-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/darwin-x64@npm:0.25.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -1752,16 +1717,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-arm64@npm:0.18.20" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-arm64@npm:0.24.0" +"@esbuild/freebsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/freebsd-arm64@npm:0.25.3" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -1773,16 +1731,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-x64@npm:0.18.20" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-x64@npm:0.24.0" +"@esbuild/freebsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/freebsd-x64@npm:0.25.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -1794,16 +1745,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm64@npm:0.18.20" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm64@npm:0.24.0" +"@esbuild/linux-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-arm64@npm:0.25.3" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -1815,16 +1759,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm@npm:0.18.20" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm@npm:0.24.0" +"@esbuild/linux-arm@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-arm@npm:0.25.3" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -1836,16 +1773,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ia32@npm:0.18.20" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ia32@npm:0.24.0" +"@esbuild/linux-ia32@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-ia32@npm:0.25.3" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -1857,16 +1787,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-loong64@npm:0.18.20" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-loong64@npm:0.24.0" +"@esbuild/linux-loong64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-loong64@npm:0.25.3" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -1878,16 +1801,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-mips64el@npm:0.18.20" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-mips64el@npm:0.24.0" +"@esbuild/linux-mips64el@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-mips64el@npm:0.25.3" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -1899,16 +1815,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ppc64@npm:0.18.20" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ppc64@npm:0.24.0" +"@esbuild/linux-ppc64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-ppc64@npm:0.25.3" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -1920,16 +1829,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-riscv64@npm:0.18.20" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-riscv64@npm:0.24.0" +"@esbuild/linux-riscv64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-riscv64@npm:0.25.3" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -1941,16 +1843,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-s390x@npm:0.18.20" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-s390x@npm:0.24.0" +"@esbuild/linux-s390x@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-s390x@npm:0.25.3" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -1962,17 +1857,17 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-x64@npm:0.18.20" +"@esbuild/linux-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-x64@npm:0.25.3" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-x64@npm:0.24.0" - conditions: os=linux & cpu=x64 +"@esbuild/netbsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/netbsd-arm64@npm:0.25.3" + conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -1983,23 +1878,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/netbsd-x64@npm:0.18.20" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/netbsd-x64@npm:0.24.0" +"@esbuild/netbsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/netbsd-x64@npm:0.25.3" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-arm64@npm:0.24.0" +"@esbuild/openbsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/openbsd-arm64@npm:0.25.3" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -2011,16 +1899,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/openbsd-x64@npm:0.18.20" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-x64@npm:0.24.0" +"@esbuild/openbsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/openbsd-x64@npm:0.25.3" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -2032,16 +1913,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/sunos-x64@npm:0.18.20" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/sunos-x64@npm:0.24.0" +"@esbuild/sunos-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/sunos-x64@npm:0.25.3" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -2053,16 +1927,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-arm64@npm:0.18.20" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-arm64@npm:0.24.0" +"@esbuild/win32-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-arm64@npm:0.25.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -2074,16 +1941,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-ia32@npm:0.18.20" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-ia32@npm:0.24.0" +"@esbuild/win32-ia32@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-ia32@npm:0.25.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -2095,16 +1955,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-x64@npm:0.18.20" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-x64@npm:0.24.0" +"@esbuild/win32-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-x64@npm:0.25.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2411,21 +2264,20 @@ __metadata: languageName: node linkType: hard -"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0": - version: 0.3.0 - resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0" +"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.5.0": + version: 0.5.0 + resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.5.0" dependencies: - glob: "npm:^7.2.0" - glob-promise: "npm:^4.2.0" + glob: "npm:^10.0.0" magic-string: "npm:^0.27.0" react-docgen-typescript: "npm:^2.2.2" peerDependencies: typescript: ">= 4.3.x" - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/9237499394b1f5f1320c9a489dbf5db2ba4b1d68081bf767a08895b70d0d0830adb9f0f1e2c5c94202e5bee63fe031ea2b91870a6bc806ed5e370be6b06df2e8 + checksum: 10/1dcb03f2df1723799a7a9c75ac8360990f75c44fd2425d2d52a9e21882fc3054d372892ab1cad0927864d8a934ad5b347f4ae00b01785649e2a8f1c4b861aa67 languageName: node linkType: hard @@ -2748,6 +2600,146 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm64@npm:4.40.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.3": version: 4.1.4 resolution: "@sideway/address@npm:4.1.4" @@ -2796,44 +2788,15 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-actions@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-actions@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - "@types/uuid": "npm:^9.0.1" - dequal: "npm:^2.0.2" - polished: "npm:^4.2.2" - uuid: "npm:^9.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/6a52727982f378bd25efd03c3b119cce371e5a6a0e8cacdd4c1cdb0af24b5a706ee1bedb47767d3ecf093349ed46f8c27f17bf698d757e52f30160aa27442e06 - languageName: node - linkType: hard - -"@storybook/addon-backgrounds@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-backgrounds@npm:8.5.0-alpha.11" +"@storybook/addon-a11y@npm:next": + version: 9.0.0-beta.1 + resolution: "@storybook/addon-a11y@npm:9.0.0-beta.1" dependencies: "@storybook/global": "npm:^5.0.0" - memoizerific: "npm:^1.11.3" - ts-dedent: "npm:^2.0.0" + axe-core: "npm:^4.2.0" peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/461a009a3cb71b1ee16081e8935082841c92b65cf1b7999b2617778da9c8785f767626ae536adf3bc08af6bca4b5861f01863b0f5a1ceea950cc51ef4d78b4fd - languageName: node - linkType: hard - -"@storybook/addon-controls@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-controls@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - dequal: "npm:^2.0.2" - ts-dedent: "npm:^2.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/68396addd312ee14b0bef6a03a215a08f79bd0f7e895173e0d5207488e0a11f8ca2c0a385517258f8f584d7b5ee31e0e148138f589d47354c368174ca0115597 + storybook: ^9.0.0-beta.1 + checksum: 10/718bec7f599974334e0107d70b08705a61721b6f727877eee55d06010db49026c086b66ed2d191c1f51f14403b8795f3d8fa56aa276b082a097c17b57a879f32 languageName: node linkType: hard @@ -2853,197 +2816,45 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-docs@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-docs@npm:8.5.0-alpha.11" +"@storybook/addon-docs@npm:next": + version: 9.0.0-beta.1 + resolution: "@storybook/addon-docs@npm:9.0.0-beta.1" dependencies: "@mdx-js/react": "npm:^3.0.0" - "@storybook/blocks": "npm:8.5.0-alpha.11" - "@storybook/csf-plugin": "npm:8.5.0-alpha.11" - "@storybook/react-dom-shim": "npm:8.5.0-alpha.11" - react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0" - react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0" - ts-dedent: "npm:^2.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/f0649e936801ec858d89ef8fcc7ccc26bbda739de0320aa273a39abb479fd841904603f099aa1e967f61a88a9be827b02a5add5674982fb99787e499bec2acf4 - languageName: node - linkType: hard - -"@storybook/addon-essentials@npm:next": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-essentials@npm:8.5.0-alpha.11" - dependencies: - "@storybook/addon-actions": "npm:8.5.0-alpha.11" - "@storybook/addon-backgrounds": "npm:8.5.0-alpha.11" - "@storybook/addon-controls": "npm:8.5.0-alpha.11" - "@storybook/addon-docs": "npm:8.5.0-alpha.11" - "@storybook/addon-highlight": "npm:8.5.0-alpha.11" - "@storybook/addon-measure": "npm:8.5.0-alpha.11" - "@storybook/addon-outline": "npm:8.5.0-alpha.11" - "@storybook/addon-toolbars": "npm:8.5.0-alpha.11" - "@storybook/addon-viewport": "npm:8.5.0-alpha.11" - ts-dedent: "npm:^2.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/46e173d2e8f644fe8e736e735b1f06a1edcd9cf8441162d5cae63c29ca686632c84ba8bfa0d0872cdd056c6888c767c5b0f6e2d3be5762a1c53adc975e170585 - languageName: node - linkType: hard - -"@storybook/addon-highlight@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-highlight@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/bf64b12187f35868635c35fd8963643e6acde5abb7cc8bd9ccbe7fdf368dd1499182d4ebd6504d0dbdd7a83bd35929d10b7e8478925e4eb3518be5d3ccf355e6 - languageName: node - linkType: hard - -"@storybook/addon-interactions@npm:next": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-interactions@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.5.0-alpha.11" - "@storybook/test": "npm:8.5.0-alpha.11" - polished: "npm:^4.2.2" - ts-dedent: "npm:^2.2.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/7ad3a53d2a4e93bfde620229ca98c6e8b54143ff61b8b430577d03bb1a51bcbee6ab273871d6585b0754604ea9bf8cf43d7cb9c09621b3fdae593d5953cfb766 - languageName: node - linkType: hard - -"@storybook/addon-measure@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-measure@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - tiny-invariant: "npm:^1.3.1" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/13dc3563e6c902009aba8d80dc0169fe3a4a91774bcc035d50af508711e53cff23291c97e86acb47e93e995727ac830dd960bf6a8d856feadc4b0493e3a25754 - languageName: node - linkType: hard - -"@storybook/addon-outline@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-outline@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - ts-dedent: "npm:^2.0.0" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/3d0948539d5925c7ede9b7f30fd54320fd12d7c5ebd5a405b4b80a99d814b556244a0954330d5609f2dbc3c28b84209dff5ea8eddb56f3ea950d61e050f5a1f3 - languageName: node - linkType: hard - -"@storybook/addon-toolbars@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-toolbars@npm:8.5.0-alpha.11" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/58b81381a99eb9996eedda18082b3206c7871ade9a63527f59dbf666164b8efa3125fd06c421595fe226ed7b85618dd2e071260682d94e6d230537cb778c209a - languageName: node - linkType: hard - -"@storybook/addon-viewport@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/addon-viewport@npm:8.5.0-alpha.11" - dependencies: - memoizerific: "npm:^1.11.3" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/883a0018785fa4a8df7b63dc929d36338cf3e85c67559ebb5a838d5454c23ab749d8f4b8b353b0e9441bc1149a9daf84eae648d5fcab2aa5a737ec86aef54e8f - languageName: node - linkType: hard - -"@storybook/blocks@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/blocks@npm:8.5.0-alpha.11" - dependencies: - "@storybook/csf": "npm:^0.1.11" + "@storybook/csf-plugin": "npm:9.0.0-beta.1" "@storybook/icons": "npm:^1.2.12" + "@storybook/react-dom-shim": "npm:9.0.0-beta.1" + react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.0-alpha.11 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - checksum: 10/a5edcc8afe26ab4a4982359d7b49ee0816b4bb05ef0f974d8b5122228e690c2b97b0ce819e1eaeced75a0f00066986bca594f88e8f3980f5977c80e28db05a54 + storybook: ^9.0.0-beta.1 + checksum: 10/e3b14d1f15a271628a854fb779ee59701dff11103944b1b5d35148ac0410a58a382ffdd721c1c598cfcf7f8cb41090052875fa155901001fb60c0f1f32b8cb8b languageName: node linkType: hard -"@storybook/builder-vite@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/builder-vite@npm:8.5.0-alpha.11" +"@storybook/builder-vite@npm:9.0.0-beta.1": + version: 9.0.0-beta.1 + resolution: "@storybook/builder-vite@npm:9.0.0-beta.1" dependencies: - "@storybook/csf-plugin": "npm:8.5.0-alpha.11" + "@storybook/csf-plugin": "npm:9.0.0-beta.1" browser-assert: "npm:^1.2.1" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.5.0-alpha.11 - vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - checksum: 10/4b0230ff8eafcf09e1aa085a2b21796d60403aec2fb2bcda3d0c574f0e0f7f926c1426920d9877a103e0a28e3d9e5fc52a40e92573b4eb63cf606b1b3c2e9457 - languageName: node - linkType: hard - -"@storybook/components@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/components@npm:8.5.0-alpha.11" - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/0777c99e1caaaadb6ec5838a0a876b546c1f56887cc084f2541a4a81ef5fa7169b799891f4a5dab97e168d2e54974f2ebe0cfecc12297e34dedeb9603c588acd + storybook: ^9.0.0-beta.1 + vite: ^5.0.0 || ^6.0.0 + checksum: 10/07fda64f5f40810130ccdec580a398a85a77a771bccfd1179b78de22a2661339f962f064b2fa0ea6c6c67a37996c881a323edb0ff0decdd747598f22fe674a9c languageName: node linkType: hard -"@storybook/core@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/core@npm:8.5.0-alpha.11" - dependencies: - "@storybook/csf": "npm:^0.1.11" - better-opn: "npm:^3.0.2" - browser-assert: "npm:^1.2.1" - esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0" - esbuild-register: "npm:^3.5.0" - jsdoc-type-pratt-parser: "npm:^4.0.0" - process: "npm:^0.11.10" - recast: "npm:^0.23.5" - semver: "npm:^7.6.2" - util: "npm:^0.12.5" - ws: "npm:^8.2.3" - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - checksum: 10/f3c22f53e957e45a943c8d20e6f619d6658a749ac9f22f217d47c8a7cc7def6cba14b315d36cf60963c53a219bb53ff0e26a9134c20e4820be1a284c400eb2bf - languageName: node - linkType: hard - -"@storybook/csf-plugin@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/csf-plugin@npm:8.5.0-alpha.11" +"@storybook/csf-plugin@npm:9.0.0-beta.1": + version: 9.0.0-beta.1 + resolution: "@storybook/csf-plugin@npm:9.0.0-beta.1" dependencies: unplugin: "npm:^1.3.1" peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/9c18c2b687458a37fbddf5379066cedf1c318b37e3167fbccb5aaf65e1f31aa9a9bcac18bc3ec0a731d4b74c065fe8edca917d1cd118387678273041b51ba694 - languageName: node - linkType: hard - -"@storybook/csf@npm:^0.1.11": - version: 0.1.11 - resolution: "@storybook/csf@npm:0.1.11" - dependencies: - type-fest: "npm:^2.19.0" - checksum: 10/f6eeefe3b92ab206676587da9e22a775da026c055999681580d2ca23c98185736f965adc79039a0ae97ea625f0fbc7915cd4559e5db24229a4805784d0b78584 + storybook: ^9.0.0-beta.1 + checksum: 10/8633ec40cb5947bff7657990556ea610415baef22945eae32c747f896ee4e3c8a0019a4b3c826fb7fec96e2e1ace6fe4964e477ce55b56455184fd4fc3031344 languageName: node linkType: hard @@ -3055,100 +2866,63 @@ __metadata: linkType: hard "@storybook/icons@npm:^1.2.12": - version: 1.2.12 - resolution: "@storybook/icons@npm:1.2.12" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/5df56f0856764ed7e4bb24ef7a08a8a9c93f8eedcb16dac062f1dfd3bd1fe6cb4a0aa5a0794083d95e31c04960d126a4d2028cfb4c53681bf05513bb38eae9d2 - languageName: node - linkType: hard - -"@storybook/instrumenter@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/instrumenter@npm:8.5.0-alpha.11" - dependencies: - "@storybook/global": "npm:^5.0.0" - "@vitest/utils": "npm:^2.1.1" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/6bcd3d5210a9f30262f99681e9ca019361717cac4932dc6c21f6864309206e2b1c79be5ce343f6e6cf7f81c487fc41bb45fee51f9beeabd84be4a84a27c1c3bc - languageName: node - linkType: hard - -"@storybook/manager-api@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/manager-api@npm:8.5.0-alpha.11" - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/106bb5d4f42645f4428d1fe68755bf5796df1c5eb63723de25142c83d32809e45bcddcd5ec1875ac2c1df39786c05600574245f7a46e5be1367f4e0303a1ff58 - languageName: node - linkType: hard - -"@storybook/preview-api@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/preview-api@npm:8.5.0-alpha.11" + version: 1.4.0 + resolution: "@storybook/icons@npm:1.4.0" peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/838cac3c49572dcee01922abd5bd45489486b766a993b64b6c9a75be6890728a1d898b477f05285cae881d962edd8c11a2474abc9a2f311543b02437f628f738 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: 10/513d36188bb84f1f64dd982b6bd577de4c3d7bc2aa9d318a2acf8c654d16994bac0b669787a4ced6720e471251bcb0ec68b8d8dc2cc7245d11102bd617243700 languageName: node linkType: hard -"@storybook/react-dom-shim@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/react-dom-shim@npm:8.5.0-alpha.11" +"@storybook/react-dom-shim@npm:9.0.0-beta.1": + version: 9.0.0-beta.1 + resolution: "@storybook/react-dom-shim@npm:9.0.0-beta.1" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.0-alpha.11 - checksum: 10/cf21f2c962680207092793c292b42cc80fbadc956e16ca22769d83b0ce6d0797d2d0c8f269e871c5683cb3b93d1a6d21cb900f2c011a6622dd1788b422b4f012 + storybook: ^9.0.0-beta.1 + checksum: 10/9aed1061d4b893b2ce2fd3df51ba9a5dabf6bbc8660ad72f66932601e81c226d4880c0f713be085056342634350edc7a44dcb6b83c54ea1d1eadb50a588af216 languageName: node linkType: hard "@storybook/react-vite@npm:next": - version: 8.5.0-alpha.11 - resolution: "@storybook/react-vite@npm:8.5.0-alpha.11" + version: 9.0.0-beta.1 + resolution: "@storybook/react-vite@npm:9.0.0-beta.1" dependencies: - "@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.3.0" + "@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.5.0" "@rollup/pluginutils": "npm:^5.0.2" - "@storybook/builder-vite": "npm:8.5.0-alpha.11" - "@storybook/react": "npm:8.5.0-alpha.11" + "@storybook/builder-vite": "npm:9.0.0-beta.1" + "@storybook/react": "npm:9.0.0-beta.1" find-up: "npm:^5.0.0" magic-string: "npm:^0.30.0" - react-docgen: "npm:^7.0.0" + react-docgen: "npm:^7.1.1" resolve: "npm:^1.22.8" tsconfig-paths: "npm:^4.2.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.0-alpha.11 - vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - checksum: 10/cca4bd748e9b0de0030198d0d34a82a7aab7774f126b0791a9afbfafc3945bccd9cf8ec0293c7a69b6289b06685e9e48b1e01e594b7c459edfbe7ce37273c80a + storybook: ^9.0.0-beta.1 + vite: ^5.0.0 || ^6.0.0 + checksum: 10/a1de4a36b648e0e9cfe643298bb96d1908a0e51e577b2c7a5df2f45a804eb1f2e6662876057aabe64aae29f1e2317b734eb696d299675d6f0c33f57be4e0d1d6 languageName: node linkType: hard -"@storybook/react@npm:8.5.0-alpha.11, @storybook/react@npm:next": - version: 8.5.0-alpha.11 - resolution: "@storybook/react@npm:8.5.0-alpha.11" +"@storybook/react@npm:9.0.0-beta.1": + version: 9.0.0-beta.1 + resolution: "@storybook/react@npm:9.0.0-beta.1" dependencies: - "@storybook/components": "npm:8.5.0-alpha.11" "@storybook/global": "npm:^5.0.0" - "@storybook/manager-api": "npm:8.5.0-alpha.11" - "@storybook/preview-api": "npm:8.5.0-alpha.11" - "@storybook/react-dom-shim": "npm:8.5.0-alpha.11" - "@storybook/theming": "npm:8.5.0-alpha.11" + "@storybook/react-dom-shim": "npm:9.0.0-beta.1" peerDependencies: - "@storybook/test": 8.5.0-alpha.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.0-alpha.11 - typescript: ">= 4.2.x" + storybook: ^9.0.0-beta.1 + typescript: ">= 4.9.x" peerDependenciesMeta: - "@storybook/test": - optional: true typescript: optional: true - checksum: 10/e864b230b32da3ab47c1ce142ce451523a796add737256091d8a8af49f32318433f6d5e82e833ae60780f0ef17970ba1410e9b9d83ea0f2be22b9363ce8cf70a + checksum: 10/05b245b6106bab541fef846d9764e3a006c08a52f45f294b0ad0c9467401ebc2bc079904ddebfa1049b083999830c817d6c0e27bde0a289994c198eeee6fa506 languageName: node linkType: hard @@ -3166,13 +2940,10 @@ __metadata: "@babel/template": "npm:^7.22.5" "@babel/types": "npm:^7.22.5" "@jest/types": "npm:^29.6.3" + "@storybook/addon-a11y": "npm:next" "@storybook/addon-coverage": "npm:^1.0.0" - "@storybook/addon-essentials": "npm:next" - "@storybook/addon-interactions": "npm:next" - "@storybook/csf": "npm:^0.1.11" - "@storybook/react": "npm:next" + "@storybook/addon-docs": "npm:next" "@storybook/react-vite": "npm:next" - "@storybook/test": "npm:next" "@swc/core": "npm:^1.5.22" "@swc/jest": "npm:^0.2.23" "@types/jest": "npm:^29.0.0" @@ -3180,6 +2951,7 @@ __metadata: "@types/node-fetch": "npm:^2.6.11" "@vitejs/plugin-react": "npm:^4.0.3" auto: "npm:^11.1.6" + axe-playwright: "npm:^2.1.0" babel-jest: "npm:^29.0.0" babel-loader: "npm:^8.1.0" babel-plugin-istanbul: "npm:^6.1.1" @@ -3213,7 +2985,7 @@ __metadata: ts-jest: "npm:^29.0.0" tsup: "npm:^6.5.0" typescript: "npm:~4.9.4" - vite: "npm:^4.4.5" + vite: "npm:^6.3.2" wait-on: "npm:^7.2.0" peerDependencies: storybook: ^0.0.0-0 || ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 || ^9.0.0-0 @@ -3222,33 +2994,6 @@ __metadata: languageName: unknown linkType: soft -"@storybook/test@npm:8.5.0-alpha.11, @storybook/test@npm:next": - version: 8.5.0-alpha.11 - resolution: "@storybook/test@npm:8.5.0-alpha.11" - dependencies: - "@storybook/csf": "npm:^0.1.11" - "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.5.0-alpha.11" - "@testing-library/dom": "npm:10.4.0" - "@testing-library/jest-dom": "npm:6.5.0" - "@testing-library/user-event": "npm:14.5.2" - "@vitest/expect": "npm:2.0.5" - "@vitest/spy": "npm:2.0.5" - peerDependencies: - storybook: ^8.5.0-alpha.11 - checksum: 10/85cd9eccc6875140f8e3d171a468c287f2a559536d2deeadf4cc07b80b497af3fcf84693ff76803953fd0546c80f55f0ea3447b4b95448374591e6c1409b0af7 - languageName: node - linkType: hard - -"@storybook/theming@npm:8.5.0-alpha.11": - version: 8.5.0-alpha.11 - resolution: "@storybook/theming@npm:8.5.0-alpha.11" - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/afd0fd5c5c45847be3c6b5272fec11403685ddfc9867fa7388d779cf2fdf75a52fb90d6c4913c4019718871f364fb83c14e872e8297500216f82d16d64a3c26c - languageName: node - linkType: hard - "@swc/core-darwin-arm64@npm:1.8.0": version: 1.8.0 resolution: "@swc/core-darwin-arm64@npm:1.8.0" @@ -3409,9 +3154,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:6.5.0": - version: 6.5.0 - resolution: "@testing-library/jest-dom@npm:6.5.0" +"@testing-library/jest-dom@npm:^6.6.3": + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" dependencies: "@adobe/css-tools": "npm:^4.4.0" aria-query: "npm:^5.0.0" @@ -3420,16 +3165,16 @@ __metadata: dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.21" redent: "npm:^3.0.0" - checksum: 10/3d2080888af5fd7306f57448beb5a23f55d965e265b5e53394fffc112dfb0678d616a5274ff0200c46c7618f293520f86fc8562eecd8bdbc0dbb3294d63ec431 + checksum: 10/1f3427e45870eab9dcc59d6504b780d4a595062fe1687762ae6e67d06a70bf439b40ab64cf58cbace6293a99e3764d4647fdc8300a633b721764f5ce39dade18 languageName: node linkType: hard -"@testing-library/user-event@npm:14.5.2": - version: 14.5.2 - resolution: "@testing-library/user-event@npm:14.5.2" +"@testing-library/user-event@npm:^14.6.1": + version: 14.6.1 + resolution: "@testing-library/user-event@npm:14.6.1" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 10/49821459d81c6bc435d97128d6386ca24f1e4b3ba8e46cb5a96fe3643efa6e002d88c1b02b7f2ec58da593e805c59b78d7fdf0db565c1f02ba782f63ee984040 + checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1 languageName: node linkType: hard @@ -3530,6 +3275,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:1.0.7": + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: 10/419c845ece767ad4b21171e6e5b63dabb2eb46b9c0d97361edcd9cabbf6a95fcadb91d89b5fa098d1336fa0b8fceaea82fca97a2ef3971f5c86e53031e157b21 + languageName: node + linkType: hard + "@types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" @@ -3537,16 +3289,6 @@ __metadata: languageName: node linkType: hard -"@types/glob@npm:^7.1.3": - version: 7.2.0 - resolution: "@types/glob@npm:7.2.0" - dependencies: - "@types/minimatch": "npm:*" - "@types/node": "npm:*" - checksum: 10/6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 - languageName: node - linkType: hard - "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -3598,17 +3340,17 @@ __metadata: languageName: node linkType: hard -"@types/mdx@npm:^2.0.0": - version: 2.0.10 - resolution: "@types/mdx@npm:2.0.10" - checksum: 10/9e4ac676d191142e5cd33bb5f07f57f1ea0138ce943ad971df8a47be907def83daad0c351825fdd59fe94fc94a58579fb329185b8def8ce5478d1fb378ec7ac2 +"@types/junit-report-builder@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/junit-report-builder@npm:3.0.2" + checksum: 10/7fead0b771f95cd8e607223ace2f43cc881b3e7944db405f903590b56379d14132032b7d89c9afa7dff266b95f516a476a39ad40f9200bfb61fc8ed7f6b1bff6 languageName: node linkType: hard -"@types/minimatch@npm:*": - version: 5.1.2 - resolution: "@types/minimatch@npm:5.1.2" - checksum: 10/94db5060d20df2b80d77b74dd384df3115f01889b5b6c40fa2dfa27cfc03a68fb0ff7c1f2a0366070263eb2e9d6bfd8c87111d4bc3ae93c3f291297c1bf56c85 +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 10/b73ed5f08114879b9590dc6a9ee8b648643c57c708583cd24b2bc3cc8961361fc63139ac7e9291e7b3b6e6b45707749d01d6f9727ddec5533df75dc3b90871a4 languageName: node linkType: hard @@ -3722,65 +3464,44 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/expect@npm:2.0.5" - dependencies: - "@vitest/spy": "npm:2.0.5" - "@vitest/utils": "npm:2.0.5" - chai: "npm:^5.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10/ca9a218f50254b2259fd16166b2d8c9ccc8ee2cc068905e6b3d6281da10967b1590cc7d34b5fa9d429297f97e740450233745583b4cc12272ff11705faf70a37 - languageName: node - linkType: hard - -"@vitest/pretty-format@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/pretty-format@npm:2.0.5" - dependencies: - tinyrainbow: "npm:^1.2.0" - checksum: 10/70bf452dd0b8525e658795125b3f11110bd6baadfaa38c5bb91ca763bded35ec6dc80e27964ad4e91b91be6544d35e18ea7748c1997693988f975a7283c3e9a0 - languageName: node - linkType: hard - -"@vitest/pretty-format@npm:2.1.4": - version: 2.1.4 - resolution: "@vitest/pretty-format@npm:2.1.4" +"@vitest/expect@npm:3.0.9": + version: 3.0.9 + resolution: "@vitest/expect@npm:3.0.9" dependencies: - tinyrainbow: "npm:^1.2.0" - checksum: 10/434e6a7903f72a3796f26516ad728aca92724909e18fd3f2cd4b9b8b0ae2cc7b4cd86e92ab9f2ac7bc005c7a7ef0bcb9d768c0264b4b0625f1f0748cc615f1f6 + "@vitest/spy": "npm:3.0.9" + "@vitest/utils": "npm:3.0.9" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10/09fc02ae3a639d5db23705a393ef571001f7f1006f7527529ec7807699b739788d5b54b71cb917c56379874b006f2de49933585694927b23c0d50787f96b9e94 languageName: node linkType: hard -"@vitest/spy@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/spy@npm:2.0.5" +"@vitest/pretty-format@npm:3.0.9": + version: 3.0.9 + resolution: "@vitest/pretty-format@npm:3.0.9" dependencies: - tinyspy: "npm:^3.0.0" - checksum: 10/ed19f4c3bb4d3853241e8070979615138e24403ce4c137fa48c903b3af2c8b3ada2cc26aca9c1aa323bb314a457a8130a29acbb18dafd4e42737deefb2abf1ca + tinyrainbow: "npm:^2.0.0" + checksum: 10/cfcdda2c72cf16a5e76ad2c9b014a4e36fea3988389613497cad5a2491ebc380ded4397afc95c32a2bd2734b0386996df76f6c5cbfc6be561262b8d112fb7a27 languageName: node linkType: hard -"@vitest/utils@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/utils@npm:2.0.5" +"@vitest/spy@npm:3.0.9": + version: 3.0.9 + resolution: "@vitest/spy@npm:3.0.9" dependencies: - "@vitest/pretty-format": "npm:2.0.5" - estree-walker: "npm:^3.0.3" - loupe: "npm:^3.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10/d631d56d29c33bc8de631166b2b6691c470187a345469dfef7048befe6027e1c6ff9552f2ee11c8a247522c325c4a64bfcc73f8f0f0c525da39cb9f190f119f8 + tinyspy: "npm:^3.0.2" + checksum: 10/967b403293c9325292be4843753bf8ae516ec158df2372a14bec98c9bfb233fa6bbf76cb319cf1a9ea1b5ab795e3abff68ca66fa7523045562d7449a95ed8bf9 languageName: node linkType: hard -"@vitest/utils@npm:^2.1.1": - version: 2.1.4 - resolution: "@vitest/utils@npm:2.1.4" +"@vitest/utils@npm:3.0.9": + version: 3.0.9 + resolution: "@vitest/utils@npm:3.0.9" dependencies: - "@vitest/pretty-format": "npm:2.1.4" - loupe: "npm:^3.1.2" - tinyrainbow: "npm:^1.2.0" - checksum: 10/aaaf5310943abca0f0080d9638e67838f7e519d5670ec32e61184915efdfa5ec61d9b495cad6cb7dc492e8caeed14593e78dda77c8ea59c1671a231661f57142 + "@vitest/pretty-format": "npm:3.0.9" + loupe: "npm:^3.1.3" + tinyrainbow: "npm:^2.0.0" + checksum: 10/c77e2a4a5c62dabc57c0d27536428e6b4f9a7998b59161deb82cf797e1d6cb61a7531bef19f079c4bdca7b48fd656b48e4d1bcfb4a5bdf3c177931670a287163 languageName: node linkType: hard @@ -4092,15 +3813,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab - languageName: node - linkType: hard - "await-to-js@npm:^3.0.0": version: 3.0.0 resolution: "await-to-js@npm:3.0.0" @@ -4108,6 +3820,39 @@ __metadata: languageName: node linkType: hard +"axe-core@npm:^4.10.1, axe-core@npm:^4.2.0": + version: 4.10.3 + resolution: "axe-core@npm:4.10.3" + checksum: 10/9ff51ad0fd0fdec5c0247ea74e8ace5990b54c7f01f8fa3e5cd8ba98b0db24d8ebd7bab4a9bd4d75c28c4edcd1eac455b44c8c6c258c6a98f3d2f88bc60af4cc + languageName: node + linkType: hard + +"axe-html-reporter@npm:2.2.11": + version: 2.2.11 + resolution: "axe-html-reporter@npm:2.2.11" + dependencies: + mustache: "npm:^4.0.1" + peerDependencies: + axe-core: ">=3" + checksum: 10/489a904c62fe5c74db9490773a624e8573906b54a9c8264b831ee50b648f623ba292a011598d257bd6b8dc35eede21998fc25c799bd99eb9ca8ecf2d05ef92a1 + languageName: node + linkType: hard + +"axe-playwright@npm:^2.1.0": + version: 2.1.0 + resolution: "axe-playwright@npm:2.1.0" + dependencies: + "@types/junit-report-builder": "npm:^3.0.2" + axe-core: "npm:^4.10.1" + axe-html-reporter: "npm:2.2.11" + junit-report-builder: "npm:^5.1.1" + picocolors: "npm:^1.1.1" + peerDependencies: + playwright: ">1.0.0" + checksum: 10/d478c206bdd950257fafc872a6da3d9e73ca6a235ecea504bfde9744ca9265cc7abea050301c7cb611a3e79d61e14d50a047595c6e6cc13353e6c1c835afe922 + languageName: node + linkType: hard + "axios@npm:^1.6.1": version: 1.6.2 resolution: "axios@npm:1.6.2" @@ -4407,23 +4152,10 @@ __metadata: resolution: "caching-transform@npm:4.0.0" dependencies: hasha: "npm:^5.0.0" - make-dir: "npm:^3.0.0" - package-hash: "npm:^4.0.0" - write-file-atomic: "npm:^3.0.0" - checksum: 10/7e7ca628511ab18c86eea1231834d2591de29a13ae771a7d9ab85be8c6e53e45c5a5b0d0d95d4a3274fc4f26c16956a98162e40c191c131204b5d5aa949660b5 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 + make-dir: "npm:^3.0.0" + package-hash: "npm:^4.0.0" + write-file-atomic: "npm:^3.0.0" + checksum: 10/7e7ca628511ab18c86eea1231834d2591de29a13ae771a7d9ab85be8c6e53e45c5a5b0d0d95d4a3274fc4f26c16956a98162e40c191c131204b5d5aa949660b5 languageName: node linkType: hard @@ -4464,16 +4196,16 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.1": - version: 5.1.2 - resolution: "chai@npm:5.1.2" +"chai@npm:^5.2.0": + version: 5.2.0 + resolution: "chai@npm:5.2.0" dependencies: assertion-error: "npm:^2.0.1" check-error: "npm:^2.1.1" deep-eql: "npm:^5.0.1" loupe: "npm:^3.1.0" pathval: "npm:^2.0.0" - checksum: 10/e8c2bbc83cb5a2f87130d93056d4cfbbe04106e12aa798b504816dbe3fa538a9f68541b472e56cbf0f54558b501d7e31867d74b8218abcd5a8cc8ba536fba46c + checksum: 10/2ce03671c159c6a567bf1912756daabdbb7c075f3c0078f1b59d61da8d276936367ee696dfe093b49e1479d9ba93a6074c8e55d49791dddd8061728cdcad249e languageName: node linkType: hard @@ -4979,17 +4711,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10/abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae - languageName: node - linkType: hard - "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -5027,7 +4748,7 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.2, dequal@npm:^2.0.3": +"dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" checksum: 10/6ff05a7561f33603df87c45e389c9ac0a95e3c056be3da1a0c4702149e3a7f6fe5ffbb294478687ba51a9e95f3a60e8b6b9005993acd79c292c7d15f71964b6b @@ -5275,22 +4996,6 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 - languageName: node - linkType: hard - "es6-error@npm:^4.0.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" @@ -5386,34 +5091,35 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": - version: 0.24.0 - resolution: "esbuild@npm:0.24.0" - dependencies: - "@esbuild/aix-ppc64": "npm:0.24.0" - "@esbuild/android-arm": "npm:0.24.0" - "@esbuild/android-arm64": "npm:0.24.0" - "@esbuild/android-x64": "npm:0.24.0" - "@esbuild/darwin-arm64": "npm:0.24.0" - "@esbuild/darwin-x64": "npm:0.24.0" - "@esbuild/freebsd-arm64": "npm:0.24.0" - "@esbuild/freebsd-x64": "npm:0.24.0" - "@esbuild/linux-arm": "npm:0.24.0" - "@esbuild/linux-arm64": "npm:0.24.0" - "@esbuild/linux-ia32": "npm:0.24.0" - "@esbuild/linux-loong64": "npm:0.24.0" - "@esbuild/linux-mips64el": "npm:0.24.0" - "@esbuild/linux-ppc64": "npm:0.24.0" - "@esbuild/linux-riscv64": "npm:0.24.0" - "@esbuild/linux-s390x": "npm:0.24.0" - "@esbuild/linux-x64": "npm:0.24.0" - "@esbuild/netbsd-x64": "npm:0.24.0" - "@esbuild/openbsd-arm64": "npm:0.24.0" - "@esbuild/openbsd-x64": "npm:0.24.0" - "@esbuild/sunos-x64": "npm:0.24.0" - "@esbuild/win32-arm64": "npm:0.24.0" - "@esbuild/win32-ia32": "npm:0.24.0" - "@esbuild/win32-x64": "npm:0.24.0" +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0, esbuild@npm:^0.25.0": + version: 0.25.3 + resolution: "esbuild@npm:0.25.3" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.3" + "@esbuild/android-arm": "npm:0.25.3" + "@esbuild/android-arm64": "npm:0.25.3" + "@esbuild/android-x64": "npm:0.25.3" + "@esbuild/darwin-arm64": "npm:0.25.3" + "@esbuild/darwin-x64": "npm:0.25.3" + "@esbuild/freebsd-arm64": "npm:0.25.3" + "@esbuild/freebsd-x64": "npm:0.25.3" + "@esbuild/linux-arm": "npm:0.25.3" + "@esbuild/linux-arm64": "npm:0.25.3" + "@esbuild/linux-ia32": "npm:0.25.3" + "@esbuild/linux-loong64": "npm:0.25.3" + "@esbuild/linux-mips64el": "npm:0.25.3" + "@esbuild/linux-ppc64": "npm:0.25.3" + "@esbuild/linux-riscv64": "npm:0.25.3" + "@esbuild/linux-s390x": "npm:0.25.3" + "@esbuild/linux-x64": "npm:0.25.3" + "@esbuild/netbsd-arm64": "npm:0.25.3" + "@esbuild/netbsd-x64": "npm:0.25.3" + "@esbuild/openbsd-arm64": "npm:0.25.3" + "@esbuild/openbsd-x64": "npm:0.25.3" + "@esbuild/sunos-x64": "npm:0.25.3" + "@esbuild/win32-arm64": "npm:0.25.3" + "@esbuild/win32-ia32": "npm:0.25.3" + "@esbuild/win32-x64": "npm:0.25.3" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -5449,6 +5155,8 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true + "@esbuild/netbsd-arm64": + optional: true "@esbuild/netbsd-x64": optional: true "@esbuild/openbsd-arm64": @@ -5465,84 +5173,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/500f83a1216d6548053007b85c070d8293395db344605b17418c6cf1217e5e8d338fa77fc8af27c23faa121c5528e5b0004d46d3a0cdeb87d48f1b5fa0164bc5 - languageName: node - linkType: hard - -"esbuild@npm:^0.18.10": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" - dependencies: - "@esbuild/android-arm": "npm:0.18.20" - "@esbuild/android-arm64": "npm:0.18.20" - "@esbuild/android-x64": "npm:0.18.20" - "@esbuild/darwin-arm64": "npm:0.18.20" - "@esbuild/darwin-x64": "npm:0.18.20" - "@esbuild/freebsd-arm64": "npm:0.18.20" - "@esbuild/freebsd-x64": "npm:0.18.20" - "@esbuild/linux-arm": "npm:0.18.20" - "@esbuild/linux-arm64": "npm:0.18.20" - "@esbuild/linux-ia32": "npm:0.18.20" - "@esbuild/linux-loong64": "npm:0.18.20" - "@esbuild/linux-mips64el": "npm:0.18.20" - "@esbuild/linux-ppc64": "npm:0.18.20" - "@esbuild/linux-riscv64": "npm:0.18.20" - "@esbuild/linux-s390x": "npm:0.18.20" - "@esbuild/linux-x64": "npm:0.18.20" - "@esbuild/netbsd-x64": "npm:0.18.20" - "@esbuild/openbsd-x64": "npm:0.18.20" - "@esbuild/sunos-x64": "npm:0.18.20" - "@esbuild/win32-arm64": "npm:0.18.20" - "@esbuild/win32-ia32": "npm:0.18.20" - "@esbuild/win32-x64": "npm:0.18.20" - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10/1f723ec71c3aa196473bf3298316eedc3f62d523924652dfeb60701b609792f918fc60db84b420d1d8ba9bfa7d69de2fc1d3157ba47c028bdae5d507a26a3c64 + checksum: 10/f1ff72289938330312926421f90eea442025cbbac295a7a2e8cfc2abbd9e3a8bc1502883468b0487e4020f1369e4726c851a2fa4b65a7c71331940072c3a1808 languageName: node linkType: hard @@ -5602,15 +5233,6 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^3.0.3": - version: 3.0.3 - resolution: "estree-walker@npm:3.0.3" - dependencies: - "@types/estree": "npm:^1.0.0" - checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af - languageName: node - linkType: hard - "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -5754,6 +5376,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.3, fdir@npm:^6.4.4": + version: 6.4.4 + resolution: "fdir@npm:6.4.4" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10/d0000d6b790059b35f4ed19acc8847a66452e0bc68b28766c929ffd523e5ec2083811fc8a545e4a1d4945ce70e887b3a610c145c681073b506143ae3076342ed + languageName: node + linkType: hard + "figures@npm:^2.0.0": version: 2.0.0 resolution: "figures@npm:2.0.0" @@ -5873,15 +5507,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 - languageName: node - linkType: hard - "foreground-child@npm:^2.0.0": version: 2.0.0 resolution: "foreground-child@npm:2.0.0" @@ -5976,7 +5601,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -5995,7 +5620,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -6025,19 +5650,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d - languageName: node - linkType: hard - "get-monorepo-packages@npm:^1.1.0": version: 1.2.0 resolution: "get-monorepo-packages@npm:1.2.0" @@ -6088,17 +5700,6 @@ __metadata: languageName: node linkType: hard -"glob-promise@npm:^4.2.0": - version: 4.2.2 - resolution: "glob-promise@npm:4.2.2" - dependencies: - "@types/glob": "npm:^7.1.3" - peerDependencies: - glob: ^7.1.6 - checksum: 10/c1a3d95f7c8393e4151d4899ec4e42bb2e8237160f840ad1eccbe9247407da8b6c13e28f463022e011708bc40862db87b9b77236d35afa3feb8aa86d518f2dfe - languageName: node - linkType: hard - "glob@npm:7.1.6": version: 7.1.6 resolution: "glob@npm:7.1.6" @@ -6113,7 +5714,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -6207,15 +5808,6 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca - languageName: node - linkType: hard - "graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -6237,38 +5829,6 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: 10/eab2ab0ed1eae6d058b9bbc4c1d99d2751b29717be80d02fd03ead8b62675488de0c7359bc1fdd4b87ef6fd11e796a9631ad4d7452d9324fdada70158c2e5be7 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe - languageName: node - linkType: hard - "hasha@npm:^5.0.0": version: 5.2.2 resolution: "hasha@npm:5.2.2" @@ -6502,16 +6062,6 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -6528,13 +6078,6 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 - languageName: node - linkType: hard - "is-core-module@npm:^2.13.0": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" @@ -6581,15 +6124,6 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f - languageName: node - linkType: hard - "is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -6648,15 +6182,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.3": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" - dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10/f850ba08286358b9a11aee6d93d371a45e3c59b5953549ee1c1a9a55ba5c1dd1bd9952488ae194ad8f32a9cf5e79c8fa5f0cc4d78c00720aa0bbcf238b38062d - languageName: node - linkType: hard - "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -7402,13 +6927,6 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:^4.0.0": - version: 4.1.0 - resolution: "jsdoc-type-pratt-parser@npm:4.1.0" - checksum: 10/30d88f95f6cbb4a1aa6d4b0d0ae46eb1096e606235ecaf9bab7a3ed5da860516b5d1cd967182765002f292c627526db918f3e56d34637bcf810e6ef84d403f3f - languageName: node - linkType: hard - "jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -7455,6 +6973,17 @@ __metadata: languageName: node linkType: hard +"junit-report-builder@npm:^5.1.1": + version: 5.1.1 + resolution: "junit-report-builder@npm:5.1.1" + dependencies: + lodash: "npm:^4.17.21" + make-dir: "npm:^3.1.0" + xmlbuilder: "npm:^15.1.1" + checksum: 10/273678301654c22265a8ccd5a605f498747e2530e801b332f1033fa3e35b3fc3538e10b335674cca41bbc1f4c9476350254820e1f5f0cf4101ac8dd4c1402bf8 + languageName: node + linkType: hard + "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -7679,13 +7208,20 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1, loupe@npm:^3.1.2": +"loupe@npm:^3.1.0": version: 3.1.2 resolution: "loupe@npm:3.1.2" checksum: 10/8f5734e53fb64cd914aa7d986e01b6d4c2e3c6c56dcbd5428d71c2703f0ab46b5ab9f9eeaaf2b485e8a1c43f865bdd16ec08ae1a661c8f55acdbd9f4d59c607a languageName: node linkType: hard +"loupe@npm:^3.1.3": + version: 3.1.3 + resolution: "loupe@npm:3.1.3" + checksum: 10/9e98c34daf0eba48ccc603595e51f2ae002110982d84879cf78c51de2c632f0c571dfe82ce4210af60c32203d06b443465c269bda925076fe6d9b612cc65c321 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -7792,13 +7328,6 @@ __metadata: languageName: node linkType: hard -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: 10/3cf43bcd0e7af41d7bade5f8b5be6bb9d021cc47e6008ad545d071cf3a709ba782884002f9eec6ccd51f572fc17841e07bf74628e0bc3694c33f4622b03e4b4c - languageName: node - linkType: hard - "meant@npm:^1.0.1": version: 1.0.3 resolution: "meant@npm:1.0.3" @@ -7806,15 +7335,6 @@ __metadata: languageName: node linkType: hard -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: "npm:^1.5.0" - checksum: 10/72b6b80699777d000f03db6e15fdabcd4afe77feb45be51fe195cb230c64a368fcfcfbb976375eac3283bd8193d6b1a67ac3081cae07f64fca73f1aa568d59e3 - languageName: node - linkType: hard - "merge-source-map@npm:^1.1.0": version: 1.1.0 resolution: "merge-source-map@npm:1.1.0" @@ -8034,6 +7554,15 @@ __metadata: languageName: node linkType: hard +"mustache@npm:^4.0.1": + version: 4.2.0 + resolution: "mustache@npm:4.2.0" + bin: + mustache: bin/mustache + checksum: 10/6e668bd5803255ab0779c3983b9412b5c4f4f90e822230e0e8f414f5449ed7a137eed29430e835aa689886f663385cfe05f808eb34b16e1f3a95525889b05cd3 + languageName: node + linkType: hard + "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -8045,12 +7574,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" +"nanoid@npm:^3.3.8": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + checksum: 10/73b5afe5975a307aaa3c95dfe3334c52cdf9ae71518176895229b8d65ab0d1c0417dd081426134eb7571c055720428ea5d57c645138161e7d10df80815527c48 languageName: node linkType: hard @@ -8558,7 +8087,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 @@ -8572,6 +8101,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 + languageName: node + linkType: hard + "pidtree@npm:0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -8688,13 +8224,6 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: 10/8ed3e96dfeea1c5880c1f4c9cb707e5fb26e8be22f14f82ef92df20fd2004e635c62ba47fbe8f2bb63bfd80dac1474be2fb39798da8c2feba2815435d1f749af - languageName: node - linkType: hard - "postcss-load-config@npm:^3.0.1": version: 3.1.4 resolution: "postcss-load-config@npm:3.1.4" @@ -8713,14 +8242,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.27": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" +"postcss@npm:^8.5.3": + version: 8.5.3 + resolution: "postcss@npm:8.5.3" dependencies: - nanoid: "npm:^3.3.6" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 10/1a6653e72105907377f9d4f2cd341d8d90e3fde823a5ddea1e2237aaa56933ea07853f0f2758c28892a1d70c53bbaca200eb8b80f8ed55f13093003dbec5afa0 + nanoid: "npm:^3.3.8" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10/6d7e21a772e8b05bf102636918654dac097bac013f0dc8346b72ac3604fc16829646f94ea862acccd8f82e910b00e2c11c1f0ea276543565d278c7ca35516a7c languageName: node linkType: hard @@ -8780,13 +8309,6 @@ __metadata: languageName: node linkType: hard -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -8858,9 +8380,9 @@ __metadata: languageName: node linkType: hard -"react-docgen@npm:^7.0.0": - version: 7.1.0 - resolution: "react-docgen@npm:7.1.0" +"react-docgen@npm:^7.1.1": + version: 7.1.1 + resolution: "react-docgen@npm:7.1.1" dependencies: "@babel/core": "npm:^7.18.9" "@babel/traverse": "npm:^7.18.9" @@ -8872,19 +8394,18 @@ __metadata: doctrine: "npm:^3.0.0" resolve: "npm:^1.22.1" strip-indent: "npm:^4.0.0" - checksum: 10/ce1f6e4394375307ecf268ef0b3e41fd75a6b050e70053c6e64b72f108d7606a4b8de6c0f1dab2759bc80864db01be38a9245e2d71024d2ed3d3e0179bd02140 + checksum: 10/501e5fa0d00e32ee27559f44462a34e9531018ccb46c51efbe60b98a4c077f43dbe8999da5bb91d2ab45a83a34099436a3b725fdabd3f218dbb4493c0b1c9f95 languageName: node linkType: hard -"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": + version: 19.1.0 + resolution: "react-dom@npm:19.1.0" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" + scheduler: "npm:^0.26.0" peerDependencies: - react: ^18.3.1 - checksum: 10/3f4b73a3aa083091173b29812b10394dd06f4ac06aff410b74702cfb3aa29d7b0ced208aab92d5272919b612e5cda21aeb1d54191848cf6e46e9e354f3541f81 + react: ^19.1.0 + checksum: 10/c5b58605862c7b0bb044416b01c73647bb8e89717fb5d7a2c279b11815fb7b49b619fe685c404e59f55eb52c66831236cc565c25ee1c2d042739f4a2cc538aa2 languageName: node linkType: hard @@ -8922,12 +8443,10 @@ __metadata: languageName: node linkType: hard -"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0": - version: 18.3.1 - resolution: "react@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": + version: 19.1.0 + resolution: "react@npm:19.1.0" + checksum: 10/d0180689826fd9de87e839c365f6f361c561daea397d61d724687cae88f432a307d1c0f53a0ee95ddbe3352c10dac41d7ff1ad85530fb24951b27a39e5398db4 languageName: node linkType: hard @@ -9265,7 +8784,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^3.2.5, rollup@npm:^3.27.1": +"rollup@npm:^3.2.5": version: 3.29.5 resolution: "rollup@npm:3.29.5" dependencies: @@ -9279,6 +8798,81 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.34.9": + version: 4.40.0 + resolution: "rollup@npm:4.40.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.40.0" + "@rollup/rollup-android-arm64": "npm:4.40.0" + "@rollup/rollup-darwin-arm64": "npm:4.40.0" + "@rollup/rollup-darwin-x64": "npm:4.40.0" + "@rollup/rollup-freebsd-arm64": "npm:4.40.0" + "@rollup/rollup-freebsd-x64": "npm:4.40.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.40.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.40.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.40.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.40.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.40.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.40.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-x64-musl": "npm:4.40.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.40.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.40.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.40.0" + "@types/estree": "npm:1.0.7" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10/59976247cd855bc48b7192c82a6751bd04213e5a265109c652a6c43bde9056038c6399c0cf50ea3001edd5c11bb878a59e1055bb651b3bd6bbd0373c0345ed0c + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -9321,12 +8915,10 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 +"scheduler@npm:^0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: 10/1ecf2e5d7de1a7a132796834afe14a2d589ba7e437615bd8c06f3e0786a3ac3434655e67aac8755d9b14e05754c177e49c064261de2673aaa3c926bc98caa002 languageName: node linkType: hard @@ -9375,20 +8967,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -9510,10 +9088,10 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: 10/38e2d2dd18d2e331522001fc51b54127ef4a5d473f53b1349c5cca2123562400e0986648b52e9407e348eaaed53bce49248b6e2641e6d793ca57cb2c360d6d51 +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 languageName: node linkType: hard @@ -9653,20 +9231,32 @@ __metadata: linkType: hard "storybook@npm:next": - version: 8.5.0-alpha.11 - resolution: "storybook@npm:8.5.0-alpha.11" + version: 9.0.0-beta.1 + resolution: "storybook@npm:9.0.0-beta.1" dependencies: - "@storybook/core": "npm:8.5.0-alpha.11" + "@storybook/global": "npm:^5.0.0" + "@testing-library/dom": "npm:10.4.0" + "@testing-library/jest-dom": "npm:^6.6.3" + "@testing-library/user-event": "npm:^14.6.1" + "@types/uuid": "npm:^9.0.1" + "@vitest/expect": "npm:3.0.9" + "@vitest/spy": "npm:3.0.9" + better-opn: "npm:^3.0.2" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" + esbuild-register: "npm:^3.5.0" + polished: "npm:^4.2.2" + recast: "npm:^0.23.5" + semver: "npm:^7.6.2" + uuid: "npm:^9.0.0" + ws: "npm:^8.18.0" peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true bin: - getstorybook: ./bin/index.cjs - sb: ./bin/index.cjs storybook: ./bin/index.cjs - checksum: 10/92db7b8836e3a62462eafa1ccf6e578cf97061ee0b647d170c15dc6da13c0cb493870ed7d7dce68a144b1560ef0f3248f0db256f9cf02f37dcfa64910180fa03 + checksum: 10/f31acf878a69decf0dae0a97adb17282dc28aead81b103fca9710b3b4f70192ce7de1b69ad9e6769ceb75f9d7662513ac703562ce4349edc767d41e44da77968 languageName: node linkType: hard @@ -9960,7 +9550,7 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": +"tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" checksum: 10/5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe @@ -9974,14 +9564,24 @@ __metadata: languageName: node linkType: hard -"tinyrainbow@npm:^1.2.0": - version: 1.2.0 - resolution: "tinyrainbow@npm:1.2.0" - checksum: 10/2924444db6804355e5ba2b6e586c7f77329d93abdd7257a069a0f4530dff9f16de484e80479094e3f39273462541b003a65ee3a6afc2d12555aa745132deba5d +"tinyglobby@npm:^0.2.12": + version: 0.2.13 + resolution: "tinyglobby@npm:0.2.13" + dependencies: + fdir: "npm:^6.4.4" + picomatch: "npm:^4.0.2" + checksum: 10/b04557ee58ad2be5f2d2cbb4b441476436c92bb45ba2e1fc464d686b793392b305ed0bcb8b877429e9b5036bdd46770c161a08384c0720b6682b7cd6ac80e403 languageName: node linkType: hard -"tinyspy@npm:^3.0.0": +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5 + languageName: node + linkType: hard + +"tinyspy@npm:^3.0.2": version: 3.0.2 resolution: "tinyspy@npm:3.0.2" checksum: 10/5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 @@ -10029,7 +9629,7 @@ __metadata: languageName: node linkType: hard -"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": +"ts-dedent@npm:^2.0.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" checksum: 10/93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af @@ -10245,13 +9845,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: 10/7bf9e8fdf34f92c8bb364c0af14ca875fac7e0183f2985498b77be129dc1b3b1ad0a6b3281580f19e48c6105c037fb966ad9934520c69c6434d17fd0af4eed78 - languageName: node - linkType: hard - "type-fest@npm:^3.0.0": version: 3.13.1 resolution: "type-fest@npm:3.13.1" @@ -10439,19 +10032,6 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.5": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - which-typed-array: "npm:^1.1.2" - checksum: 10/61a10de7753353dd4d744c917f74cdd7d21b8b46379c1e48e1c4fd8e83f8190e6bd9978fc4e5102ab6a10ebda6019d1b36572fa4a325e175ec8b789a121f6147 - languageName: node - linkType: hard - "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -10510,43 +10090,58 @@ __metadata: languageName: node linkType: hard -"vite@npm:^4.4.5": - version: 4.5.0 - resolution: "vite@npm:4.5.0" +"vite@npm:^6.3.2": + version: 6.3.2 + resolution: "vite@npm:6.3.2" dependencies: - esbuild: "npm:^0.18.10" - fsevents: "npm:~2.3.2" - postcss: "npm:^8.4.27" - rollup: "npm:^3.27.1" + esbuild: "npm:^0.25.0" + fdir: "npm:^6.4.3" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.2" + postcss: "npm:^8.5.3" + rollup: "npm:^4.34.9" + tinyglobby: "npm:^0.2.12" peerDependencies: - "@types/node": ">= 14" + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" less: "*" lightningcss: ^1.21.0 sass: "*" + sass-embedded: "*" stylus: "*" sugarss: "*" - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 dependenciesMeta: fsevents: optional: true peerDependenciesMeta: "@types/node": optional: true + jiti: + optional: true less: optional: true lightningcss: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true bin: vite: bin/vite.js - checksum: 10/b262ea4880ba7de8a77b0a665c771561ae3cb7f0d6c5b90e65298039755192550bf90cb96a2910d564506e2d499aa20e9becd330b835c34d414249083ac6e40c + checksum: 10/05ea5e03d86d950e53af6b11e444b31846bccdc44e45b8d693d06eba7d3a4fe2e8003a6948cdbcf7e54779f7ca851f29e96be6369e9c9413d34de7539ad6af8c languageName: node linkType: hard @@ -10643,19 +10238,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448 - languageName: node - linkType: hard - "which@npm:^1.2.12": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -10761,9 +10343,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.2.3": - version: 8.14.2 - resolution: "ws@npm:8.14.2" +"ws@npm:^8.18.0": + version: 8.18.1 + resolution: "ws@npm:8.18.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -10772,7 +10354,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/815ff01d9bc20a249b2228825d9739268a03a4408c2e0b14d49b0e2ae89d7f10847e813b587ba26992bdc33e9d03bed131e4cae73ff996baf789d53e99c31186 + checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b languageName: node linkType: hard @@ -10783,6 +10365,13 @@ __metadata: languageName: node linkType: hard +"xmlbuilder@npm:^15.1.1": + version: 15.1.1 + resolution: "xmlbuilder@npm:15.1.1" + checksum: 10/e6f4bab2504afdd5f80491bda948894d2146756532521dbe7db33ae0931cd3000e3b4da19b3f5b3f51bedbd9ee06582144d28136d68bd1df96579ecf4d4404a2 + languageName: node + linkType: hard + "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" From 133811ddbfdabee3cda8f77f5b27e4443a235835 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 23 Apr 2025 11:40:08 +0200 Subject: [PATCH 02/11] fix --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 513d2a41..c34bd62f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "start": "concurrently \"yarn build:watch\" \"yarn storybook -- --quiet\"", "storybook": "storybook dev -p 6006", "test": "jest", - "test-storybook": "node dist/test-storybook --maxWorkers=9", + "test-storybook": "node dist/test-storybook", "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook\"", "test-storybook:ci-coverage": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook --coverage\"", "test-storybook:ci-failures": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"TEST_FAILURES=1 yarn build-storybook --quiet && npx serve storybook-static -l 6006\" \"wait-on tcp:6006 && yarn test-storybook:failures\"", From 8970576a6b97e66c27f39d8f580fbb80dbc01bd4 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 23 Apr 2025 11:43:59 +0200 Subject: [PATCH 03/11] update node in tests --- .github/workflows/tests-extended.yml | 2 +- .github/workflows/tests.yml | 2 +- .github/workflows/typecheck.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests-extended.yml b/.github/workflows/tests-extended.yml index 8890aea2..b7b0d15b 100644 --- a/.github/workflows/tests-extended.yml +++ b/.github/workflows/tests-extended.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x, 20.x] + node-version: [20.x, 22.x] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ce4c7672..4eb5be6d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x] + node-version: [20.x] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index 51e5b163..dbc5cad5 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Use Node.js 18.x + - name: Use Node.js 20.x uses: actions/setup-node@v1 with: - node-version: '18.x' + node-version: '20.x' - name: Install dependencies uses: bahmutov/npm-install@v1 From 3c0ceb23dd80967e5ce1a90d1fc0ef5d173f4dca Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 24 Apr 2025 12:15:24 +0200 Subject: [PATCH 04/11] Add out of the box support for a11y tests --- .storybook/preview.ts | 1 + .storybook/test-runner.ts | 16 ----- README.md | 30 ++++++++- package.json | 1 - src/setup-page-script.ts | 130 ++++++++++++++++++++++++++++++++++---- yarn.lock | 63 +----------------- 6 files changed, 149 insertions(+), 92 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 764e0755..3be4b0b3 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -14,6 +14,7 @@ const preview: Preview = { decorators: [withSkippableTests], parameters: { a11y: { + test: 'todo', config: { rules: [ { diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index d6eb5a10..01ac6d02 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -1,5 +1,4 @@ import { toMatchImageSnapshot } from 'jest-image-snapshot'; -import { injectAxe, checkA11y, configureAxe } from 'axe-playwright'; import { getStoryContext, waitForPageReady } from '../dist'; import type { TestRunnerConfig } from '../dist'; @@ -21,9 +20,6 @@ const config: TestRunnerConfig = { setup() { expect.extend({ toMatchImageSnapshot }); }, - async preVisit(page) { - await injectAxe(page); - }, async postVisit(page, context) { // Get entire context of a story, including parameters, args, argTypes, etc. const { parameters } = await getStoryContext(page, context); @@ -51,18 +47,6 @@ const config: TestRunnerConfig = { const innerHTML = await elementHandler?.innerHTML(); // HTML snapshot tests expect(innerHTML).toMatchSnapshot(); - - await configureAxe(page, { - rules: parameters?.a11y?.config?.rules, - }); - - const element = parameters?.a11y?.element ?? 'body'; - await checkA11y(page, element, { - detailedReport: true, - detailedReportOptions: { - html: true, - }, - }); }, }; diff --git a/README.md b/README.md index 6f40118a..a7ca95fd 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ Storybook test runner turns all of your stories into executable tests. - [Recipes](#recipes) - [Preconfiguring viewport size](#preconfiguring-viewport-size) - [Accessibility testing](#accessibility-testing) + - [With Storybook 9](#with-storybook-9) + - [With Storybook 8](#with-storybook-8) - [DOM snapshot (HTML)](#dom-snapshot-html) - [Image snapshot](#image-snapshot) - [Troubleshooting](#troubleshooting) @@ -167,7 +169,7 @@ Usage: test-storybook [options] | `--json` | Prints the test results in JSON. This mode will send all other test output and user messages to stderr.
`test-storybook --json` | | `--outputFile` | Write test results to a file when the --json option is also specified.
`test-storybook --json --outputFile results.json` | | `--junit` | Indicates that test information should be reported in a junit file.
`test-storybook --**junit**` | -| `--listTests` | Lists all test files that will be run, and exits
`test-storybook --listTests` | +| `--listTests` | Lists all test files that will be run, and exits
`test-storybook --listTests` | | `--ci` | Instead of the regular behavior of storing a new snapshot automatically, it will fail the test and require Jest to be run with `--updateSnapshot`.
`test-storybook --ci` | | `--shard [shardIndex/shardCount]` | Splits your test suite across different machines to run in CI.
`test-storybook --shard=1/3` | | `--failOnConsole` | Makes tests fail on browser console errors
`test-storybook --failOnConsole` | @@ -885,6 +887,32 @@ export default config; ### Accessibility testing +#### With Storybook 9 + +In Storybook 9, the accessibility addon has been enhanced with automated reporting capabilities and the Test-runner has out of the box support for it. If you have `@storybook/addon-a11y` installed, as long as you enable them via parameters, you will get a11y checks for every story: + +```ts +// .storybook/preview.ts + +const preview = { + parameters: { + a11y: { + // 'error' will cause a11y violations to fail tests + test: 'error', // or 'todo' or 'off' + }, + }, +}; + +export default preview; +``` + +If you had a11y tests set up previously for Storybook 8 (with the recipe below), you can uninstall `axe-playwright` and remove all the code from the test-runner hooks, as they are not necessary anymore. + +#### With Storybook 8 + +> [!TIP] +> If you upgrade to Storybook 9, there is out of the box support for a11y tests and you don't have to follow a recipe like this. + You can install `axe-playwright` and use it in tandem with the test-runner to test the accessibility of your components. If you use [`@storybook/addon-a11y`](https://storybook.js.org/addons/@storybook/addon-a11y), you can reuse its parameters and make sure that the tests match in configuration, both in the accessibility addon panel and the test-runner. diff --git a/package.json b/package.json index c34bd62f..553e7444 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,6 @@ "@types/node-fetch": "^2.6.11", "@vitejs/plugin-react": "^4.0.3", "auto": "^11.1.6", - "axe-playwright": "^2.1.0", "babel-jest": "^29.0.0", "babel-loader": "^8.1.0", "babel-plugin-istanbul": "^6.1.1", diff --git a/src/setup-page-script.ts b/src/setup-page-script.ts index 440934c9..3912f429 100644 --- a/src/setup-page-script.ts +++ b/src/setup-page-script.ts @@ -32,6 +32,13 @@ declare global { // this is defined in setup-page.ts and can be used for logging from the browser to node, helpful for debugging var logToPage: (message: string) => Promise; var testRunner_errorMessageFormatter: (message: string) => Promise; + var __STORYBOOK_PREVIEW__: { + currentRender: { + story: { + parameters?: any; + }; + }; + }; } // Type definitions for function parameters and return types @@ -42,6 +49,7 @@ const magenta: Colorizer = (message: string) => `\u001b[35m${message}\u001b[39m` const blue: Colorizer = (message: string) => `\u001b[34m${message}\u001b[39m`; const red: Colorizer = (message: string) => `\u001b[31m${message}\u001b[39m`; const yellow: Colorizer = (message: string) => `\u001b[33m${message}\u001b[39m`; +const grey: Colorizer = (message: string) => `\u001b[90m${message}\u001b[39m`; // Constants var LIMIT_REPLACE_NODE = '[...]'; @@ -223,17 +231,22 @@ class StorybookTestRunnerError extends Error { public static buildErrorMessage( storyId: string, errorMessage: string, - logs: string[] = [] + logs: string[] = [], + panel?: string ): string { const storyUrl = `${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`; - const finalStoryUrl = `${storyUrl}&addonPanel=storybook/interactions/panel`; + const finalStoryUrl = panel ? `${storyUrl}&addonPanel=${panel}` : storyUrl; const separator = '\n\n--------------------------------------------------'; // The original error message will also be collected in the logs, so we filter it to avoid duplication const finalLogs = logs.filter((err: string) => !err.includes(errorMessage)); const extraLogs = finalLogs.length > 0 ? separator + '\n\nBrowser logs:\n\n' + finalLogs.join('\n\n') : ''; - const message = `\nAn error occurred in the following story. Access the link for full output:\n${finalStoryUrl}\n\nMessage:\n ${truncate( + const linkPrefix = blue( + `\nClick to debug the error directly in Storybook:\n${finalStoryUrl}\n\n` + ); + + const message = `${linkPrefix}Message:\n ${truncate( errorMessage, TEST_RUNNER_DEBUG_PRINT_LIMIT )}\n${extraLogs}`; @@ -385,8 +398,13 @@ async function __test(storyId: string): Promise { }; return new Promise((resolve, reject) => { - const rejectWithFormattedError = (storyId: string, message: string) => { - const errorMessage = StorybookTestRunnerError.buildErrorMessage(storyId, message, logs); + const rejectWithFormattedError = (storyId: string, message: string, panel?: string) => { + const errorMessage = StorybookTestRunnerError.buildErrorMessage( + storyId, + message, + logs, + panel + ); testRunner_errorMessageFormatter(errorMessage) .then((formattedMessage) => { @@ -403,14 +421,41 @@ async function __test(storyId: string): Promise { }); }; + const INTERACTIONS_PANEL = 'storybook/interactions/panel'; + const A11Y_PANEL = 'storybook/a11y/panel'; + const listeners = { - [TEST_RUNNER_RENDERED_EVENT]: () => { + [TEST_RUNNER_RENDERED_EVENT]: (data: any) => { cleanup(listeners); + if (hasErrors) { rejectWithFormattedError(storyId, 'Browser console errors'); - } else { - resolve(document.getElementById('root')); + return; + } else if (data?.reporters) { + const a11yTestParameter = + globalThis.__STORYBOOK_PREVIEW__.currentRender?.story?.parameters?.a11y?.test; + const a11yReport = data.reporters.find((reporter: any) => reporter.type === 'a11y'); + if ( + a11yReport.result?.violations?.length > 0 && + (a11yTestParameter === 'error' || a11yTestParameter === 'todo') + ) { + const violations = expectToHaveNoViolations(a11yReport.result); + if (violations && a11yTestParameter === 'error') { + rejectWithFormattedError(storyId, violations.long, A11Y_PANEL); + return; + } else if (violations && a11yTestParameter === 'todo') { + const warningMessage = StorybookTestRunnerError.buildErrorMessage( + storyId, + yellow(violations.short), + [], + A11Y_PANEL + ); + logToPage(warningMessage); + } + } } + + resolve(document.getElementById('root')); }, storyUnchanged: () => { @@ -420,23 +465,23 @@ async function __test(storyId: string): Promise { storyErrored: ({ description }: { description: string }) => { cleanup(listeners); - rejectWithFormattedError(storyId, description); + rejectWithFormattedError(storyId, description, INTERACTIONS_PANEL); }, storyThrewException: (error: Error) => { cleanup(listeners); - rejectWithFormattedError(storyId, error.message); + rejectWithFormattedError(storyId, error.message, INTERACTIONS_PANEL); }, playFunctionThrewException: (error: Error) => { cleanup(listeners); - rejectWithFormattedError(storyId, error.message); + rejectWithFormattedError(storyId, error.message, INTERACTIONS_PANEL); }, unhandledErrorsWhilePlaying: ([error]: Error[]) => { cleanup(listeners); - rejectWithFormattedError(storyId, error.message); + rejectWithFormattedError(storyId, error.message, INTERACTIONS_PANEL); }, storyMissing: (id: string) => { @@ -455,4 +500,65 @@ async function __test(storyId: string): Promise { }); } +function expectToHaveNoViolations(results: any): { long: string; short: string } | null { + let violations = filterViolations( + results.violations, + // `impactLevels` is not a valid toolOption but one we add to the config + // when calling `run`. axe just happens to pass this along. Might be a safer + // way to do this since it's not documented API. + results.toolOptions?.impactLevels ?? [] + ); + + function reporter(violations: any) { + if (violations.length === 0) { + return null; + } + + let lineBreak = '\n\n'; + let horizontalLine = '\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500'; + + return violations + .map((violation: any) => { + let errorBody = violation.nodes + .map((node: any) => { + let selector = node.target.join(', '); + let expectedText = + red(`Expected the HTML found at $('${selector}') to have no violations:`) + lineBreak; + return ( + expectedText + + grey(node.html) + + lineBreak + + red(`Received:`) + + lineBreak + + red(`"${violation.help} (${violation.id})"`) + + lineBreak + + yellow(node.failureSummary) + + lineBreak + + (violation.helpUrl + ? red(`You can find more information on this issue here:`) + + `\n${blue(violation.helpUrl)}` + : '') + ); + }) + .join(lineBreak); + return errorBody; + }) + .join(lineBreak + horizontalLine + lineBreak); + } + + let formatedViolations = reporter(violations); + + return { + long: 'expect(received).toHaveNoViolations(expected)' + '\n\n' + `${formatedViolations}`, + short: `Found ${violations.length} a11y violations, run the test with 'a11y: { test: 'error' }' parameter to see the full report or debug it directly in Storybook.`, + }; +} + +function filterViolations(violations: any, impactLevels: Array) { + if (impactLevels && impactLevels.length > 0) { + return violations.filter((v: any) => impactLevels.includes(v.impact)); + } + return violations; +} + export {}; diff --git a/yarn.lock b/yarn.lock index b985ba5f..34a428b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2951,7 +2951,6 @@ __metadata: "@types/node-fetch": "npm:^2.6.11" "@vitejs/plugin-react": "npm:^4.0.3" auto: "npm:^11.1.6" - axe-playwright: "npm:^2.1.0" babel-jest: "npm:^29.0.0" babel-loader: "npm:^8.1.0" babel-plugin-istanbul: "npm:^6.1.1" @@ -3340,13 +3339,6 @@ __metadata: languageName: node linkType: hard -"@types/junit-report-builder@npm:^3.0.2": - version: 3.0.2 - resolution: "@types/junit-report-builder@npm:3.0.2" - checksum: 10/7fead0b771f95cd8e607223ace2f43cc881b3e7944db405f903590b56379d14132032b7d89c9afa7dff266b95f516a476a39ad40f9200bfb61fc8ed7f6b1bff6 - languageName: node - linkType: hard - "@types/mdx@npm:^2.0.0": version: 2.0.13 resolution: "@types/mdx@npm:2.0.13" @@ -3820,39 +3812,13 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.10.1, axe-core@npm:^4.2.0": +"axe-core@npm:^4.2.0": version: 4.10.3 resolution: "axe-core@npm:4.10.3" checksum: 10/9ff51ad0fd0fdec5c0247ea74e8ace5990b54c7f01f8fa3e5cd8ba98b0db24d8ebd7bab4a9bd4d75c28c4edcd1eac455b44c8c6c258c6a98f3d2f88bc60af4cc languageName: node linkType: hard -"axe-html-reporter@npm:2.2.11": - version: 2.2.11 - resolution: "axe-html-reporter@npm:2.2.11" - dependencies: - mustache: "npm:^4.0.1" - peerDependencies: - axe-core: ">=3" - checksum: 10/489a904c62fe5c74db9490773a624e8573906b54a9c8264b831ee50b648f623ba292a011598d257bd6b8dc35eede21998fc25c799bd99eb9ca8ecf2d05ef92a1 - languageName: node - linkType: hard - -"axe-playwright@npm:^2.1.0": - version: 2.1.0 - resolution: "axe-playwright@npm:2.1.0" - dependencies: - "@types/junit-report-builder": "npm:^3.0.2" - axe-core: "npm:^4.10.1" - axe-html-reporter: "npm:2.2.11" - junit-report-builder: "npm:^5.1.1" - picocolors: "npm:^1.1.1" - peerDependencies: - playwright: ">1.0.0" - checksum: 10/d478c206bdd950257fafc872a6da3d9e73ca6a235ecea504bfde9744ca9265cc7abea050301c7cb611a3e79d61e14d50a047595c6e6cc13353e6c1c835afe922 - languageName: node - linkType: hard - "axios@npm:^1.6.1": version: 1.6.2 resolution: "axios@npm:1.6.2" @@ -6973,17 +6939,6 @@ __metadata: languageName: node linkType: hard -"junit-report-builder@npm:^5.1.1": - version: 5.1.1 - resolution: "junit-report-builder@npm:5.1.1" - dependencies: - lodash: "npm:^4.17.21" - make-dir: "npm:^3.1.0" - xmlbuilder: "npm:^15.1.1" - checksum: 10/273678301654c22265a8ccd5a605f498747e2530e801b332f1033fa3e35b3fc3538e10b335674cca41bbc1f4c9476350254820e1f5f0cf4101ac8dd4c1402bf8 - languageName: node - linkType: hard - "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -7554,15 +7509,6 @@ __metadata: languageName: node linkType: hard -"mustache@npm:^4.0.1": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 10/6e668bd5803255ab0779c3983b9412b5c4f4f90e822230e0e8f414f5449ed7a137eed29430e835aa689886f663385cfe05f808eb34b16e1f3a95525889b05cd3 - languageName: node - linkType: hard - "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -10365,13 +10311,6 @@ __metadata: languageName: node linkType: hard -"xmlbuilder@npm:^15.1.1": - version: 15.1.1 - resolution: "xmlbuilder@npm:15.1.1" - checksum: 10/e6f4bab2504afdd5f80491bda948894d2146756532521dbe7db33ae0931cd3000e3b4da19b3f5b3f51bedbd9ee06582144d28136d68bd1df96579ecf4d4404a2 - languageName: node - linkType: hard - "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" From e52b0d95bac197c24a34b69a4805114534dd28b2 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 30 Apr 2025 12:17:47 +0200 Subject: [PATCH 05/11] improve error message --- .storybook/preview.ts | 2 +- src/setup-page-script.ts | 105 +++++++++++++++++++++++---------------- 2 files changed, 62 insertions(+), 45 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 3be4b0b3..ec0e3751 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -14,7 +14,7 @@ const preview: Preview = { decorators: [withSkippableTests], parameters: { a11y: { - test: 'todo', + test: 'error', config: { rules: [ { diff --git a/src/setup-page-script.ts b/src/setup-page-script.ts index 3912f429..51e2d0e4 100644 --- a/src/setup-page-script.ts +++ b/src/setup-page-script.ts @@ -4,6 +4,8 @@ * This file is a template to the content which is injected to the Playwright page via the ./setup-page.ts file. * setup-page.ts will read the contents of this file and replace values that use {{x}} pattern, and they should be put right below: */ +import { PreviewWeb } from 'storybook/internal/preview-api'; +import { StoryContext } from 'storybook/internal/csf'; type ConsoleMethod = | 'log' @@ -32,13 +34,7 @@ declare global { // this is defined in setup-page.ts and can be used for logging from the browser to node, helpful for debugging var logToPage: (message: string) => Promise; var testRunner_errorMessageFormatter: (message: string) => Promise; - var __STORYBOOK_PREVIEW__: { - currentRender: { - story: { - parameters?: any; - }; - }; - }; + var __STORYBOOK_PREVIEW__: PreviewWeb; } // Type definitions for function parameters and return types @@ -212,28 +208,40 @@ function addToUserAgent(extra: string): void { } } +function getStory(): StoryContext { + const currentRender = globalThis.__STORYBOOK_PREVIEW__.currentRender; + if (currentRender && 'story' in currentRender) { + return currentRender.story as unknown as StoryContext; + } + + return {} as StoryContext; +} + // Custom error class class StorybookTestRunnerError extends Error { - constructor( - storyId: string, - errorMessage: string, - logs: string[] = [], - isMessageFormatted: boolean = false - ) { + constructor(params: { + storyId: string; + errorMessage: string; + logs?: string[]; + isMessageFormatted?: boolean; + }) { + const { storyId, errorMessage, logs = [], isMessageFormatted = false } = params; const message = isMessageFormatted ? errorMessage - : StorybookTestRunnerError.buildErrorMessage(storyId, errorMessage, logs); + : StorybookTestRunnerError.buildErrorMessage({ storyId, errorMessage, logs }); super(message); this.name = 'StorybookTestRunnerError'; } - public static buildErrorMessage( - storyId: string, - errorMessage: string, - logs: string[] = [], - panel?: string - ): string { + public static buildErrorMessage(params: { + storyId: string; + errorMessage: string; + logs?: string[]; + panel?: string; + errorMessagePrefix?: string; + }): string { + const { storyId, errorMessage, logs = [], panel, errorMessagePrefix = '' } = params; const storyUrl = `${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`; const finalStoryUrl = panel ? `${storyUrl}&addonPanel=${panel}` : storyUrl; const separator = '\n\n--------------------------------------------------'; @@ -246,7 +254,7 @@ class StorybookTestRunnerError extends Error { `\nClick to debug the error directly in Storybook:\n${finalStoryUrl}\n\n` ); - const message = `${linkPrefix}Message:\n ${truncate( + const message = `${errorMessagePrefix}${linkPrefix}Message:\n ${truncate( errorMessage, TEST_RUNNER_DEBUG_PRINT_LIMIT )}\n${extraLogs}`; @@ -257,7 +265,7 @@ class StorybookTestRunnerError extends Error { // @ts-expect-error Global function to throw custom error, used by the test runner or user async function __throwError(storyId: string, errorMessage: string, logs: string[]): Promise { - throw new StorybookTestRunnerError(storyId, errorMessage, logs); + throw new StorybookTestRunnerError({ storyId, errorMessage, logs }); } // Wait for Storybook to load @@ -290,7 +298,6 @@ async function __waitForStorybook(): Promise { // Get context from Storybook // @ts-expect-error Global function to get context, used by the test runner or user async function __getContext(storyId: string): Promise { - // @ts-expect-error globally defined via Storybook return globalThis.__STORYBOOK_PREVIEW__.storyStore.loadStory({ storyId }); } @@ -309,16 +316,17 @@ async function __test(storyId: string): Promise { await __waitForStorybook(); } catch (err) { const message = `Timed out waiting for Storybook to load after 10 seconds. Are you sure the Storybook is running correctly in that URL? Is the Storybook private (e.g. under authentication layers)?\n\n\nHTML: ${document.body.innerHTML}`; - throw new StorybookTestRunnerError(storyId, message); + throw new StorybookTestRunnerError({ storyId, errorMessage: message }); } // @ts-expect-error globally defined via Storybook const channel = globalThis.__STORYBOOK_ADDONS_CHANNEL__; if (!channel) { - throw new StorybookTestRunnerError( + throw new StorybookTestRunnerError({ storyId, - 'The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?' - ); + errorMessage: + 'The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?', + }); } addToUserAgent(`(StorybookTestRunner@${TEST_RUNNER_VERSION})`); @@ -399,24 +407,32 @@ async function __test(storyId: string): Promise { return new Promise((resolve, reject) => { const rejectWithFormattedError = (storyId: string, message: string, panel?: string) => { - const errorMessage = StorybookTestRunnerError.buildErrorMessage( + const errorMessage = StorybookTestRunnerError.buildErrorMessage({ storyId, - message, + errorMessage: message, logs, - panel - ); + panel, + }); testRunner_errorMessageFormatter(errorMessage) .then((formattedMessage) => { - reject(new StorybookTestRunnerError(storyId, formattedMessage, logs, true)); + reject( + new StorybookTestRunnerError({ + storyId, + errorMessage: formattedMessage, + logs, + isMessageFormatted: true, + }) + ); }) .catch((error) => { reject( - new StorybookTestRunnerError( + new StorybookTestRunnerError({ storyId, - 'There was an error when executing the errorMessageFormatter defiend in your Storybook test-runner config file. Please fix it and rerun the tests:\n\n' + - error.message - ) + errorMessage: + 'There was an error when executing the errorMessageFormatter defiend in your Storybook test-runner config file. Please fix it and rerun the tests:\n\n' + + error.message, + }) ); }); }; @@ -432,8 +448,8 @@ async function __test(storyId: string): Promise { rejectWithFormattedError(storyId, 'Browser console errors'); return; } else if (data?.reporters) { - const a11yTestParameter = - globalThis.__STORYBOOK_PREVIEW__.currentRender?.story?.parameters?.a11y?.test; + const story = getStory(); + const a11yTestParameter = story?.parameters?.a11y?.test; const a11yReport = data.reporters.find((reporter: any) => reporter.type === 'a11y'); if ( a11yReport.result?.violations?.length > 0 && @@ -444,12 +460,13 @@ async function __test(storyId: string): Promise { rejectWithFormattedError(storyId, violations.long, A11Y_PANEL); return; } else if (violations && a11yTestParameter === 'todo') { - const warningMessage = StorybookTestRunnerError.buildErrorMessage( + const warningMessage = StorybookTestRunnerError.buildErrorMessage({ storyId, - yellow(violations.short), - [], - A11Y_PANEL - ); + errorMessagePrefix: `--------------------------\n${story.title} > ${story.name}`, + errorMessage: yellow(violations.short), + logs, + panel: A11Y_PANEL, + }); logToPage(warningMessage); } } @@ -549,7 +566,7 @@ function expectToHaveNoViolations(results: any): { long: string; short: string } let formatedViolations = reporter(violations); return { - long: 'expect(received).toHaveNoViolations(expected)' + '\n\n' + `${formatedViolations}`, + long: formatedViolations, short: `Found ${violations.length} a11y violations, run the test with 'a11y: { test: 'error' }' parameter to see the full report or debug it directly in Storybook.`, }; } From ce1522eb81a4e0ca35bfcaac672111e86e85ec7b Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 1 May 2025 09:34:00 +0200 Subject: [PATCH 06/11] support a11y disable parameter --- src/setup-page-script.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/setup-page-script.ts b/src/setup-page-script.ts index 51e2d0e4..dfd1e1f8 100644 --- a/src/setup-page-script.ts +++ b/src/setup-page-script.ts @@ -449,9 +449,11 @@ async function __test(storyId: string): Promise { return; } else if (data?.reporters) { const story = getStory(); - const a11yTestParameter = story?.parameters?.a11y?.test; + const a11yParameter = story?.parameters?.a11y; + const a11yTestParameter = a11yParameter?.test; const a11yReport = data.reporters.find((reporter: any) => reporter.type === 'a11y'); if ( + !a11yParameter?.disable && a11yReport.result?.violations?.length > 0 && (a11yTestParameter === 'error' || a11yTestParameter === 'todo') ) { From 2b31482125960ecdaf917a5184c8df9eabb6cd35 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 1 May 2025 09:57:35 +0200 Subject: [PATCH 07/11] respect a11y globals and disable parameter --- src/setup-page-script.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/setup-page-script.ts b/src/setup-page-script.ts index dfd1e1f8..15382d8a 100644 --- a/src/setup-page-script.ts +++ b/src/setup-page-script.ts @@ -449,14 +449,18 @@ async function __test(storyId: string): Promise { return; } else if (data?.reporters) { const story = getStory(); - const a11yParameter = story?.parameters?.a11y; + const a11yGlobals = story.globals?.a11y; + const a11yParameter = story.parameters?.a11y; const a11yTestParameter = a11yParameter?.test; const a11yReport = data.reporters.find((reporter: any) => reporter.type === 'a11y'); - if ( - !a11yParameter?.disable && - a11yReport.result?.violations?.length > 0 && - (a11yTestParameter === 'error' || a11yTestParameter === 'todo') - ) { + + const shouldRunA11yTest = + a11yParameter?.disable !== true && + a11yParameter?.test !== 'off' && + a11yGlobals?.manual !== true && + a11yReport.result?.violations?.length > 0; + + if (shouldRunA11yTest) { const violations = expectToHaveNoViolations(a11yReport.result); if (violations && a11yTestParameter === 'error') { rejectWithFormattedError(storyId, violations.long, A11Y_PANEL); From 3415c010c2dab3ce65023969d3c036f8f617386e Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Thu, 15 May 2025 17:56:16 +1000 Subject: [PATCH 08/11] Send telemetry after test completion --- src/test-storybook.ts | 12 +++++++++++- src/util/getCliOptions.ts | 2 ++ src/util/getParsedCliOptions.ts | 13 ++++++++----- src/util/getStorybookMetadata.ts | 4 ++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/test-storybook.ts b/src/test-storybook.ts index baaa5bd2..ce56cf8e 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -9,6 +9,7 @@ import path, { join, resolve } from 'path'; import tempy from 'tempy'; import { getInterpretedFile } from 'storybook/internal/common'; import { readConfig } from 'storybook/internal/csf-tools'; +import { telemetry } from 'storybook/internal/telemetry'; import { glob } from 'glob'; import { JestOptions, getCliOptions } from './util/getCliOptions'; @@ -376,8 +377,8 @@ const main = async () => { process.env.TEST_MATCH = '**/*.test.js'; } + const { storiesPaths, lazyCompilation, disableTelemetry } = getStorybookMetadata(); if (!shouldRunIndexJson) { - const { storiesPaths, lazyCompilation } = getStorybookMetadata(); process.env.STORYBOOK_STORIES_PATTERN = storiesPaths; // 1 - We extract tags from preview file statically like it's done by the Storybook indexer. We only do this in non-index-json mode because it's not needed in that mode @@ -396,6 +397,15 @@ const main = async () => { } await executeJestPlaywright(jestOptions); + + if (!disableTelemetry && !runnerOptions.disableTelemetry) { + const t = new Date(); + // @ts-expect-error -- need to update storybookv version + await telemetry('test-run', { + runner: 'test-runner', + watch: jestOptions.includes('--watch'), + }); + } }; main().catch((e) => { diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index 99b27197..af4e4a12 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -17,6 +17,7 @@ export type CliOptions = { includeTags?: string; excludeTags?: string; skipTags?: string; + disableTelemetry?: boolean; } & Record; jestOptions: JestOptions; }; @@ -36,6 +37,7 @@ const STORYBOOK_RUNNER_COMMANDS: StorybookRunnerCommand[] = [ 'includeTags', 'excludeTags', 'skipTags', + 'disableTelemetry', ]; function copyOption( diff --git a/src/util/getParsedCliOptions.ts b/src/util/getParsedCliOptions.ts index 89e70d01..eb15a9d7 100644 --- a/src/util/getParsedCliOptions.ts +++ b/src/util/getParsedCliOptions.ts @@ -65,10 +65,7 @@ export const getParsedCliOptions = (): ParsedCliOptions => { 'coverage/storybook' ) .option('--junit', 'Indicates that test information should be reported in a junit file') - .option( - '--listTests', - 'Lists all test files that will be run, and exits' - ) + .option('--listTests', 'Lists all test files that will be run, and exits') .option( '--eject', 'Creates a local configuration file to override defaults of the test-runner. Use it only if you want to have better control over the runner configurations' @@ -84,7 +81,13 @@ export const getParsedCliOptions = (): ParsedCliOptions => { .option('--failOnConsole', 'Makes tests fail on browser console errors') .option('--includeTags ', 'Only test stories that match the specified tags') .option('--excludeTags ', 'Do not test stories that match the specified tags') - .option('--skipTags ', 'Skip test stories that match the specified tags'); + .option('--skipTags ', 'Skip test stories that match the specified tags') + .option( + '--disable-telemetry', + 'Disable sending telemetry data', + // default value is false, but if the user sets STORYBOOK_DISABLE_TELEMETRY, it can be true + process.env.STORYBOOK_DISABLE_TELEMETRY && process.env.STORYBOOK_DISABLE_TELEMETRY !== 'false' + ); program.exitOverride(); diff --git a/src/util/getStorybookMetadata.ts b/src/util/getStorybookMetadata.ts index 7ede0125..2f4e7528 100644 --- a/src/util/getStorybookMetadata.ts +++ b/src/util/getStorybookMetadata.ts @@ -25,11 +25,15 @@ export const getStorybookMetadata = () => { // @ts-expect-error -- this is added in storybook/internal/common@6.5, which we don't depend on const lazyCompilation = !!main.core?.builder?.options?.lazyCompilation; + // @ts-expect-error -- need to update to latest sb version + const disableTelemetry = !!main.core?.disableTelemetry; + return { configDir, workingDir, storiesPaths, normalizedStoriesEntries, lazyCompilation, + disableTelemetry, }; }; From 7f3f6f527e700b5213990e784c26ddc7b47dbb04 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Thu, 15 May 2025 17:58:36 +1000 Subject: [PATCH 09/11] Revert "Send telemetry after test completion" This reverts commit 3415c010c2dab3ce65023969d3c036f8f617386e. --- src/test-storybook.ts | 12 +----------- src/util/getCliOptions.ts | 2 -- src/util/getParsedCliOptions.ts | 13 +++++-------- src/util/getStorybookMetadata.ts | 4 ---- 4 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/test-storybook.ts b/src/test-storybook.ts index ce56cf8e..baaa5bd2 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -9,7 +9,6 @@ import path, { join, resolve } from 'path'; import tempy from 'tempy'; import { getInterpretedFile } from 'storybook/internal/common'; import { readConfig } from 'storybook/internal/csf-tools'; -import { telemetry } from 'storybook/internal/telemetry'; import { glob } from 'glob'; import { JestOptions, getCliOptions } from './util/getCliOptions'; @@ -377,8 +376,8 @@ const main = async () => { process.env.TEST_MATCH = '**/*.test.js'; } - const { storiesPaths, lazyCompilation, disableTelemetry } = getStorybookMetadata(); if (!shouldRunIndexJson) { + const { storiesPaths, lazyCompilation } = getStorybookMetadata(); process.env.STORYBOOK_STORIES_PATTERN = storiesPaths; // 1 - We extract tags from preview file statically like it's done by the Storybook indexer. We only do this in non-index-json mode because it's not needed in that mode @@ -397,15 +396,6 @@ const main = async () => { } await executeJestPlaywright(jestOptions); - - if (!disableTelemetry && !runnerOptions.disableTelemetry) { - const t = new Date(); - // @ts-expect-error -- need to update storybookv version - await telemetry('test-run', { - runner: 'test-runner', - watch: jestOptions.includes('--watch'), - }); - } }; main().catch((e) => { diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index af4e4a12..99b27197 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -17,7 +17,6 @@ export type CliOptions = { includeTags?: string; excludeTags?: string; skipTags?: string; - disableTelemetry?: boolean; } & Record; jestOptions: JestOptions; }; @@ -37,7 +36,6 @@ const STORYBOOK_RUNNER_COMMANDS: StorybookRunnerCommand[] = [ 'includeTags', 'excludeTags', 'skipTags', - 'disableTelemetry', ]; function copyOption( diff --git a/src/util/getParsedCliOptions.ts b/src/util/getParsedCliOptions.ts index eb15a9d7..89e70d01 100644 --- a/src/util/getParsedCliOptions.ts +++ b/src/util/getParsedCliOptions.ts @@ -65,7 +65,10 @@ export const getParsedCliOptions = (): ParsedCliOptions => { 'coverage/storybook' ) .option('--junit', 'Indicates that test information should be reported in a junit file') - .option('--listTests', 'Lists all test files that will be run, and exits') + .option( + '--listTests', + 'Lists all test files that will be run, and exits' + ) .option( '--eject', 'Creates a local configuration file to override defaults of the test-runner. Use it only if you want to have better control over the runner configurations' @@ -81,13 +84,7 @@ export const getParsedCliOptions = (): ParsedCliOptions => { .option('--failOnConsole', 'Makes tests fail on browser console errors') .option('--includeTags ', 'Only test stories that match the specified tags') .option('--excludeTags ', 'Do not test stories that match the specified tags') - .option('--skipTags ', 'Skip test stories that match the specified tags') - .option( - '--disable-telemetry', - 'Disable sending telemetry data', - // default value is false, but if the user sets STORYBOOK_DISABLE_TELEMETRY, it can be true - process.env.STORYBOOK_DISABLE_TELEMETRY && process.env.STORYBOOK_DISABLE_TELEMETRY !== 'false' - ); + .option('--skipTags ', 'Skip test stories that match the specified tags'); program.exitOverride(); diff --git a/src/util/getStorybookMetadata.ts b/src/util/getStorybookMetadata.ts index 2f4e7528..7ede0125 100644 --- a/src/util/getStorybookMetadata.ts +++ b/src/util/getStorybookMetadata.ts @@ -25,15 +25,11 @@ export const getStorybookMetadata = () => { // @ts-expect-error -- this is added in storybook/internal/common@6.5, which we don't depend on const lazyCompilation = !!main.core?.builder?.options?.lazyCompilation; - // @ts-expect-error -- need to update to latest sb version - const disableTelemetry = !!main.core?.disableTelemetry; - return { configDir, workingDir, storiesPaths, normalizedStoriesEntries, lazyCompilation, - disableTelemetry, }; }; From 323ba3dc5536c848f67e5a92f5f7a4ba0f01df68 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Sun, 25 May 2025 14:20:35 +0200 Subject: [PATCH 10/11] fix a11y report checking bug --- src/setup-page-script.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setup-page-script.ts b/src/setup-page-script.ts index 15382d8a..b81e8563 100644 --- a/src/setup-page-script.ts +++ b/src/setup-page-script.ts @@ -458,7 +458,7 @@ async function __test(storyId: string): Promise { a11yParameter?.disable !== true && a11yParameter?.test !== 'off' && a11yGlobals?.manual !== true && - a11yReport.result?.violations?.length > 0; + a11yReport?.result?.violations?.length > 0; if (shouldRunA11yTest) { const violations = expectToHaveNoViolations(a11yReport.result); From 8dec3cc15ef878e5b4a67460dadc16111485c6ce Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Sat, 7 Jun 2025 13:42:49 +0200 Subject: [PATCH 11/11] Add telemetry to test run Co-authored-by: Tom Coleman --- README.md | 1 + src/test-storybook.ts | 21 ++++++++++++++++++++- src/util/getCliOptions.ts | 2 ++ src/util/getParsedCliOptions.ts | 13 ++++++++----- src/util/getStorybookMetadata.ts | 5 +++++ 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a7ca95fd..eda91f85 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,7 @@ Usage: test-storybook [options] | `--includeTags` | (experimental) Only test stories that match the specified tags, comma separated
`test-storybook --includeTags="test-only"` | | `--excludeTags` | (experimental) Do not test stories that match the specified tags, comma separated
`test-storybook --excludeTags="broken-story,todo"` | | `--skipTags` | (experimental) Do not test stories that match the specified tags and mark them as skipped in the CLI output, comma separated
`test-storybook --skipTags="design"` | +| `--disable-telemetry` | Disable sending telemetry data
`test-storybook --disable-telemetry` | ## Ejecting configuration diff --git a/src/test-storybook.ts b/src/test-storybook.ts index baaa5bd2..a8115ffb 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -9,6 +9,7 @@ import path, { join, resolve } from 'path'; import tempy from 'tempy'; import { getInterpretedFile } from 'storybook/internal/common'; import { readConfig } from 'storybook/internal/csf-tools'; +import { telemetry } from 'storybook/internal/telemetry'; import { glob } from 'glob'; import { JestOptions, getCliOptions } from './util/getCliOptions'; @@ -376,8 +377,9 @@ const main = async () => { process.env.TEST_MATCH = '**/*.test.js'; } + const { storiesPaths, lazyCompilation, disableTelemetry, enableCrashReports } = + getStorybookMetadata(); if (!shouldRunIndexJson) { - const { storiesPaths, lazyCompilation } = getStorybookMetadata(); process.env.STORYBOOK_STORIES_PATTERN = storiesPaths; // 1 - We extract tags from preview file statically like it's done by the Storybook indexer. We only do this in non-index-json mode because it's not needed in that mode @@ -395,6 +397,23 @@ const main = async () => { process.env.TEST_CHECK_CONSOLE = 'true'; } + if (!disableTelemetry && !runnerOptions.disableTelemetry) { + // NOTE: we start telemetry immediately but do not wait on it. Typically it should complete + // before the tests do. If not we may miss the event, we are OK with that. + telemetry( + // @ts-expect-error -- need to update storybook version + 'test-run', + { + runner: 'test-runner', + watch: jestOptions.includes('--watch'), + }, + { + configDir: runnerOptions.configDir, + enableCrashReports, + } + ); + } + await executeJestPlaywright(jestOptions); }; diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index 99b27197..af4e4a12 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -17,6 +17,7 @@ export type CliOptions = { includeTags?: string; excludeTags?: string; skipTags?: string; + disableTelemetry?: boolean; } & Record; jestOptions: JestOptions; }; @@ -36,6 +37,7 @@ const STORYBOOK_RUNNER_COMMANDS: StorybookRunnerCommand[] = [ 'includeTags', 'excludeTags', 'skipTags', + 'disableTelemetry', ]; function copyOption( diff --git a/src/util/getParsedCliOptions.ts b/src/util/getParsedCliOptions.ts index 89e70d01..eb15a9d7 100644 --- a/src/util/getParsedCliOptions.ts +++ b/src/util/getParsedCliOptions.ts @@ -65,10 +65,7 @@ export const getParsedCliOptions = (): ParsedCliOptions => { 'coverage/storybook' ) .option('--junit', 'Indicates that test information should be reported in a junit file') - .option( - '--listTests', - 'Lists all test files that will be run, and exits' - ) + .option('--listTests', 'Lists all test files that will be run, and exits') .option( '--eject', 'Creates a local configuration file to override defaults of the test-runner. Use it only if you want to have better control over the runner configurations' @@ -84,7 +81,13 @@ export const getParsedCliOptions = (): ParsedCliOptions => { .option('--failOnConsole', 'Makes tests fail on browser console errors') .option('--includeTags ', 'Only test stories that match the specified tags') .option('--excludeTags ', 'Do not test stories that match the specified tags') - .option('--skipTags ', 'Skip test stories that match the specified tags'); + .option('--skipTags ', 'Skip test stories that match the specified tags') + .option( + '--disable-telemetry', + 'Disable sending telemetry data', + // default value is false, but if the user sets STORYBOOK_DISABLE_TELEMETRY, it can be true + process.env.STORYBOOK_DISABLE_TELEMETRY && process.env.STORYBOOK_DISABLE_TELEMETRY !== 'false' + ); program.exitOverride(); diff --git a/src/util/getStorybookMetadata.ts b/src/util/getStorybookMetadata.ts index 7ede0125..bf496bd8 100644 --- a/src/util/getStorybookMetadata.ts +++ b/src/util/getStorybookMetadata.ts @@ -25,11 +25,16 @@ export const getStorybookMetadata = () => { // @ts-expect-error -- this is added in storybook/internal/common@6.5, which we don't depend on const lazyCompilation = !!main.core?.builder?.options?.lazyCompilation; + // @ts-expect-error -- need to update to latest sb version + const { disableTelemetry, enableCrashReports } = main.core || {}; + return { configDir, workingDir, storiesPaths, normalizedStoriesEntries, lazyCompilation, + disableTelemetry, + enableCrashReports, }; };