test: introduce and set up unit tests in the UI (#486)

This commit is contained in:
Fine0830
2025-08-05 11:48:07 +08:00
committed by GitHub
parent ad4b0639cd
commit b73ae65efc
20 changed files with 3061 additions and 63 deletions

62
vitest.config.ts Normal file
View File

@@ -0,0 +1,62 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { defineConfig } from "vitest/config";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import path from "path";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
export default defineConfig({
plugins: [
vue(),
vueJsx(),
createSvgIconsPlugin({
iconDirs: [path.resolve(__dirname, "./src/assets/icons")],
symbolId: "[name]",
}),
],
test: {
environment: "jsdom",
globals: true,
setupFiles: ["./src/test/setup.ts"],
deps: {
// vite-plugin-svg-icons uses non-standard exports and needs to be inlined
// to ensure correct module resolution during testing with Vitest.
inline: ["vite-plugin-svg-icons"],
},
coverage: {
provider: "v8",
reporter: ["text", "json", "html"],
exclude: [
"node_modules/",
"src/test/",
"**/*.d.ts",
"**/*.config.*",
"dist/",
"cypress/",
"src/types/",
"src/mock/",
],
},
},
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
});