Skip to content
Merged
Prev Previous commit
Next Next commit
Merge branch 'norbert/custom-vitest-config-support' of github.com:sto…
…rybookjs/storybook into norbert/vitest-support-preview-html
  • Loading branch information
JReinhold committed Dec 10, 2024
commit 49db3b8ca7d134306ad1ec9da0baddff59362bbf
52 changes: 4 additions & 48 deletions code/addons/test/src/vitest-plugin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,7 @@ export const storybookTest = async (options?: UserOptions): Promise<Plugin> => {
workingDir: WORKING_DIR,
};

let previewLevelTags: string[];
let storiesGlobs: StoriesEntry[];
let storiesFiles: string[];

const storybookOptions = await experimental_loadStorybook({
const { presets } = await experimental_loadStorybook({
configDir: finalOptions.configDir,
packageJson: {},
});
Expand Down Expand Up @@ -118,8 +114,6 @@ export const storybookTest = async (options?: UserOptions): Promise<Plugin> => {
name: 'vite-plugin-storybook-test',
enforce: 'pre',
async transformIndexHtml(html) {
const { presets } = storybookOptions;

const [headHtmlSnippet, bodyHtmlSnippet] = await Promise.all([
presets.apply('previewHead'),
presets.apply('previewBody'),
Expand All @@ -129,7 +123,9 @@ export const storybookTest = async (options?: UserOptions): Promise<Plugin> => {
.replace('</head>', `${headHtmlSnippet ?? ''}</head>`)
.replace('<body>', `<body>${bodyHtmlSnippet ?? ''}`);
},
async config(input) {
async config(inputConfig_DoNotMutate) {
// ! We're not mutating the input config, instead we're returning a new partial config
// ! see https://vite.dev/guide/api-plugin.html#config
try {
await validateConfigurationFiles(finalOptions.configDir);
} catch (err) {
Expand All @@ -139,42 +135,6 @@ export const storybookTest = async (options?: UserOptions): Promise<Plugin> => {
});
}

const { presets } = storybookOptions;

// performance optimization: load all in parallel
const [
//
framework,
storiesGlobsData,
indexers,
docsOptions,
storybookEnv,
viteConfigFromStorybook,
previewLevelTagsData,
] = await Promise.all([
//
presets.apply('framework', undefined),
presets.apply('stories'),
presets.apply('experimental_indexers', []),
presets.apply<DocsOptions>('docs', {}),
presets.apply('env', {}),
presets.apply('viteFinal', {}),

extractTagsFromPreview(finalOptions.configDir),
]);

const generator = new StoryIndexGenerator(normalizeStories(storiesGlobsData, directories), {
...directories,
indexers: indexers,
docs: docsOptions,
});

await generator.initialize();

storiesGlobs = storiesGlobsData;
storiesFiles = generator.storyFileNames();
previewLevelTags = previewLevelTagsData;

const frameworkName = typeof framework === 'string' ? framework : framework.name;

// If we end up needing to know if we are running in browser mode later
Expand Down Expand Up @@ -289,10 +249,6 @@ export const storybookTest = async (options?: UserOptions): Promise<Plugin> => {
return config;
},
async configureServer(server) {
const { presets } = storybookOptions;
const statics: ReturnType<typeof mapStaticDir>[] = [];
const staticDirs = await presets.apply('staticDirs', []);

for (const staticDir of staticDirs) {
try {
const { staticPath, targetEndpoint } = mapStaticDir(staticDir, directories.configDir);
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.