-
Notifications
You must be signed in to change notification settings - Fork 207
/
jest.config.js
68 lines (61 loc) · 1.77 KB
/
jest.config.js
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
const path = require('path')
const {ifAnyDep, hasFile, hasPkgProp} = require('../utils')
const here = p => path.join(__dirname, p)
const useBuiltInBabelConfig = !hasFile('.babelrc') && !hasPkgProp('babel')
const ignores = [
'/node_modules/',
'/__fixtures__/',
'/fixtures/',
'/__tests__/helpers/',
'/__tests__/utils/',
'__mocks__',
]
/** @type {import('@jest/types').Config.InitialOptions} */
const jestConfig = {
roots: ['<rootDir>/src'],
testEnvironment: ifAnyDep(
['webpack', 'rollup', 'react', 'preact'],
'jsdom',
'node',
),
testEnvironmentOptions: {
url: 'http://localhost',
},
moduleFileExtensions: ['js', 'jsx', 'json', 'ts', 'tsx'],
modulePaths: ['<rootDir>/src', 'shared', '<rootDir>/tests'],
collectCoverageFrom: ['src/**/*.+(js|jsx|ts|tsx)'],
testMatch: ['**/__tests__/**/*.+(js|jsx|ts|tsx)'],
testPathIgnorePatterns: [...ignores],
coveragePathIgnorePatterns: [...ignores, 'src/(umd|cjs|esm)-entry.js$'],
transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'],
coverageThreshold: {
global: {
branches: 100,
functions: 100,
lines: 100,
statements: 100,
},
},
watchPlugins: [
require.resolve('jest-watch-typeahead/filename'),
require.resolve('jest-watch-typeahead/testname'),
],
snapshotSerializers: [
require.resolve('jest-serializer-path'),
require.resolve('jest-snapshot-serializer-raw/always'),
],
}
const setupFiles = [
'tests/setup-env.js',
'tests/setup-env.ts',
'tests/setup-env.tsx',
]
for (const setupFile of setupFiles) {
if (hasFile(setupFile)) {
jestConfig.setupFilesAfterEnv = [`<rootDir>/${setupFile}`]
}
}
if (useBuiltInBabelConfig) {
jestConfig.transform = {'^.+\\.(js|jsx|ts|tsx)$': here('./babel-transform')}
}
module.exports = jestConfig