This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 117
/
karma.conf.ts
122 lines (115 loc) · 3.21 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
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
"use strict";
import { Config, ConfigOptions } from "karma";
const path = require("path");
const fs = require("fs");
const tsconfig = require("./tsconfig.test.json");
const webpack = require("./webpack.config.test.js");
const testRecursivePath = "./tests/karma/**/*.ts";
const coreTestsRecursivePath = "./tests/unit/**/*.ts";
const browser = "ChromeHeadless";
const devBrowser = "ChromeHeadless";
const karmaSnapshotsDirectory = `tests/karma/${browser}/__snapshots__/**/*.md`;
const styles = ["../dist/styles/app.css", "../dist/styles/page.css"];
function resolve(basePath: string, suiteName: string) {
return path.join(
basePath,
`tests/karma/${browser}/__snapshots__`,
suiteName + ".md"
);
}
const pathPrefix = "tests/unit/charts";
const cases: string[] = fs
.readdirSync("./src/" + pathPrefix)
.map((testCase: string) => path.join(pathPrefix, testCase));
process.env.CHROME_BIN = require("puppeteer").executablePath();
const webpackConfig = webpack(undefined, { mode: "developement" });
module.exports = (config: Config) => {
config.set({
mode: "development",
browserNoActivityTimeout: 100000,
browsers: ["ChromeHeadlessNoSandbox"],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: "ChromeHeadless",
flags: [
"--no-sandbox",
"--disable-setuid-sandbox",
"--headless",
"--disable-gpu",
"--remote-debugging-port=9222",
],
},
},
colors: true,
frameworks: ["mocha", "webpack", "snapshot", "mocha-snapshot", "viewport"],
reporters: ["mocha"],
singleRun: true,
autoWatch: true,
port: 5001,
plugins: [
require.resolve("karma-coverage"),
require.resolve("karma-typescript"),
require.resolve("karma-mocha"),
require.resolve("karma-mocha-reporter"),
require.resolve("karma-sourcemap-loader"),
require.resolve("karma-chrome-launcher"),
require.resolve("karma-webpack"),
require.resolve("karma-snapshot"),
require.resolve("karma-mocha-snapshot"),
require.resolve("karma-viewport"),
],
basePath: __dirname + "/src",
files: [
{
pattern: "../dist/scripts/config.json",
watched: false,
served: true,
included: false,
},
...cases.map((cases: string) => {
return {
pattern: cases,
watched: false,
served: true,
included: false,
};
}),
testRecursivePath,
coreTestsRecursivePath,
...styles,
karmaSnapshotsDirectory,
],
preprocessors: {
[testRecursivePath]: ["webpack"],
[coreTestsRecursivePath]: ["webpack"],
[karmaSnapshotsDirectory]: ["snapshot"],
},
snapshot: {
update: false,
prune: false,
checkSourceFile: false,
pathResolver: resolve,
},
viewport: {},
mochaReporter: {
showDiff: true,
},
client: {
mocha: {
reporter: "html",
ui: "bdd",
},
},
typescriptPreprocessor: {
...tsconfig,
options: tsconfig.compilerOptions,
},
mime: {
"text/x-typescript": ["ts", "tsx"],
},
webpack: webpackConfig,
webpackMiddleware: {
stats: "errors-only",
},
} as ConfigOptions);
};