Fix Storybook runner tests
This commit is contained in:
+3
-26
@@ -5,10 +5,9 @@ const config = {
|
|||||||
"../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)",
|
"../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)",
|
||||||
],
|
],
|
||||||
addons: [
|
addons: [
|
||||||
"@storybook/addon-actions",
|
"@storybook/addon-essentials",
|
||||||
"@storybook/addon-a11y",
|
|
||||||
"@storybook/addon-interactions",
|
"@storybook/addon-interactions",
|
||||||
"@chromatic-com/storybook",
|
"@storybook/addon-a11y",
|
||||||
],
|
],
|
||||||
framework: {
|
framework: {
|
||||||
name: "@storybook/nextjs-vite",
|
name: "@storybook/nextjs-vite",
|
||||||
@@ -16,30 +15,8 @@ const config = {
|
|||||||
},
|
},
|
||||||
staticDirs: ["../public"],
|
staticDirs: ["../public"],
|
||||||
|
|
||||||
// Auto-detect environment and apply appropriate settings
|
|
||||||
managerHead: (head) => {
|
|
||||||
// Only add base href for GitHub Pages (when CI=true or specific environment)
|
|
||||||
if (process.env.CI || process.env.STORYBOOK_BASE_PATH) {
|
|
||||||
return `${head}<base href="/communityrulestorybook/">`;
|
|
||||||
}
|
|
||||||
return head;
|
|
||||||
},
|
|
||||||
|
|
||||||
previewHead: (head) => {
|
|
||||||
// Only add base href for GitHub Pages
|
|
||||||
if (process.env.CI || process.env.STORYBOOK_BASE_PATH) {
|
|
||||||
return `${head}<base href="/communityrulestorybook/">`;
|
|
||||||
}
|
|
||||||
return head;
|
|
||||||
},
|
|
||||||
|
|
||||||
async viteFinal(cfg) {
|
|
||||||
// Set base path for GitHub Pages when needed
|
|
||||||
if (process.env.CI || process.env.STORYBOOK_BASE_PATH) {
|
|
||||||
cfg.base = "/communityrulestorybook/";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure esbuild treats .js as JSX during dep pre-bundling
|
// Ensure esbuild treats .js as JSX during dep pre-bundling
|
||||||
|
async viteFinal(cfg) {
|
||||||
cfg.optimizeDeps ??= {};
|
cfg.optimizeDeps ??= {};
|
||||||
cfg.optimizeDeps.esbuildOptions ??= {};
|
cfg.optimizeDeps.esbuildOptions ??= {};
|
||||||
cfg.optimizeDeps.esbuildOptions.loader = {
|
cfg.optimizeDeps.esbuildOptions.loader = {
|
||||||
|
|||||||
+1
-28
@@ -1,33 +1,8 @@
|
|||||||
import "../app/globals.css";
|
import "../app/globals.css";
|
||||||
|
|
||||||
// Import Google Fonts for Storybook
|
|
||||||
import { Inter, Bricolage_Grotesque, Space_Grotesk } from "next/font/google";
|
|
||||||
|
|
||||||
const inter = Inter({
|
|
||||||
subsets: ["latin"],
|
|
||||||
weight: ["400", "500", "600", "700"],
|
|
||||||
variable: "--font-inter",
|
|
||||||
display: "swap",
|
|
||||||
});
|
|
||||||
|
|
||||||
const bricolageGrotesque = Bricolage_Grotesque({
|
|
||||||
subsets: ["latin"],
|
|
||||||
weight: ["400", "500", "700", "800"],
|
|
||||||
variable: "--font-bricolage-grotesque",
|
|
||||||
display: "swap",
|
|
||||||
});
|
|
||||||
|
|
||||||
const spaceGrotesk = Space_Grotesk({
|
|
||||||
subsets: ["latin"],
|
|
||||||
weight: ["400", "500", "700"],
|
|
||||||
variable: "--font-space-grotesk",
|
|
||||||
display: "swap",
|
|
||||||
});
|
|
||||||
|
|
||||||
/** @type { import('@storybook/react').Preview } */
|
/** @type { import('@storybook/react').Preview } */
|
||||||
const preview = {
|
const preview = {
|
||||||
parameters: {
|
parameters: {
|
||||||
actions: { argTypesRegex: "^on[A-Z].*" },
|
|
||||||
controls: {
|
controls: {
|
||||||
matchers: {
|
matchers: {
|
||||||
color: /(background|color)$/i,
|
color: /(background|color)$/i,
|
||||||
@@ -37,9 +12,7 @@ const preview = {
|
|||||||
},
|
},
|
||||||
decorators: [
|
decorators: [
|
||||||
(Story) => (
|
(Story) => (
|
||||||
<div
|
<div className="font-sans">
|
||||||
className={`${inter.variable} ${bricolageGrotesque.variable} ${spaceGrotesk.variable} font-sans`}
|
|
||||||
>
|
|
||||||
<Story />
|
<Story />
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
|
|||||||
Generated
+2276
-2297
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -42,21 +42,20 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@axe-core/playwright": "^4.10.2",
|
"@axe-core/playwright": "^4.10.2",
|
||||||
"@chromatic-com/storybook": "^4.1.0",
|
|
||||||
"@eslint/eslintrc": "^3",
|
"@eslint/eslintrc": "^3",
|
||||||
"@lhci/cli": "^0.15.1",
|
"@lhci/cli": "^0.15.1",
|
||||||
"@playwright/test": "^1.55.0",
|
"@playwright/test": "^1.55.0",
|
||||||
"@storybook/addon-a11y": "^9.1.2",
|
"@storybook/addon-a11y": "^9.1.2",
|
||||||
"@storybook/addon-actions": "^9.0.8",
|
"@storybook/addon-actions": "^9.0.8",
|
||||||
"@storybook/addon-docs": "^9.1.2",
|
"@storybook/addon-docs": "^9.1.2",
|
||||||
"@storybook/addon-essentials": "^8.6.14",
|
"@storybook/addon-essentials": "^9.0.0-alpha.12",
|
||||||
"@storybook/addon-interactions": "^8.6.14",
|
"@storybook/addon-interactions": "^9.0.0-alpha.10",
|
||||||
"@storybook/addon-onboarding": "^9.1.2",
|
"@storybook/addon-onboarding": "^9.1.2",
|
||||||
"@storybook/addon-styling-webpack": "^2.0.0",
|
"@storybook/addon-styling-webpack": "^2.0.0",
|
||||||
"@storybook/addon-viewport": "^9.0.8",
|
"@storybook/addon-viewport": "^9.0.8",
|
||||||
"@storybook/addon-vitest": "^9.1.2",
|
"@storybook/addon-vitest": "^9.1.2",
|
||||||
"@storybook/nextjs-vite": "^9.1.2",
|
"@storybook/nextjs-vite": "^9.1.2",
|
||||||
"@storybook/test": "^8.6.14",
|
"@storybook/test": "^9.0.0-alpha.2",
|
||||||
"@storybook/test-runner": "^0.23.0",
|
"@storybook/test-runner": "^0.23.0",
|
||||||
"@svgr/webpack": "^8.1.0",
|
"@svgr/webpack": "^8.1.0",
|
||||||
"@tailwindcss/postcss": "^4.1.11",
|
"@tailwindcss/postcss": "^4.1.11",
|
||||||
|
|||||||
@@ -197,18 +197,18 @@ export const Interactive = {
|
|||||||
const canvas = within(canvasElement);
|
const canvas = within(canvasElement);
|
||||||
|
|
||||||
await step("Click navigation items", async () => {
|
await step("Click navigation items", async () => {
|
||||||
const useCasesLink = canvas.getByRole("link", { name: /use cases/i });
|
const useCasesLink = canvas.getByRole("menuitem", { name: /Use cases/i });
|
||||||
await userEvent.click(useCasesLink);
|
await userEvent.click(useCasesLink);
|
||||||
|
|
||||||
const learnLink = canvas.getByRole("link", { name: /learn/i });
|
const learnLink = canvas.getByRole("menuitem", { name: /Learn/i });
|
||||||
await userEvent.click(learnLink);
|
await userEvent.click(learnLink);
|
||||||
|
|
||||||
const aboutLink = canvas.getByRole("link", { name: /about/i });
|
const aboutLink = canvas.getByRole("menuitem", { name: /About/i });
|
||||||
await userEvent.click(aboutLink);
|
await userEvent.click(aboutLink);
|
||||||
});
|
});
|
||||||
|
|
||||||
await step("Click authentication elements", async () => {
|
await step("Click authentication elements", async () => {
|
||||||
const loginLink = canvas.getByRole("link", {
|
const loginLink = canvas.getByRole("menuitem", {
|
||||||
name: /log in to your account/i,
|
name: /log in to your account/i,
|
||||||
});
|
});
|
||||||
await userEvent.click(loginLink);
|
await userEvent.click(loginLink);
|
||||||
@@ -238,22 +238,22 @@ export const HoverStates = {
|
|||||||
const canvas = within(canvasElement);
|
const canvas = within(canvasElement);
|
||||||
|
|
||||||
await step("Hover over navigation items", async () => {
|
await step("Hover over navigation items", async () => {
|
||||||
const useCasesLink = canvas.getByRole("link", { name: /use cases/i });
|
const useCasesLink = canvas.getByRole("menuitem", { name: /Use cases/i });
|
||||||
await userEvent.hover(useCasesLink);
|
await userEvent.hover(useCasesLink);
|
||||||
// Wait for hover state to be visible
|
// Wait for hover state to be visible
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
|
|
||||||
const learnLink = canvas.getByRole("link", { name: /learn/i });
|
const learnLink = canvas.getByRole("menuitem", { name: /Learn/i });
|
||||||
await userEvent.hover(learnLink);
|
await userEvent.hover(learnLink);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
|
|
||||||
const aboutLink = canvas.getByRole("link", { name: /about/i });
|
const aboutLink = canvas.getByRole("menuitem", { name: /About/i });
|
||||||
await userEvent.hover(aboutLink);
|
await userEvent.hover(aboutLink);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
});
|
});
|
||||||
|
|
||||||
await step("Hover over authentication elements", async () => {
|
await step("Hover over authentication elements", async () => {
|
||||||
const loginLink = canvas.getByRole("link", {
|
const loginLink = canvas.getByRole("menuitem", {
|
||||||
name: /log in to your account/i,
|
name: /log in to your account/i,
|
||||||
});
|
});
|
||||||
await userEvent.hover(loginLink);
|
await userEvent.hover(loginLink);
|
||||||
@@ -285,21 +285,21 @@ export const FocusStates = {
|
|||||||
const canvas = within(canvasElement);
|
const canvas = within(canvasElement);
|
||||||
|
|
||||||
await step("Focus on navigation items", async () => {
|
await step("Focus on navigation items", async () => {
|
||||||
const useCasesLink = canvas.getByRole("link", { name: /use cases/i });
|
const useCasesLink = canvas.getByRole("menuitem", { name: /Use cases/i });
|
||||||
useCasesLink.focus();
|
useCasesLink.focus();
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
|
|
||||||
const learnLink = canvas.getByRole("link", { name: /learn/i });
|
const learnLink = canvas.getByRole("menuitem", { name: /Learn/i });
|
||||||
learnLink.focus();
|
learnLink.focus();
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
|
|
||||||
const aboutLink = canvas.getByRole("link", { name: /about/i });
|
const aboutLink = canvas.getByRole("menuitem", { name: /About/i });
|
||||||
aboutLink.focus();
|
aboutLink.focus();
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
});
|
});
|
||||||
|
|
||||||
await step("Focus on authentication elements", async () => {
|
await step("Focus on authentication elements", async () => {
|
||||||
const loginLink = canvas.getByRole("link", {
|
const loginLink = canvas.getByRole("menuitem", {
|
||||||
name: /log in to your account/i,
|
name: /log in to your account/i,
|
||||||
});
|
});
|
||||||
loginLink.focus();
|
loginLink.focus();
|
||||||
|
|||||||
Reference in New Issue
Block a user