Files
community-rule/vitest.config.js
T
2025-08-29 10:30:50 -06:00

54 lines
1.5 KiB
JavaScript

const { defineConfig } = require("vitest/config");
const react = require("@vitejs/plugin-react");
module.exports = defineConfig({
plugins: [
// Enables React transform
react({ jsxRuntime: "automatic" }),
],
// Key part: make .js be parsed as JSX *before* import-analysis
esbuild: {
jsx: "automatic",
loader: "jsx", // default loader
include: /(?:^|\/)(app|components|pages|src|tests)\/.*\.[jt]sx?$/, // match your folders
exclude: [/node_modules/],
},
test: {
environment: "jsdom",
setupFiles: ["./vitest.setup.ts"], // match your actual filename
include: [
"tests/unit/**/*.test.{js,jsx,ts,tsx}",
"tests/integration/**/*.test.{js,jsx,ts,tsx}",
],
css: true,
transformMode: { web: [/\.[jt]sx?$/] }, // ensure web transform for JSX
coverage: {
provider: "v8",
reporter: ["text", "lcov"],
include: [
"app/**/*.{js,jsx,ts,tsx}",
"components/**/*.{js,jsx,ts,tsx}",
"!**/*.test.{js,jsx,ts,tsx}",
"!**/*.spec.{js,jsx,ts,tsx}",
"!**/node_modules/**",
"!**/tests/**",
],
exclude: [
"**/node_modules/**",
"**/tests/**",
"**/*.test.{js,jsx,ts,tsx}",
"**/*.spec.{js,jsx,ts,tsx}",
"**/coverage/**",
"**/.next/**",
"**/dist/**",
"**/build/**",
],
thresholds: { lines: 50, functions: 50, statements: 50, branches: 50 },
},
pool: "threads",
testTimeout: 10000,
},
});