51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
/// <reference types="vitest" />
|
|
import { defineConfig, mergeConfig } from 'vite'
|
|
import * as cjsLexer from 'cjs-module-lexer'
|
|
import esbuild from 'esbuild'
|
|
|
|
import baseConfig from './vite.mjs'
|
|
|
|
await cjsLexer.init()
|
|
|
|
export default mergeConfig(baseConfig, defineConfig({
|
|
test: {
|
|
browser: {
|
|
enabled: true,
|
|
name: 'chromium',
|
|
provider: 'playwright',
|
|
slowHijackESM: false,
|
|
},
|
|
fakeTimers: {
|
|
toFake: ['setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', 'Date']
|
|
},
|
|
retry: process.env.CI ? 3 : 0,
|
|
// for whatever reason using exclude-s makes the vite never start the browser, so we use skip-s instead.
|
|
// exclude: [
|
|
// './packages/crypto-node/**',
|
|
// './packages/node/**',
|
|
// ],
|
|
},
|
|
plugins: [
|
|
{
|
|
name: 'fixup-cjs',
|
|
async transform(code, id) {
|
|
if (!id.match(/\/packages\/tl\/.*\.js$/)) return code
|
|
|
|
const lexed = cjsLexer.parse(code)
|
|
const r = await esbuild.transform(code, { format: 'esm' })
|
|
code = r.code.replace(/export default require_stdin\(\);/, '')
|
|
|
|
code += 'const __exp = require_stdin()\n'
|
|
|
|
for (const exp of lexed.exports) {
|
|
code += `export const ${exp} = __exp.${exp}\n`
|
|
}
|
|
|
|
return code
|
|
}
|
|
}
|
|
],
|
|
define: {
|
|
'import.meta.env.TEST_ENV': '"browser"'
|
|
}
|
|
}))
|