1 | const ci = !!process.env.CI;
|
2 | const watch = !!process.env.WATCH;
|
3 | const live = !!process.env.LIVE;
|
4 | const es5 = !!process.env.ES5;
|
5 |
|
6 | const ip = "bs-local.com";
|
7 |
|
8 | const browserstack = require("./browserstack-karma.js");
|
9 |
|
10 |
|
11 |
|
12 | const BROWSERSTACK_OPEN_SOURCE_CONCURRENCY = 2;
|
13 |
|
14 | const getBrowserstackBrowsers = () =>
|
15 | Object.keys(browserstack).filter((k) => !!browserstack[k].es5 === es5);
|
16 |
|
17 | const browsers = ci
|
18 | ? getBrowserstackBrowsers()
|
19 | : live
|
20 | ? undefined
|
21 | : watch
|
22 | ? ["Chrome"]
|
23 | : ["ChromeHeadless", "FirefoxHeadless"];
|
24 |
|
25 | module.exports = function (config) {
|
26 | config.set({
|
27 | basePath: ".",
|
28 | frameworks: ["mocha", "karma-typescript"],
|
29 |
|
30 | files: process.env.FILES_PATTERN.split(",")
|
31 | .map((p) => ({ pattern: p }))
|
32 | .concat({ pattern: "src/**/*.ts" }),
|
33 | preprocessors: {
|
34 | "**/*.ts": "karma-typescript",
|
35 | "**/*.tsx": "karma-typescript",
|
36 | },
|
37 | plugins: [
|
38 | "karma-mocha",
|
39 | "karma-typescript",
|
40 | "karma-mocha-reporter",
|
41 | "karma-chrome-launcher",
|
42 | "karma-firefox-launcher",
|
43 | "karma-browserstack-launcher",
|
44 | ],
|
45 | hostname: ci ? ip : "localhost",
|
46 | karmaTypescriptConfig: {
|
47 | compilerOptions: {
|
48 | ...require("./tsconfig.json").compilerOptions,
|
49 | ...require("./test/tsconfig.json").compilerOptions,
|
50 | sourceMap: false,
|
51 | inlineSourceMap: true,
|
52 | target: es5 ? "es5" : "es6",
|
53 | },
|
54 | bundlerOptions: {
|
55 | sourceMap: true,
|
56 | },
|
57 | include: process.env.FILES_PATTERN.split(",").concat("src/**/*.ts"),
|
58 | },
|
59 | browserStack: {
|
60 | name: "Snabbdom",
|
61 | retryLimit: 1,
|
62 | },
|
63 | client: {
|
64 | captureConsole: true,
|
65 | },
|
66 | customLaunchers: browserstack,
|
67 | reporters: ["karma-typescript", "mocha", "BrowserStack"],
|
68 | mochaReporter: {
|
69 | showDiff: true,
|
70 | },
|
71 | port: 9876,
|
72 | colors: true,
|
73 | autoWatch: true,
|
74 | browsers: browsers,
|
75 | singleRun: !watch && !live,
|
76 | concurrency: ci ? BROWSERSTACK_OPEN_SOURCE_CONCURRENCY : Infinity,
|
77 | });
|
78 | };
|