-
Notifications
You must be signed in to change notification settings - Fork 22
/
jest.config.js
122 lines (117 loc) · 3.44 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
* Copyright (C) 2024 PixieBrix, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// These strings are used as "starts with"
const esmPackages = [
"@cfworker/",
"@sindresorhus/",
"abort-utils",
"batched-function",
"copy-text-to-clipboard",
"create-html-element",
"escape-goat",
"escape-string-regexp",
"filename-reserved-regex",
"filenamify",
"idb",
"intrinsic-scale",
"is-network-error",
"ky",
"linkify-urls",
"lodash-es",
"mimic-fn",
"nanoid",
"one-event",
"p-defer",
"p-memoize",
"p-retry",
"p-timeout",
"proper-event",
"react-base16-styling",
"react-json-tree",
"serialize-error",
"stemmer",
"stringify-attributes",
"strip-outer",
"text-field-edit",
"trim-repeated",
"uint8array-extras",
"urlpattern-polyfill",
"use-debounce",
"uuid",
"webext-",
];
const config = {
silent: true,
// Uncomment to run tests serially, which can be useful for debugging or avoiding flaky tests.
// maxWorkers: 1,
testEnvironment: "./src/testUtils/FixJsdomEnvironment.js",
modulePaths: ["/src"],
moduleFileExtensions: [
"ts",
"tsx",
"js",
"jsx",
"mjs",
"yaml",
"yml",
"json",
],
modulePathIgnorePatterns: ["<rootDir>/headers.json", "<rootDir>/dist/"],
testPathIgnorePatterns: ["/end-to-end-tests"],
transform: {
"\\.[jt]sx?$": "@swc/jest",
"\\.mjs$": "@swc/jest",
"\\.ya?ml$": "yaml-jest-transform",
"\\.txt$": "<rootDir>/src/testUtils/rawJestTransformer.mjs",
// Note: `?param` URLs aren't supported here: https://github.com/jestjs/jest/pull/6282
// You can only use a mock via `moduleNameMapper` for these.
},
transformIgnorePatterns: [`node_modules/(?!${esmPackages.join("|")})`],
setupFiles: [
"dotenv/config",
"<rootDir>/src/testUtils/testEnv.js",
"jest-webextension-mock",
"fake-indexeddb/auto",
],
setupFilesAfterEnv: [
"<rootDir>/src/testUtils/testAfterEnv.ts",
"<rootDir>/src/testUtils/injectRegistries.ts",
"<rootDir>/src/testUtils/extendedExpectations.ts",
"jest-extended/all",
],
reporters: ["default", "github-actions"],
coverageReporters: ["json"],
collectCoverageFrom: [
"src/**/*.{ts,tsx}",
"!src/**/*.stories.tsx",
"!**/__mocks__/**",
"!**/node_modules/**",
"!**/vendor/**",
],
moduleNameMapper: {
"^@contrib/([^?]+)": "<rootDir>/contrib/$1",
"^@schemas/([^?]+)": "<rootDir>/schemas/$1",
"\\.s?css$": "identity-obj-proxy",
"\\.(gif|svg|png)$": "<rootDir>/src/__mocks__/stringMock.js",
"\\?loadAsUrl$": "<rootDir>/src/__mocks__/stringMock.js",
"\\?loadAsText$": "<rootDir>/src/__mocks__/stringMock.js",
"\\?loadAsComponent$": "<rootDir>/src/__mocks__/stringMock.js",
// Auto-mocks. See documentation in ./src/__mocks__/readme.md
"^@/(.*)$": ["<rootDir>/src/__mocks__/@/$1", "<rootDir>/src/$1"],
},
};
module.exports = config;