-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvitest.config.js
More file actions
128 lines (113 loc) · 3.3 KB
/
vitest.config.js
File metadata and controls
128 lines (113 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { resolve } from "node:path";
import { glob } from "tinyglobby";
import { defineConfig } from "vitest/config";
import { defaults } from "@kosmojs/core";
const setupFactory = (name, { alias, ...setup } = {}) => {
return {
extends: true,
test: {
name,
root: name.startsWith("integration:")
? "."
: resolve(import.meta.dirname, `packages/${name}`),
include: ["test/**/*.test.ts"],
hookTimeout: name.startsWith("integration:") ? 180_000 : 60_000,
alias: {
...alias,
"@src": "src",
"@test": "test",
},
...setup,
},
};
};
export default defineConfig({
reporters: ["verbose"],
test: {
projects: [
setupFactory("core/core", {
setupFiles: ["test/setup.ts"],
globals: true,
}),
setupFactory("core/cli", {
setupFiles: ["test/setup.ts"],
}),
setupFactory("core/lib"),
setupFactory("generators/fetch-generator", {
alias: {
[defaults.appPrefix]: "test/@fixtures/app",
[defaults.srcPrefix]: "test/@fixtures/app/src",
[defaults.libPrefix]: "test/@fixtures/app/lib/src",
},
globalSetup: ["test/setup.global.ts"],
setupFiles: ["test/setup.ts"],
globals: true,
}),
setupFactory("generators/koa-generator", {
setupFiles: ["test/setup.ts"],
}),
setupFactory("generators/hono-generator", {
setupFiles: ["test/setup.ts"],
}),
setupFactory("generators/openapi-generator", {
testTimeout: 60_000,
globalSetup: ["test/setup.global.ts"],
}),
setupFactory("generators/typebox-generator", {
globalSetup: ["test/setup.global.ts"],
alias: {
[defaults.appPrefix]: "test/@fixtures/app",
[defaults.srcPrefix]: "test/@fixtures/app/src",
[defaults.libPrefix]: "test/@fixtures/app/lib/src",
},
}),
setupFactory("generators/solid-generator"),
setupFactory("generators/react-generator"),
setupFactory("generators/vue-generator"),
setupFactory("integration:api", {
globalSetup: ["test/integration/setup.global.ts"],
include: ["test/integration/{koa,hono}/*.test.ts"],
}),
setupFactory("integration:csr", {
globalSetup: ["test/integration/setup.global.ts"],
include: ["test/integration/{react,solid,vue,mdx}/*.test.ts"],
fileParallelism: false,
provide: {
CSR: "true",
},
}),
setupFactory("integration:ssr", {
globalSetup: ["test/integration/setup.global.ts"],
include: ["test/integration/{react,solid,vue,mdx}/*.test.ts"],
provide: {
SSR: "true",
},
}),
],
},
plugins: [
{
name: "vite:load-templates",
enforce: "pre",
async resolveId(src) {
if (src.startsWith("#templates/")) {
const base = src.replace("#templates/", "src/templates/");
const [path] = await glob(
[
// files with extension takes priority
base,
`${base}.{ts,tsx}`,
],
{
absolute: true,
onlyFiles: true,
},
);
if (path) {
return `${path}?raw`;
}
}
},
},
],
});