nitro-test-utils
Version:
Testing environment and utilities for Nitro
51 lines (48 loc) • 1.87 kB
JavaScript
import { fileURLToPath } from 'node:url';
import { loadOptions } from 'nitropack';
import { join } from 'pathe';
import { mergeConfig } from 'vite';
import { defineConfig as defineConfig$1 } from 'vitest/config';
async function defineConfig(userConfig = {}) {
const currentDir = fileURLToPath(new URL(".", import.meta.url));
const resolvedGlobalConfig = userConfig.nitro?.global === true ? {} : userConfig.nitro?.global || void 0;
const resolvedNitroConfig = {
rerunOnSourceChanges: userConfig.nitro?.rerunOnSourceChanges ?? true,
global: resolvedGlobalConfig ? {
rootDir: userConfig.nitro?.rootDir || resolvedGlobalConfig.rootDir || void 0,
mode: userConfig.nitro?.mode || resolvedGlobalConfig.mode || void 0
} : void 0
};
const overrides = defineConfig$1({
test: {
poolOptions: {
forks: {
// Disabling isolation improves performance in Node environments
isolate: false,
singleFork: true
}
},
forceRerunTriggers: [
// Vitest defaults
"**/package.json/**",
"**/{vitest,vite}.config.*/**",
// Custom triggers
...userConfig.test?.forceRerunTriggers ?? [],
// Rerun tests when source files change
...resolvedNitroConfig.rerunOnSourceChanges ? resolvedNitroConfig.global ? [join(
resolvedNitroConfig.global.rootDir || "",
".output",
resolvedNitroConfig.global.mode === "production" ? "server" : ".nitro/dev",
"index.mjs"
)] : [`${(await loadOptions()).srcDir}/**/*.ts`] : []
],
globalSetup: resolvedNitroConfig.global ? [
join(currentDir, "setup.mjs")
] : void 0,
// @ts-expect-error: Append Nitro for global setup file
nitro: resolvedNitroConfig
}
});
return mergeConfig(userConfig, overrides);
}
export { defineConfig };