/
jest.config.mjs
69 lines (61 loc) · 2.57 KB
/
jest.config.mjs
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
import fs from 'fs';
import { defaults } from 'jest-config';
import { Paths, FileTypeRegexes, ImportAliases } from '../utils/index.js';
/*
* Note: Add the `--no-cache` CLI option during development of jest transformers
*/
// const { collectCoverage } = parseCliArgs({
// varNameToFlagAliases: {
// collectCoverage: [ 'coverage' ],
// },
// numArgs: {
// collectCoverage: 0,
// },
// });
const allAppDirectories = fs.readdirSync(Paths.ROOT.ABS, { withFileTypes: true })
.filter(directoryEntry => directoryEntry.isDirectory())
.map(directory => directory.name);
const allAppDirsFormattedForJest = allAppDirectories.map(dir => `<rootDir>/${dir}`);
const nonSrcJestDirs = allAppDirsFormattedForJest.filter(directory => !directory.includes(Paths.SRC.REL));
const scriptFiles = FileTypeRegexes.regexToString(FileTypeRegexes.SourceCode);
const assetFiles = FileTypeRegexes.regexToString(FileTypeRegexes.combineRegexes(FileTypeRegexes.Assets, FileTypeRegexes.Styles));
/** @type {import('@jest/types').Config.InitialOptions} */
const jestConfig = {
...defaults,
rootDir: Paths.ROOT.ABS,
testEnvironment: 'jsdom',
setupFilesAfterEnv: [
Paths.getFileAbsPath(Paths.CONFIG.JEST.ABS, 'jestSetup.js'),
Paths.getFileAbsPath(Paths.MOCKS.ABS, 'MockConfig.js'), // Mock network requests using default MockRequests configuration in mocks/MockConfig.js
],
// Alternative to setting NODE_PATH (which defaults to `/`).
// `moduleNameMapper` allows more fine-grained control, which is better
// for our use case since we have multiple import aliases.
// modulePaths: [
// Paths.SRC.ABS
// ],
moduleNameMapper: ImportAliases.toCustomObject({
// e.g. { '@': 'src' } => { '^@/(.*)$': '<rootDir>/src/$1' }
aliasModifier: alias => `^${ImportAliases.stripTrailingSlash(alias)}/(.*)$`,
pathMatchModifier: pathMatch => `<rootDir>/${pathMatch}/$1`,
}),
modulePathIgnorePatterns: [
Paths.BUILD_ROOT.ABS,
],
transform: {
[scriptFiles]: [
'babel-jest',
{
configFile: Paths.getFileAbsPath(Paths.CONFIG.ABS, 'babel.config.js'),
},
],
[assetFiles]: Paths.getFileAbsPath(Paths.CONFIG.JEST.ABS, 'jestAssetTransformer.mjs'),
},
// collectCoverage,
coveragePathIgnorePatterns: nonSrcJestDirs,
// TODO Add custom CLI arg to activate showing coverage for all src files, not just those used in tests
// collectCoverageFrom: [
// `${Paths.SRC.REL}/**/*.[jt]s?(x)`
// ]
};
export default jestConfig;