mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-23 00:22:19 +01:00
https://linear.app/unleash/issue/2-3296/upgrade-vitest Follow-up to https://github.com/Unleash/unleash/pull/9212 The ☝️ PR was failing some tests because `chartjs-adapter-date-fns` is imported as a [side effect](https://stackoverflow.com/questions/41127479/es6-import-for-side-effects-meaning) and seems to be CommonJS-only. When Vitest loads it, it fails to find named exports (like `_adapters`). By inlining `chartjs-adapter-date-fns` in our Vitest test config, esbuild transforms it into a proper ES module for testing. Additionally, we’re upgrading from v1.4.0 to v3.0.6 directly since our code seems to be fully compatible. >Vitest requires Vite >=v5.0.0 and Node >=v18.0.0
91 lines
2.6 KiB
TypeScript
91 lines
2.6 KiB
TypeScript
import { defineConfig, mergeConfig } from 'vite';
|
|
import {
|
|
configDefaults,
|
|
defineConfig as vitestDefineConfig,
|
|
} from 'vitest/config';
|
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
import react from '@vitejs/plugin-react';
|
|
import svgr from 'vite-plugin-svgr';
|
|
import envCompatible from 'vite-plugin-env-compatible';
|
|
|
|
const UNLEASH_API = process.env.UNLEASH_API || 'http://localhost:4242';
|
|
const UNLEASH_BASE_PATH = process.env.UNLEASH_BASE_PATH || '/';
|
|
|
|
if (!UNLEASH_BASE_PATH.startsWith('/') || !UNLEASH_BASE_PATH.endsWith('/')) {
|
|
console.error('UNLEASH_BASE_PATH must both start and end with /');
|
|
process.exit(1);
|
|
}
|
|
|
|
const vitestConfig = vitestDefineConfig({
|
|
test: {
|
|
globals: true,
|
|
setupFiles: 'src/setupTests.ts',
|
|
environment: 'jsdom',
|
|
exclude: [...configDefaults.exclude, '**/cypress/**'],
|
|
server: {
|
|
deps: {
|
|
inline: ['chartjs-adapter-date-fns'],
|
|
},
|
|
},
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
api: 'modern-compiler',
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
export default mergeConfig(
|
|
defineConfig({
|
|
base: UNLEASH_BASE_PATH,
|
|
build: {
|
|
outDir: 'build',
|
|
assetsDir: 'static',
|
|
assetsInlineLimit: 0,
|
|
modulePreload: false,
|
|
cssCodeSplit: false,
|
|
},
|
|
server: {
|
|
open: true,
|
|
host: true,
|
|
port: 3000,
|
|
proxy: {
|
|
[`${UNLEASH_BASE_PATH}api`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
[`${UNLEASH_BASE_PATH}auth`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
[`${UNLEASH_BASE_PATH}logout`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
[`${UNLEASH_BASE_PATH}health`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
[`${UNLEASH_BASE_PATH}invite`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
[`${UNLEASH_BASE_PATH}edge`]: {
|
|
target: UNLEASH_API,
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
fs: {
|
|
allow: ['..'],
|
|
},
|
|
},
|
|
plugins: [react(), tsconfigPaths(), svgr(), envCompatible()],
|
|
esbuild: {
|
|
logOverride: { 'this-is-undefined-in-esm': 'silent' },
|
|
},
|
|
}),
|
|
vitestConfig,
|
|
);
|