vitest.config.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import path from 'node:path';
  2. import react from '@vitejs/plugin-react';
  3. import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
  4. import { playwright } from '@vitest/browser-playwright';
  5. import { defineConfig } from 'vitest/config';
  6. const dirname = import.meta.dirname;
  7. export default defineConfig({
  8. plugins: [react()],
  9. resolve: {
  10. alias: {
  11. '@': path.resolve(dirname, 'src'),
  12. },
  13. },
  14. test: {
  15. globals: false,
  16. // Keep jsdom-heavy form tests within the memory budget of local and CI runners.
  17. maxWorkers: 2,
  18. projects: [
  19. {
  20. extends: true,
  21. test: {
  22. name: 'unit',
  23. include: ['src/test/**/*.test.ts'],
  24. environment: 'node',
  25. setupFiles: ['./src/test/setup.ts', './src/test/setup.msw.ts'],
  26. },
  27. },
  28. {
  29. extends: true,
  30. test: {
  31. name: 'components',
  32. include: ['src/test/**/*.test.tsx'],
  33. environment: 'jsdom',
  34. setupFiles: ['./src/test/setup.ts', './src/test/setup.components.ts'],
  35. },
  36. },
  37. {
  38. extends: true,
  39. optimizeDeps: {
  40. include: ['aria-query', 'lz-string', 'pretty-format', 'dom-accessibility-api'],
  41. },
  42. plugins: [storybookTest({ configDir: path.join(dirname, '.storybook') })],
  43. test: {
  44. name: 'storybook',
  45. browser: {
  46. enabled: true,
  47. headless: true,
  48. provider: playwright({}),
  49. instances: [{ browser: 'chromium' }],
  50. },
  51. },
  52. },
  53. ],
  54. },
  55. });