/
runner.spec.ts
70 lines (61 loc) · 1.73 KB
/
runner.spec.ts
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
import { expect, it } from 'vitest'
import type { File, TaskResultPack, UserConfig } from 'vitest'
import { resolve } from 'pathe'
import { runVitest } from '../../test-utils'
it.each([
{ name: 'threads are enabled', threads: true },
{ name: 'threads are disabled', threads: false },
{
name: 'running in the browser',
browser: {
enabled: true,
provider: 'playwright',
name: 'chromium',
headless: true,
},
},
] as UserConfig[])('passes down metadata when $name', async (config) => {
const taskUpdate: TaskResultPack[] = []
const finishedFiles: File[] = []
const { vitest, stdout } = await runVitest({
root: resolve(__dirname, '..', 'fixtures'),
include: ['**/*.spec.ts'],
reporters: [
'verbose',
{
onTaskUpdate(packs) {
taskUpdate.push(...packs.filter(i => i[1]?.state === 'pass'))
},
onFinished(files) {
finishedFiles.push(...files || [])
},
},
],
...config,
})
expect(stdout).toContain('custom.spec.ts > custom')
const suiteMeta = { done: true }
const testMeta = { custom: 'some-custom-hanlder' }
expect(taskUpdate).toHaveLength(2)
expect(finishedFiles).toHaveLength(1)
const files = vitest?.state.getFiles() || []
expect(files).toHaveLength(1)
expect(taskUpdate).toContainEqual(
[
expect.any(String),
expect.anything(),
suiteMeta,
],
)
expect(taskUpdate).toContainEqual(
[
expect.any(String),
expect.anything(),
testMeta,
],
)
expect(finishedFiles[0].meta).toEqual(suiteMeta)
expect(finishedFiles[0].tasks[0].meta).toEqual(testMeta)
expect(files[0].meta).toEqual(suiteMeta)
expect(files[0].tasks[0].meta).toEqual(testMeta)
}, 60_000)