Skip to content

Commit 638d4fd

Browse files
committed
test: migrate to vitest workspaces
1 parent 4fbf2e6 commit 638d4fd

File tree

5 files changed

+80
-64
lines changed

5 files changed

+80
-64
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,4 @@ jobs:
111111
run: pnpm run type-check
112112

113113
- name: Test unit
114-
run: pnpm run test-unit
115-
116-
- name: Test serve
117-
run: pnpm run test-serve
118-
119-
- name: Test build
120-
run: pnpm run test-build
114+
run: pnpm run test

package.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,8 @@
1313
"lint": "biome check . --diagnostic-level=warn",
1414
"publint": "pnpm build && pnpm -r --filter='vite-plugin-checker' exec publint",
1515
"sort-package-json": "npx sort-package-json \"packages/*/package.json\"",
16-
"test": "pnpm test-unit && pnpm test-serve && pnpm test-build",
17-
"test-build": "VITE_TEST_BUILD=1 vitest run -c vitest.config.e2e.ts",
16+
"test": "pnpm vitest",
1817
"test-knip": "knip",
19-
"test-serve": "vitest run -c vitest.config.e2e.ts",
20-
"test-unit": "vitest run",
21-
"test-unit:watch": "vitest",
2218
"type-check": "pnpm -r --parallel --filter \"vite-plugin-checker\" exec tsc --noEmit"
2319
},
2420
"simple-git-hooks": {

playground/vitestSetup.ts

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
1-
import { execa } from 'execa'
2-
import fs from 'node:fs/promises'
31
import { existsSync } from 'node:fs'
2+
import fs from 'node:fs/promises'
43
import type * as http from 'node:http'
54
import os from 'node:os'
65
import path, { dirname, join, resolve } from 'node:path'
6+
import { execa } from 'execa'
7+
import type { Browser, Page } from 'playwright-chromium'
78
import { chromium } from 'playwright-chromium'
89
import strip from 'strip-ansi'
10+
import type { InlineConfig, ResolvedConfig, ViteDevServer } from 'vite'
911
import { createServer, mergeConfig } from 'vite'
12+
import type { File } from 'vitest'
1013
import { beforeAll, expect } from 'vitest'
1114
import type { Checker } from '../packages/vite-plugin-checker/src/Checker'
12-
1315
import { normalizeLogSerializer } from './serializers'
1416

15-
import type { Browser, Page } from 'playwright-chromium'
16-
import type { InlineConfig, ResolvedConfig, ViteDevServer } from 'vite'
17-
import type { File } from 'vitest'
18-
1917
expect.addSnapshotSerializer(normalizeLogSerializer)
2018

2119
export const workspaceRoot = resolve(__dirname, '../')
2220

23-
export const isBuild = !!process.env.VITE_TEST_BUILD
24-
export const isServe = !isBuild
21+
export const isBuild = process.env.PROJECT === 'build'
22+
export const isServe = process.env.PROJECT === 'serve'
23+
2524
export const isWindows = process.platform === 'win32'
26-
export const viteBinPath = path.posix.join(workspaceRoot, 'packages/vite/bin/vite.js')
25+
export const viteBinPath = path.posix.join(
26+
workspaceRoot,
27+
'packages/vite/bin/vite.js',
28+
)
2729

2830
let server: ViteDevServer | http.Server
2931

@@ -58,7 +60,7 @@ export let stripedLog: string[] = []
5860
export let diagnostics: string[] = []
5961
export let buildSucceed: boolean
6062

61-
export let resolvedConfig: ResolvedConfig = undefined!
63+
export const resolvedConfig: ResolvedConfig = undefined!
6264

6365
export let page: Page = undefined!
6466
export let browser: Browser = undefined!
@@ -128,10 +130,15 @@ beforeAll(async (s) => {
128130
if (serve) {
129131
server = await serve()
130132
viteServer = mod.viteServer
131-
startDefaultServe({ _server: (server as any).viteDevServer, port: (server as any).port })
133+
startDefaultServe({
134+
_server: (server as any).viteDevServer,
135+
port: (server as any).port,
136+
})
132137
}
133138
} else {
134-
await startDefaultServe({ port: 5173 + Number(process.env.VITEST_POOL_ID) })
139+
await startDefaultServe({
140+
port: 5173 + Number(process.env.VITEST_POOL_ID),
141+
})
135142
}
136143
}
137144
} catch (e) {
@@ -181,7 +188,7 @@ export async function startDefaultServe({
181188

182189
const viteDevServer = _server || (await createServer(testConfig))
183190
const checker = viteDevServer.config.plugins.filter(
184-
({ name }) => name === 'vite-plugin-checker'
191+
({ name }) => name === 'vite-plugin-checker',
185192
)[0]
186193

187194
// @ts-ignore
@@ -199,10 +206,15 @@ export async function startDefaultServe({
199206
const type = args?.[0]
200207
const payload = args?.[1]
201208

202-
if (type === 'vite-plugin-checker' && payload.event === 'vite-plugin-checker:error') {
209+
if (
210+
type === 'vite-plugin-checker' &&
211+
payload.event === 'vite-plugin-checker:error'
212+
) {
203213
const existedCheckerIds = diagnostics.map((d) => d)
204214
const currentCheckerId = payload.data.diagnostics[0]?.checkerId
205-
const checkerReported = existedCheckerIds.some((id) => id === currentCheckerId)
215+
const checkerReported = existedCheckerIds.some(
216+
(id) => id === currentCheckerId,
217+
)
206218

207219
if (checkerReported) {
208220
// update diagnostics for the same checker

vitest.config.e2e.ts

Lines changed: 0 additions & 29 deletions
This file was deleted.

vitest.config.ts

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,58 @@
11
import { defineConfig } from 'vitest/config'
22

3+
const timeout = process.env.CI ? 80000 : 40000
4+
35
export default defineConfig({
46
test: {
5-
exclude: [
6-
'**/node_modules/**',
7-
'**/dist/**',
8-
'./playground/**/*.*',
9-
'./playground-temp/**/*.*',
7+
cache: false,
8+
onConsoleLog(log) {
9+
if (log.match(/experimental|jit engine|emitted file|tailwind/i))
10+
return false
11+
},
12+
globalSetup: [
13+
'./playground/vitestGlobalSetup.ts',
14+
'./scripts/vitestGlobalSetup.ts',
15+
],
16+
projects: [
17+
{
18+
test: {
19+
name: 'unit',
20+
exclude: [
21+
'**/node_modules/**',
22+
'**/dist/**',
23+
'./playground/**/*.*',
24+
'./playground-temp/**/*.*',
25+
],
26+
testTimeout: 20000,
27+
},
28+
},
29+
{
30+
test: {
31+
name: 'serve',
32+
env: {
33+
PROJECT: 'serve',
34+
},
35+
include: ['./playground/**/*.spec.[tj]s'],
36+
setupFiles: ['./playground/vitestSetup.ts'],
37+
testTimeout: timeout,
38+
hookTimeout: timeout,
39+
globals: true,
40+
},
41+
},
42+
{
43+
test: {
44+
name: 'build',
45+
env: {
46+
PROJECT: 'build',
47+
},
48+
include: ['./playground/**/*.spec.[tj]s'],
49+
setupFiles: ['./playground/vitestSetup.ts'],
50+
testTimeout: timeout,
51+
hookTimeout: timeout,
52+
globals: true,
53+
},
54+
},
1055
],
11-
testTimeout: 20000,
12-
globalSetup: ['./scripts/vitestGlobalSetup.ts'],
1356
},
1457
esbuild: {
1558
target: 'node14',

0 commit comments

Comments
 (0)