aboutsummaryrefslogtreecommitdiffstats
path: root/vitest.config.mts
blob: 4fe5bd4d32fb74938a484627605e17715ca8c552 (plain)
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
/**
 * SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: CC0-1.0
 */
import { defaultExclude, defineConfig } from 'vitest/config'
import vue from '@vitejs/plugin-vue2'
import { exec } from 'node:child_process'
import { promisify } from 'node:util'

const gitIgnore: string[] = []
// get all files ignored in the apps directory (e.g. if putting `view` app there).
try {
	const execAsync = promisify(exec)
	const { stdout } = await execAsync('git check-ignore apps/*', { cwd: __dirname })
	gitIgnore.push(...stdout.split('\n').filter(Boolean))
	// eslint-disable-next-line no-console
	console.log('Git ignored files excluded from tests: ', gitIgnore)
} catch (error) {
	// we can ignore error code 1 as this just means there are no ignored files
	if (error.code !== 1) {
		// but otherwise something bad is happening and we should re-throw
		throw error
	}
}

export default defineConfig({
	plugins: [vue()],
	test: {
		include: ['{apps,core}/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
		environment: 'jsdom',
		environmentOptions: {
			jsdom: {
				url: 'http://nextcloud.local',
			},
		},
		coverage: {
			include: ['apps/*/src/**', 'core/src/**'],
			exclude: ['**.spec.*', '**.test.*', '**.cy.*', 'core/src/tests/**'],
			provider: 'v8',
			reporter: ['lcov', 'text'],
		},
		setupFiles: [
			'__tests__/mock-window.js',
			'__tests__/setup-testing-library.js',
		],
		exclude: [
			...defaultExclude,
			...gitIgnore,
		],
		globalSetup: '__tests__/setup-global.js',
		server: {
			deps: {
				inline: [/@nextcloud\//],
			},
		},
	},
})