forked from sourcegraph/sourcegraph-public-snapshot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jest.config.base.js
73 lines (64 loc) · 3.29 KB
/
jest.config.base.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
69
70
71
72
73
// @ts-check
const path = require('path')
// Use the same locale for test runs so that snapshots generated using code that
// uses Intl or toLocaleString() are consistent.
//
// We have to do this at this point instead of in the normal Jest setup hooks
// because ICU (and therefore Intl) only reads the environment once:
// specifically, at the point any Intl object is instantiated. Jest indirectly
// uses a locale-sensitive sort while setting up test suites _before_ invoking
// the setup hooks, so we have no opportunity to change $LANG outside of this
// ugly side effect. (This is especially evident when running tests in-band.)
process.env.LANG = 'en_US.UTF-8'
/** @type {jest.InitialOptions} */
const config = {
// uses latest jsdom and exposes jsdom as a global,
// for example to change the URL in window.location
testEnvironment: __dirname + '/client/shared/dev/jest-environment.js',
collectCoverage: !!process.env.CI,
collectCoverageFrom: ['<rootDir>/src/**/*.{ts,tsx}'],
coverageDirectory: '<rootDir>/coverage',
coveragePathIgnorePatterns: [/\/node_modules\//.source, /\.(test|story)\.tsx?$/.source, /\.d\.ts$/.source],
roots: ['<rootDir>/src'],
// Transform packages that do not distribute CommonJS packages (typically because they only distribute ES6
// modules). If you get an error from jest like "Jest encountered an unexpected token. ... SyntaxError:
// unexpected token import/export", then add it here. See
// https://github.com/facebook/create-react-app/issues/5241#issuecomment-426269242 for more information on why
// this is necessary.
transformIgnorePatterns: [
'/node_modules/(?!abortable-rx|@sourcegraph/react-loading-spinner|@sourcegraph/codeintellify|@sourcegraph/comlink|monaco-editor)',
],
moduleNameMapper: {
'\\.s?css$': 'identity-obj-proxy',
'\\.ya?ml$': 'identity-obj-proxy',
'\\.svg$': 'identity-obj-proxy',
'^worker-loader': 'identity-obj-proxy',
// monaco-editor uses the "module" field in package.json, which isn't supported by Jest
// https://github.com/facebook/jest/issues/2702
// https://github.com/Microsoft/monaco-editor/issues/996
'^monaco-editor': 'monaco-editor/esm/vs/editor/editor.main.js',
},
modulePaths: ['node_modules', '<rootDir>/src'],
// By default, don't clutter `yarn test --watch` output with the full coverage table. To see it, use the
// `--coverageReporters text` jest option.
coverageReporters: ['json', 'lcov', 'text-summary'],
setupFiles: [
path.join(__dirname, 'client/shared/dev/mockDate.js'),
// Needed for reusing API functions that use fetch
// Neither NodeJS nor JSDOM have fetch + AbortController yet
require.resolve('abort-controller/polyfill'),
path.join(__dirname, 'client/shared/dev/fetch'),
path.join(__dirname, 'client/shared/dev/setLinkComponentForTest.ts'),
path.join(__dirname, 'client/shared/dev/mockUniqueId.ts'),
// Enzyme setup file
path.join(__dirname, 'client/shared/dev/enzymeSetup.js'),
],
setupFilesAfterEnv: [
require.resolve('core-js/stable'),
require.resolve('regenerator-runtime/runtime'),
require.resolve('@testing-library/jest-dom'),
],
globalSetup: path.join(__dirname, 'client/shared/dev/jestGlobalSetup.js'),
snapshotSerializers: [path.join(__dirname, 'client/shared/dev/enzymeSerializer.js')],
}
module.exports = config