Repository navigation
Expand file tree
/
Copy pathjest.config.ts
More file actions
116 lines (111 loc) · 4.5 KB
/
Copy pathjest.config.ts
File metadata and controls
116 lines (111 loc) · 4.5 KB
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
import type {Config} from "jest";
import {availableParallelism} from "node:os";
const shared: Config = {
rootDir: import.meta.dirname,
testEnvironment: "node",
// This function is serialized into browser/VM realms; Istanbul closures cannot cross that boundary.
coveragePathIgnorePatterns: ["/node_modules/", "<rootDir>/src/relay/adapters/invoke-relay\\.ts$"],
globals: {ADNBN_TEST_ROOT: import.meta.dirname},
setupFilesAfterEnv: ["<rootDir>/tests/jest.setup.ts"],
transformIgnorePatterns: ["/node_modules/(?!(@addon-core/storage|nanoid)/)"],
modulePathIgnorePatterns: ["<rootDir>/.cache/"],
resolver: "<rootDir>/tests/raw-module-resolver.cjs",
moduleNameMapper: {
"^#adnbn/(.*)$": "<rootDir>/src/virtual/$1.ts",
"^@cli/(.*)$": "<rootDir>/src/cli/$1",
"^@entry/(.*)$": "<rootDir>/src/entry/$1",
"^@frame/(.*)$": "<rootDir>/src/frame/$1",
"^@locale/(.*)$": "<rootDir>/src/locale/$1",
"^@offscreen/(.*)$": "<rootDir>/src/offscreen/$1",
"^@message/(.*)$": "<rootDir>/src/message/$1",
"^@relay/(.*)$": "<rootDir>/src/relay/$1",
"^@sandbox/(.*)$": "<rootDir>/src/sandbox/$1",
"^@service/(.*)$": "<rootDir>/src/service/$1",
"^@shared/(.*)$": "<rootDir>/src/shared/$1",
"^@storage/(.*)$": "<rootDir>/src/storage/$1",
"^@transport/(.*)$": "<rootDir>/src/transport/$1",
"^@main/(.*)$": "<rootDir>/src/main/$1",
"^@typing/(.*)$": "<rootDir>/src/types/$1",
"^@tests/(.*)$": "<rootDir>/tests/$1",
},
extensionsToTreatAsEsm: [".ts", ".tsx"],
transform: {
"^.+\\.template\\.js$": "<rootDir>/tests/raw-module-transformer.cjs",
"^.+\\.(t|j)sx?$": [
"@swc/jest",
{
sourceMaps: true,
module: {type: "es6"},
jsc: {
target: "es2020",
parser: {syntax: "typescript", tsx: true, decorators: true},
transform: {react: {runtime: "automatic"}},
},
},
],
},
};
const buildTests = [
"<rootDir>/src/cli/bundler/plugins/**/*.test.ts",
"<rootDir>/src/cli/builders/app/**/*.test.ts",
"<rootDir>/src/cli/virtual/virtual.test.ts",
"<rootDir>/src/cli/plugins/content/RelayDeclaration.test.ts",
"<rootDir>/src/cli/plugins/locale/declaration/LocaleDeclaration.test.ts",
"<rootDir>/tests/build-output.test.ts",
"<rootDir>/tests/integration/build/**/*.test.ts",
];
const domTests = [
"<rootDir>/tests/browser-harness-dom.test.ts",
"<rootDir>/src/entry/**/*.test.ts",
"<rootDir>/src/frame/**/*.test.ts",
"<rootDir>/src/sandbox/providers/**/*.test.ts",
"<rootDir>/src/offscreen/OffscreenBridge.test.ts",
"<rootDir>/src/locale/adapters/**/*.test.ts",
"<rootDir>/src/message/adapters/**/*.test.ts",
];
const exclude = (patterns: string[]) =>
patterns.map(pattern => `!${pattern.replace("<rootDir>", import.meta.dirname.replaceAll("\\", "/"))}`);
const config: Config = {
verbose: false,
reporters: ["default", "<rootDir>/tests/BrowserStartupReporter.cjs"],
maxWorkers: Math.max(1, Math.min(8, availableParallelism() - 1)),
coverageProvider: "babel",
projects: [
{
...shared,
displayName: "unit-node",
testMatch: [
"<rootDir>/src/**/*.test.ts",
"<rootDir>/tests/*.test.ts",
"<rootDir>/tests/integration/utils/**/*.test.ts",
"<rootDir>/tests/integration/browser/utils/**/*.test.ts",
...exclude(buildTests),
...exclude(domTests),
],
},
{
...shared,
displayName: "unit-dom",
testEnvironment: "jsdom",
testMatch: domTests,
},
{...shared, displayName: "build", testMatch: buildTests},
{...shared, displayName: "types", testMatch: ["<rootDir>/tests/integration/types/**/*.test.ts"]},
{
...shared,
displayName: "chrome",
setupFilesAfterEnv: [],
testMatch: [
"<rootDir>/tests/integration/browser/**/*.integration.test.ts",
...exclude(["<rootDir>/tests/integration/browser/**/*.firefox.integration.test.ts"]),
],
},
{
...shared,
displayName: "firefox",
setupFilesAfterEnv: [],
testMatch: ["<rootDir>/tests/integration/browser/**/*.firefox.integration.test.ts"],
},
],
};
export default config;