|
|
@@ -3,28 +3,68 @@ import { resolve } from 'path'
|
|
|
|
|
|
export default defineConfig({
|
|
|
test: {
|
|
|
- // 测试环境
|
|
|
- environment: 'node',
|
|
|
+ projects: [
|
|
|
+ // Node.js 环境项目 - 后端测试
|
|
|
+ {
|
|
|
+ test: {
|
|
|
+ name: 'node',
|
|
|
+ environment: 'node',
|
|
|
+ include: [
|
|
|
+ 'src/server/**/*.test.{ts,js}',
|
|
|
+ 'src/server/**/*.integration.test.{ts,js}'
|
|
|
+ ],
|
|
|
+ exclude: [
|
|
|
+ '**/node_modules/**',
|
|
|
+ '**/dist/**',
|
|
|
+ '**/build/**',
|
|
|
+ '**/coverage/**',
|
|
|
+ 'tests/e2e/**'
|
|
|
+ ],
|
|
|
|
|
|
- // 测试文件匹配模式
|
|
|
- include: [
|
|
|
- 'src/server/api/**/__tests__/**',
|
|
|
- 'src/server/modules/**/__tests__/**',
|
|
|
- 'src/server/utils/**/__tests__/**',
|
|
|
- 'src/server/**/__integration_tests__/**'
|
|
|
- ],
|
|
|
-
|
|
|
- // 排除模式
|
|
|
- exclude: [
|
|
|
- '**/node_modules/**',
|
|
|
- '**/dist/**',
|
|
|
- '**/build/**',
|
|
|
- '**/coverage/**',
|
|
|
- 'tests/e2e/**', // 排除Playwright E2E测试文件
|
|
|
- 'src/client/**', // 排除客户端代码,由组件测试配置处理
|
|
|
+ alias: {
|
|
|
+ '@': resolve(__dirname, './src'),
|
|
|
+ '@/client': resolve(__dirname, './src/client'),
|
|
|
+ '@/server': resolve(__dirname, './src/server'),
|
|
|
+ '@/share': resolve(__dirname, './src/share'),
|
|
|
+ '@/test': resolve(__dirname, './src/test')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // Happy DOM 环境项目 - 前端组件测试
|
|
|
+ {
|
|
|
+ test: {
|
|
|
+ name: 'happy-dom',
|
|
|
+ environment: 'happy-dom',
|
|
|
+ include: [
|
|
|
+ 'src/client/**/*.test.{ts,js,tsx,jsx}',
|
|
|
+ 'src/client/**/*.integration.test.{ts,js,tsx,jsx}'
|
|
|
+ ],
|
|
|
+ exclude: [
|
|
|
+ '**/node_modules/**',
|
|
|
+ '**/dist/**',
|
|
|
+ '**/build/**',
|
|
|
+ '**/coverage/**',
|
|
|
+ 'tests/e2e/**',
|
|
|
+ 'src/client/home/**',
|
|
|
+ 'src/client/components/ui/**',
|
|
|
+ 'src/client/__test_utils__/**',
|
|
|
+ ],
|
|
|
+ alias: {
|
|
|
+ '@': resolve(__dirname, './src'),
|
|
|
+ '@/client': resolve(__dirname, './src/client'),
|
|
|
+ '@/server': resolve(__dirname, './src/server'),
|
|
|
+ '@/share': resolve(__dirname, './src/share'),
|
|
|
+ '@/test': resolve(__dirname, './src/test')
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
],
|
|
|
|
|
|
- // 覆盖率配置
|
|
|
+ // 共享配置
|
|
|
+ globals: true,
|
|
|
+ testTimeout: 10000,
|
|
|
+ setupFiles: ['./src/test/setup.ts'],
|
|
|
+ // 覆盖率配置 - 放在根级别
|
|
|
coverage: {
|
|
|
provider: 'v8',
|
|
|
reporter: ['text', 'lcov', 'html'],
|
|
|
@@ -35,10 +75,9 @@ export default defineConfig({
|
|
|
'**/build/**',
|
|
|
'**/coverage/**',
|
|
|
'**/*.d.ts',
|
|
|
- 'src/client/**', // 排除所有客户端代码
|
|
|
- 'tests/e2e/**', // 排除e2e测试代码
|
|
|
- 'scripts/**', // 排除脚本目录
|
|
|
- 'src/test/**', // 排除测试工具目录
|
|
|
+ 'tests/e2e/**',
|
|
|
+ 'scripts/**',
|
|
|
+ 'src/test/**',
|
|
|
'**/__tests__/**',
|
|
|
'**/__mocks__/**',
|
|
|
'**/index.ts',
|
|
|
@@ -50,34 +89,15 @@ export default defineConfig({
|
|
|
'eslint.config.js',
|
|
|
'debug-page.js',
|
|
|
'src/server/__test_utils__/**',
|
|
|
+ 'src/client/__test_utils__/**',
|
|
|
],
|
|
|
thresholds: {
|
|
|
- branches: 70,
|
|
|
- functions: 70,
|
|
|
- lines: 70,
|
|
|
- statements: 70
|
|
|
+ branches: 65,
|
|
|
+ functions: 65,
|
|
|
+ lines: 65,
|
|
|
+ statements: 65
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
- // 全局设置
|
|
|
- globals: true,
|
|
|
-
|
|
|
- // 测试超时
|
|
|
- testTimeout: 10000,
|
|
|
-
|
|
|
- // 设置文件
|
|
|
- setupFiles: ['./src/test/setup.ts'],
|
|
|
-
|
|
|
- // 别名配置
|
|
|
- alias: {
|
|
|
- '@': resolve(__dirname, './src'),
|
|
|
- '@/client': resolve(__dirname, './src/client'),
|
|
|
- '@/server': resolve(__dirname, './src/server'),
|
|
|
- '@/share': resolve(__dirname, './src/share'),
|
|
|
- '@/test': resolve(__dirname, './test')
|
|
|
- },
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- // api测试关闭并行测试
|
|
|
- fileParallelism: false
|
|
|
- }
|
|
|
})
|