@rayners/foundry-dev-tools
Version:
Shared development tools and configurations for FoundryVTT modules
95 lines (90 loc) • 2.39 kB
JavaScript
import { defineConfig } from 'vitest/config';
/**
* Shared Vitest configuration for FoundryVTT modules
*
* Usage in module vitest.config.ts:
* import { createFoundryTestConfig } from '@rayners/foundry-dev-tools/configs/vitest.config.js';
* export default createFoundryTestConfig();
*
* Or with custom options:
* export default createFoundryTestConfig({
* coverage: {
* thresholds: {
* global: { lines: 90 }
* }
* }
* });
*/
const defaultConfig = {
test: {
environment: 'jsdom',
globals: true,
setupFiles: ['./test/setup.ts'],
reporters: ['default'],
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html', 'lcov'],
exclude: [
'node_modules/',
'test/',
'dist/',
'**/*.d.ts',
'*.config.*',
'docs/',
'templates/',
'styles/',
'calendars/',
'languages/',
'assets/',
'scripts/'
],
thresholds: {
global: {
branches: 80,
functions: 80,
lines: 80,
statements: 80
}
}
}
}
};
/**
* Create a Vitest configuration for FoundryVTT modules
* @param {Object} customConfig - Custom configuration to merge with defaults
* @returns {Object} Vitest configuration
*/
export function createFoundryTestConfig(customConfig = {}) {
return defineConfig({
...defaultConfig,
test: {
...defaultConfig.test,
...customConfig.test,
reporters: customConfig.test?.reporters || defaultConfig.test.reporters,
coverage: {
...defaultConfig.test.coverage,
...customConfig.test?.coverage,
thresholds: {
...defaultConfig.test.coverage.thresholds,
...customConfig.test?.coverage?.thresholds
}
}
}
});
}
/**
* Create a Vitest configuration with JUnit output for CI environments
* @param {Object} customConfig - Custom configuration to merge with defaults
* @returns {Object} Vitest configuration with JUnit reporter
*/
export function createFoundryTestConfigWithJUnit(customConfig = {}) {
return createFoundryTestConfig({
...customConfig,
test: {
...customConfig.test,
reporters: ['default', ['junit', { outputFile: 'test-report.junit.xml' }]]
}
});
}
// Export default config for direct use
export default defineConfig(defaultConfig);