Ctrl K
ComunidadGuías…

bldr/vitest.config.ts

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { configDefaults, defineConfig } from 'vitest/config'
import { playwright } from '@vitest/browser-playwright'
import type { Plugin } from 'vite'
import { resolve } from 'path'
import { dirname } from 'node:path'
import { fileURLToPath } from 'node:url'
import {
  buildGoAliases,
  goTsResolver,
} from './web/bundler/vite/go-ts-resolver.js'

const __dirname = dirname(fileURLToPath(import.meta.url))
const repoRoot = resolve(__dirname, '..')

// Plugin to enable cross-origin isolation for SharedArrayBuffer support.
// Must use enforce: "pre" to run before vitest:browser plugin steals html requests.
// See: https://github.com/vitest-dev/vitest/issues/3743
function crossOriginIsolationPlugin(): Plugin {
  return {
    name: 'cross-origin-isolation',
    enforce: 'pre',
    configureServer(server) {
      server.middlewares.use((_req, res, next) => {
        res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp')
        res.setHeader('Cross-Origin-Opener-Policy', 'same-origin')
        next()
      })
    },
  }
}

const commonPlugins = [crossOriginIsolationPlugin(), goTsResolver(repoRoot)]
const bldrAliases = [
  ...buildGoAliases(repoRoot),
  {
    find: /^@aptre\/bldr$/,
    replacement: resolve(__dirname, 'web/bldr/index.js'),
  },
  {
    find: /^@aptre\/bldr-react$/,
    replacement: resolve(__dirname, 'web/bldr-react/index.js'),
  },
  {
    find: /^@aptre\/bldr-sdk$/,
    replacement: resolve(__dirname, 'sdk/plugin.ts'),
  },
  {
    find: /^@aptre\/bldr-sdk\/(.*)$/,
    replacement: resolve(__dirname, 'sdk/$1'),
  },
  {
    find: /^web\/(.*)$/,
    replacement: resolve(__dirname, 'web/$1'),
  },
]

export default defineConfig({
  root: repoRoot,
  plugins: commonPlugins,
  resolve: {
    alias: bldrAliases,
  },
  test: {
    projects: [
      {
        plugins: commonPlugins,
        resolve: {
          alias: bldrAliases,
        },
        test: {
          name: 'unit',
          environment: 'happy-dom',
          include: ['bldr/**/*.test.ts'],
          exclude: [
            ...configDefaults.exclude,
            'dist',
            'vendor',
            '.bldr',
            '.bldr-*',
            'prototypes',
            '**/*.browser.test.ts',
            '**/*.e2e.test.ts',
            '**/*.e2e.spec.ts',
          ],
        },
      },
      {
        // Browser project needs its own plugins config
        plugins: commonPlugins,
        resolve: {
          alias: bldrAliases,
        },
        test: {
          name: 'browser',
          include: ['bldr/**/*.browser.test.ts', 'bldr/**/*.e2e.test.ts'],
          exclude: [
            ...configDefaults.exclude,
            'dist',
            'vendor',
            '.bldr',
            '.bldr-*',
            'prototypes',
            '**/*.e2e.spec.ts',
          ],
          browser: {
            enabled: true,
            provider: playwright(),
            headless: true,
            instances: [{ browser: 'chromium' }],
          },
        },
      },
    ],
  },
})