Skip to content

Commit

Permalink
SvelteKit: Add portable stories vite plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
yannbf committed Aug 19, 2024
1 parent 3206588 commit 705967e
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 20 deletions.
6 changes: 3 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -723,7 +723,7 @@ workflows:
requires:
- build-sandboxes
- vitest-integration:
parallelism: 4
parallelism: 5
requires:
- create-sandboxes
- bench:
Expand Down Expand Up @@ -789,7 +789,7 @@ workflows:
requires:
- build-sandboxes
- vitest-integration:
parallelism: 4
parallelism: 5
requires:
- create-sandboxes
- test-portable-stories:
Expand Down Expand Up @@ -856,7 +856,7 @@ workflows:
requires:
- build-sandboxes
- vitest-integration:
parallelism: 8
parallelism: 11
requires:
- create-sandboxes
- test-portable-stories:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
import { enhance } from '$app/forms';
</script>

<form use:enhance>
<form use:enhance method="post">
<button>enhance</button>
</form>
8 changes: 3 additions & 5 deletions code/lib/cli-storybook/src/sandbox-templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -449,8 +449,7 @@ const baseTemplates = {
renderer: '@storybook/svelte',
builder: '@storybook/builder-vite',
},
// TODO: remove vitest-integration filter once project annotations exist for sveltekit
skipTasks: ['e2e-tests-dev', 'bench', 'vitest-integration'],
skipTasks: ['e2e-tests-dev', 'bench'],
},
'svelte-kit/skeleton-ts': {
name: 'SvelteKit Latest (Vite | TypeScript)',
Expand All @@ -461,8 +460,7 @@ const baseTemplates = {
renderer: '@storybook/svelte',
builder: '@storybook/builder-vite',
},
// TODO: remove vitest-integration filter once project annotations exist for sveltekit
skipTasks: ['e2e-tests-dev', 'bench', 'vitest-integration'],
skipTasks: ['e2e-tests-dev', 'bench'],
},
'svelte-kit/prerelease-ts': {
name: 'SvelteKit Prerelease (Vite | TypeScript)',
Expand All @@ -473,7 +471,7 @@ const baseTemplates = {
renderer: '@storybook/svelte',
builder: '@storybook/builder-vite',
},
skipTasks: ['e2e-tests-dev', 'bench', 'vitest-integration'],
skipTasks: ['e2e-tests-dev', 'bench'],
},
'lit-vite/default-js': {
name: 'Lit Latest (Vite | JavaScript)',
Expand Down
37 changes: 26 additions & 11 deletions scripts/tasks/sandbox-parts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,17 +360,40 @@ async function linkPackageStories(
);
}

const getVitestPluginInfo = (details: TemplateDetails) => {
let frameworkPluginImport = '';
let frameworkPluginCall = '';

const framework = details.template.expected.framework;
const isNextjs = framework.includes('nextjs');
const isSveltekit = framework.includes('sveltekit');

if (isNextjs) {
frameworkPluginImport = "import vitePluginNext from 'vite-plugin-storybook-nextjs'";
frameworkPluginCall = 'vitePluginNext()';
}

if (isSveltekit) {
frameworkPluginImport = "import { storybookSveltekitPlugin } from '@storybook/sveltekit/vite'";
frameworkPluginCall = 'storybookSveltekitPlugin()';
}

return { frameworkPluginImport, frameworkPluginCall };
};

export async function setupVitest(details: TemplateDetails, options: PassedOptionValues) {
const { sandboxDir, template } = details;

const isVue = template.expected.renderer === '@storybook/vue3';
const isNextjs = template.expected.framework.includes('nextjs');
const { frameworkPluginCall, frameworkPluginImport } = getVitestPluginInfo(details);
// const isAngular = template.expected.framework === '@storybook/angular';

const portableStoriesFrameworks = [
'@storybook/nextjs',
'@storybook/experimental-nextjs-vite',
// TODO: add sveltekit and angular once we enable their sandboxes
'@storybook/sveltekit',
// TODO: add angular once we enable their sandboxes
];
const storybookPackage = portableStoriesFrameworks.includes(template.expected.framework)
? template.expected.framework
Expand Down Expand Up @@ -409,7 +432,7 @@ export async function setupVitest(details: TemplateDetails, options: PassedOptio
dedent`
import { defineWorkspace, defaultExclude } from "vitest/config";
import { storybookTest } from "@storybook/experimental-addon-vitest/plugin";
${isNextjs ? "import vitePluginNext from 'vite-plugin-storybook-nextjs'" : ''}
${frameworkPluginImport}
export default defineWorkspace([
{
Expand All @@ -421,7 +444,7 @@ export async function setupVitest(details: TemplateDetails, options: PassedOptio
include: ["vitest"],
},
}),
${isNextjs ? 'vitePluginNext(),' : ''}
${frameworkPluginCall}
],
${
isNextjs
Expand Down Expand Up @@ -452,14 +475,6 @@ export async function setupVitest(details: TemplateDetails, options: PassedOptio
...defaultExclude,
// TODO: investigate TypeError: Cannot read properties of null (reading 'useContext')
"**/*argtypes*",
// TODO (SVELTEKIT): Failures related to missing framework annotations
"**/frameworks/sveltekit_svelte-kit-skeleton-ts/navigation.stories*",
"**/frameworks/sveltekit_svelte-kit-skeleton-ts/hrefs.stories*",
// TODO (SVELTEKIT): Investigate Error: use:enhance can only be used on <form> fields with method="POST"
"**/frameworks/sveltekit_svelte-kit-skeleton-ts/forms.stories*",
// TODO (SVELTE|SVELTEKIT): Typescript preprocessor issue
"**/frameworks/svelte-vite_svelte-vite-default-ts/ts-docs.stories.*",
"**/frameworks/sveltekit_svelte-kit-skeleton-ts/ts-docs.stories.*",
],
/**
* TODO: Either fix or acknowledge limitation of:
Expand Down

0 comments on commit 705967e

Please sign in to comment.