bldr/vitest.config.ts
Rama master · réplica de lectura del repositorio original.
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' }],
},
},
},
],
},
})