diff --git a/packages/addons/_tests/_setup/global.ts b/packages/addons/_tests/_setup/global.ts index c078a3c67..734f0c0d1 100644 --- a/packages/addons/_tests/_setup/global.ts +++ b/packages/addons/_tests/_setup/global.ts @@ -1,11 +1,26 @@ import { fileURLToPath } from 'node:url'; import { setup, type ProjectVariant } from 'sv/testing'; import type { TestProject } from 'vitest/node'; +import process from 'node:process'; +import { exec } from 'tinyexec'; + +import { STORYBOOK_VERSION } from '../../storybook/index.ts'; const TEST_DIR = fileURLToPath(new URL('../../../../.test-output/addons/', import.meta.url)); const variants: ProjectVariant[] = ['kit-js', 'kit-ts', 'vite-js', 'vite-ts']; +const CI = Boolean(process.env.CI); export default async function ({ provide }: TestProject) { + if (CI) { + // prefetch the storybook cli during ci to reduce fetching errors in tests + const { stdout } = await exec('pnpm', [ + 'dlx', + `create-storybook@${STORYBOOK_VERSION}`, + '--version' + ]); + console.info('storybook version:', stdout); + } + // downloads different project configurations (sveltekit, js/ts, vite-only, etc) const { templatesDir } = await setup({ cwd: TEST_DIR, variants }); diff --git a/packages/addons/_tests/storybook/test.ts b/packages/addons/_tests/storybook/test.ts index 5ca86e022..a651fadb6 100644 --- a/packages/addons/_tests/storybook/test.ts +++ b/packages/addons/_tests/storybook/test.ts @@ -1,7 +1,4 @@ -import process from 'node:process'; -import { execSync } from 'node:child_process'; import { expect } from '@playwright/test'; -import { beforeAll } from 'vitest'; import { setupTest } from '../_setup/suite.ts'; import storybook from '../../storybook/index.ts'; import eslint from '../../eslint/index.ts'; @@ -13,31 +10,19 @@ const { test, testCases, prepareServer } = setupTest( ); let port = 6006; -const CI = Boolean(process.env.CI); -beforeAll(() => { - if (CI) { - // prefetch the storybook cli during ci to reduce fetching errors in tests - execSync('pnpm dlx create-storybook@latest --version'); - } -}); - -test.for(testCases)( - 'storybook $variant', - { concurrent: !CI }, - async (testCase, { page, ...ctx }) => { - const cwd = ctx.cwd(testCase); +test.concurrent.for(testCases)('storybook $variant', async (testCase, { page, ...ctx }) => { + const cwd = ctx.cwd(testCase); - const { close } = await prepareServer({ - cwd, - page, - previewCommand: `pnpm storybook -p ${++port} --ci`, - buildCommand: '' - }); - // kill server process when we're done - ctx.onTestFinished(async () => await close()); + const { close } = await prepareServer({ + cwd, + page, + previewCommand: `pnpm storybook -p ${++port} --ci`, + buildCommand: '' + }); + // kill server process when we're done + ctx.onTestFinished(async () => await close()); - expect(page.locator('main .sb-bar')).toBeTruthy(); - expect(page.locator('#storybook-preview-wrapper')).toBeTruthy(); - } -); + expect(page.locator('main .sb-bar')).toBeTruthy(); + expect(page.locator('#storybook-preview-wrapper')).toBeTruthy(); +}); diff --git a/packages/addons/package.json b/packages/addons/package.json index 085d39d3b..2046ab500 100644 --- a/packages/addons/package.json +++ b/packages/addons/package.json @@ -15,6 +15,7 @@ "@sveltejs/cli-core": "workspace:*" }, "devDependencies": { - "package-manager-detector": "^0.2.11" + "package-manager-detector": "^0.2.11", + "tinyexec": "^0.3.2" } } diff --git a/packages/addons/storybook/index.ts b/packages/addons/storybook/index.ts index dd3b76393..d524a8a26 100644 --- a/packages/addons/storybook/index.ts +++ b/packages/addons/storybook/index.ts @@ -2,6 +2,8 @@ import process from 'node:process'; import { defineAddon } from '@sveltejs/cli-core'; import { getNodeTypesVersion } from '../common.ts'; +export const STORYBOOK_VERSION = '0.0.0-pr-32717-sha-f340a68b'; + export default defineAddon({ id: 'storybook', shortDescription: 'frontend workshop', @@ -12,7 +14,12 @@ export default defineAddon({ runsAfter('eslint'); }, run: async ({ sv }) => { - const args = ['create-storybook@latest', '--skip-install', '--no-dev']; + const args = [ + `create-storybook@${STORYBOOK_VERSION}`, + '--skip-install', + '--no-dev', + '--no-features' + ]; // skips the onboarding prompt during tests if (process.env.NODE_ENV?.toLowerCase() === 'test') args.push('--yes'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d6fd0e19..2dfbf1915 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,9 @@ importers: package-manager-detector: specifier: ^0.2.11 version: 0.2.11 + tinyexec: + specifier: ^0.3.2 + version: 0.3.2 packages/cli: devDependencies: