chore: add testing and coverage configuration with Vitest integration

feat/vapor
tangjinzhou 2025-08-04 15:04:06 +08:00
parent 23ebeea4b7
commit 30afa132a2
9 changed files with 68 additions and 6 deletions

View File

@ -14,7 +14,10 @@
"build": "turbo build", "build": "turbo build",
"dev": "turbo dev", "dev": "turbo dev",
"dev:apps": "turbo dev --filter=\"./apps/*\"", "dev:apps": "turbo dev --filter=\"./apps/*\"",
"lint": "turbo lint" "lint": "turbo lint",
"test": "turbo test",
"test:ui": "turbo test -- --ui",
"coverage": "turbo test -- --coverage"
}, },
"devDependencies": { "devDependencies": {
"@ant-design-vue/eslint-config": "*", "@ant-design-vue/eslint-config": "*",
@ -22,6 +25,7 @@
"@ant-design-vue/typescript-config": "*", "@ant-design-vue/typescript-config": "*",
"@types/node": "^20.0.0", "@types/node": "^20.0.0",
"eslint": "^8.56.0", "eslint": "^8.56.0",
"vitest": "^3.2.4",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"esbuild": "^0.25.8", "esbuild": "^0.25.8",
"turbo": "^2.4.4", "turbo": "^2.4.4",

View File

@ -1,11 +1,11 @@
import { UserConfig, UserConfigFnObject } from 'vite' import { UserConfigFnObject, ViteUserConfig } from 'vitest/config.js'
export type GetUserConfig = ( export type GetUserConfig = (
dirname: string, dirname: string,
overwriteLib?: boolean, overwriteLib?: boolean,
) => UserConfig | UserConfigFnObject ) => ViteUserConfig | UserConfigFnObject
export declare function extendsConfig( export declare function extendsConfig(
base: UserConfig | UserConfigFnObject, base: ViteUserConfig | UserConfigFnObject,
overwrite: UserConfig | UserConfigFnObject, overwrite: ViteUserConfig | UserConfigFnObject,
): UserConfigFnObject ): UserConfigFnObject

View File

@ -21,12 +21,14 @@
"@types/node": "^20.0.0", "@types/node": "^20.0.0",
"@vitejs/plugin-vue": "^5.1.3", "@vitejs/plugin-vue": "^5.1.3",
"vite": "^5.3.5", "vite": "^5.3.5",
"vitest": "^3.2.4",
"vite-plugin-dts": "^4.5.4" "vite-plugin-dts": "^4.5.4"
}, },
"peerDependencies": { "peerDependencies": {
"@vitejs/plugin-vue": "*", "@vitejs/plugin-vue": "*",
"typescript": "*", "typescript": "*",
"vite": "5", "vite": "5",
"vitest": "3",
"vite-plugin-dts": "*" "vite-plugin-dts": "*"
} }
} }

View File

@ -22,7 +22,8 @@
"dev": "vite build --watch --mode development", "dev": "vite build --watch --mode development",
"lint": "eslint . --fix", "lint": "eslint . --fix",
"tsc": "tsc --noEmit", "tsc": "tsc --noEmit",
"tsg": "tsc --declaration --declarationMap --emitDeclarationOnly --noEmit false --outDir dist/types" "tsg": "tsc --declaration --declarationMap --emitDeclarationOnly --noEmit false --outDir dist/types",
"test": "vitest"
}, },
"type": "module", "type": "module",
"exports": { "exports": {
@ -83,11 +84,17 @@
"@ant-design-vue/tailwind-config": "*", "@ant-design-vue/tailwind-config": "*",
"@tailwindcss/vite": "^4.1.3", "@tailwindcss/vite": "^4.1.3",
"@vitejs/plugin-vue": "^5.1.3", "@vitejs/plugin-vue": "^5.1.3",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/ui": "^3.2.4",
"@vue/test-utils": "^2.4.6",
"vitest-fetch-mock": "^0.4.5",
"jsdom": "^26.0.0",
"@vueuse/core": "^12.0.0", "@vueuse/core": "^12.0.0",
"@types/node": "^20.19.7", "@types/node": "^20.19.7",
"prettier-plugin-tailwindcss": "^0.6.11", "prettier-plugin-tailwindcss": "^0.6.11",
"tailwindcss": "^4.0.14", "tailwindcss": "^4.0.14",
"typescript": "^5.8.2", "typescript": "^5.8.2",
"vitest": "^3.2.4",
"vite": "^5.3.5", "vite": "^5.3.5",
"vite-plugin-dts": "^4.5.4", "vite-plugin-dts": "^4.5.4",
"vite-svg-loader": "^5.1.0", "vite-svg-loader": "^5.1.0",

View File

@ -0,0 +1,8 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`Button > should render correctly 1`] = `
"<button class="ant-btn ant-btn-solid ant-btn-md">
<!--v-if-->
<!--v-if--><span></span>
</button>"
`;

View File

@ -0,0 +1,10 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { Button } from '@ant-design-vue/ui'
import { mount } from '@vue/test-utils'
describe('Button', () => {
it('should render correctly', () => {
const wrapper = mount(Button)
expect(wrapper.html()).toMatchSnapshot()
})
})

View File

@ -0,0 +1,8 @@
import { vi } from 'vitest'
import { config } from '@vue/test-utils'
import createFetchMock from 'vitest-fetch-mock'
const fetchMock = createFetchMock(vi)
fetchMock.enableMocks()
config.global.plugins = []

View File

@ -4,6 +4,7 @@ import { resolve } from 'node:path'
import tailwindcss from '@tailwindcss/vite' import tailwindcss from '@tailwindcss/vite'
import { readdirSync, statSync } from 'node:fs' import { readdirSync, statSync } from 'node:fs'
import dts from 'vite-plugin-dts' import dts from 'vite-plugin-dts'
import pkg from './package.json'
// 获取所有组件目录 // 获取所有组件目录
function getComponents() { function getComponents() {
@ -34,6 +35,21 @@ export default extendsConfig(vue(__dirname, true), {
}, },
}, },
plugins: [tailwindcss()], plugins: [tailwindcss()],
test: {
alias: {
[pkg.name]: resolve(__dirname, './src'),
},
globals: true,
environment: 'jsdom',
testTimeout: 5000,
coverage: {
include: ['src/**/*.{ts,vue}'],
provider: 'v8',
allowExternal: true,
reporter: ['text', 'json', 'html'],
},
setupFiles: [resolve(__dirname, './test/setup.ts')],
},
build: { build: {
cssCodeSplit: true, cssCodeSplit: true,
lib: { lib: {

7
vitest.config.ts Normal file
View File

@ -0,0 +1,7 @@
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
projects: ['packages/*'],
},
})