-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkarma.conf.ts
87 lines (87 loc) · 1.9 KB
/
karma.conf.ts
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
import karma from "karma";
import puppeteer from "puppeteer";
import mochaConfig from "./.mocharc.json";
process.env.CHROME_BIN = puppeteer.executablePath();
module.exports = function (config: karma.Config) {
const testPattern = "test/**/*.test.ts";
const testHeaders = {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
"Cross-Origin-Resource-Policy": "cross-origin",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Methods": "*",
};
config.set({
basePath: ".",
customHeaders: [
...Object.entries(testHeaders).map(([name, value]) => ({
match: ".*",
name,
value,
})),
],
files: [
{
pattern: testPattern,
included: true,
watched: false,
served: true,
type: "js",
},
],
client: {
// @ts-ignore
mocha: {
ui: mochaConfig.ui,
timeout: mochaConfig.timeout,
},
},
concurrency: 1,
autoWatch: false,
singleRun: true,
logLevel: config.LOG_WARN,
frameworks: ["mocha", "webpack"],
browsers: ["ChromeHeadless"],
webpackMiddleware: {
/* empty */
},
webpack: {
resolve: {
extensions: [".ts", ".tsx", ".js", ".tsx", ".json", ".mjs", ".cjs"],
modules: ["node_modules"],
// @ts-ignore
fallback: {
path: require.resolve("path-browserify"),
},
},
module: {
rules: [
{
test: /\.worker\.[tj]s?$/,
loader: "worker-loader",
options: {
inline: "no-fallback",
},
},
{
test: /\.test\.[tj]s?$/,
loader: "string-replace-loader",
options: {
search: 'Worker("./test/test.worker.js", { type: "module" })',
replace: '(require("./test.worker").default)()',
},
},
{
test: /\.c?[tj]sx?$/i,
exclude: /(node_modules)/,
loader: "esbuild-loader",
},
],
},
},
preprocessors: {
[testPattern]: ["webpack"],
},
});
};