-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvitest.config.mts
92 lines (89 loc) · 2.55 KB
/
vitest.config.mts
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
/**
* @file Configuration - Vitest
* @module config/vitest
* @see https://vitest.dev/config
*/
import Notifier from '#tests/reporters/notifier'
import VerboseReporter from '#tests/reporters/verbose'
import pathe from '@flex-development/pathe'
import ci from 'is-ci'
import type { ConfigEnv, ViteUserConfig } from 'vitest/config'
import { BaseSequencer, type TestSpecification } from 'vitest/node'
import tsconfig from './tsconfig.json' with { type: 'json' }
/**
* Create a vitest configuration.
*
* @see {@linkcode ConfigEnv}
* @see {@linkcode ViteUserConfig}
*
* @param {ConfigEnv} env
* Configuration environment
* @return {ViteUserConfig}
* Vitest configuration object
*/
function config(env: ConfigEnv): ViteUserConfig {
return {
ssr: {
resolve: { conditions: tsconfig.compilerOptions.customConditions }
},
test: {
include: ['src/**/__tests__/*.spec-d.mts'],
outputFile: {
blob: `.vitest-reports/${env.mode}.blob.json`,
json: pathe.join('__tests__', 'reports', env.mode + '.json')
},
passWithNoTests: true,
reporters: JSON.parse(process.env['VITEST_UI'] ?? '0')
? [new Notifier(), new VerboseReporter()]
: env.mode === 'reports'
? [new VerboseReporter()]
: [
ci ? 'github-actions' : new Notifier(),
'blob',
'json',
new VerboseReporter()
],
sequence: {
/**
* Sorting and sharding algorithm provider.
*
* @see {@linkcode BaseSequencer}
*
* @extends {BaseSequencer}
*/
sequencer: class Sequencer extends BaseSequencer {
/**
* Determine test file execution order.
*
* @public
* @override
* @async
*
* @param {TestSpecification[]} specs
* List of test file specifications
* @return {Promise<TestSpecification[]>}
* Sorted test files
*/
public override async sort(
specs: TestSpecification[]
): Promise<TestSpecification[]> {
return new Promise(resolve => {
return void resolve(specs.sort((a, b) => {
return a.moduleId.localeCompare(b.moduleId)
}))
})
}
}
},
typecheck: {
allowJs: false,
checker: 'tsc',
ignoreSourceErrors: false,
include: ['**/__tests__/*.spec-d.mts'],
only: true,
tsconfig: 'tsconfig.typecheck.json'
}
}
}
}
export default config