import { fileURLToPath } from 'node:url' import { mergeConfig, defineConfig, configDefaults } from 'vitest/config' import viteConfig from './vite.config' import storybookTest from '@storybook/addon-vitest/vitest-plugin' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import path from 'node:path' const dirname = typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url)) export default mergeConfig( viteConfig, defineConfig({ optimizeDeps: { include: ['vue'], }, test: { environment: 'jsdom', exclude: [...configDefaults.exclude, 'e2e/**', '**/*.spec.*'], root: fileURLToPath(new URL('./', import.meta.url)), passWithNoTests: true, // More info at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon projects: [ { test: { name: 'unit', environment: 'jsdom', exclude: [...configDefaults.exclude, 'e2e/**', '**/*.spec.*'], root: fileURLToPath(new URL('./', import.meta.url)), setupFiles: ['unit/vitest.setup.ts'], }, plugins: [vue(), vueJsx()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, }, { extends: true, plugins: [ /* * The plugin will run tests for the stories defined in your Storybook config * See options at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon#storybooktest */ storybookTest({ configDir: path.join(dirname, '.storybook'), }), ], test: { name: 'storybook', browser: { enabled: true, headless: true, provider: 'playwright', instances: [ { browser: 'chromium', }, ], }, setupFiles: ['.storybook/vitest.setup.ts'], }, }, ], }, }), )