UNPKG

2.19 kBJavaScriptView Raw
1const ci = !!process.env.CI;
2const watch = !!process.env.WATCH;
3const live = !!process.env.LIVE;
4const es5 = !!process.env.ES5;
5
6const ip = "bs-local.com";
7
8const browserstack = require("./browserstack-karma.js");
9
10// https://www.browserstack.com/open-source (text search "parallels")
11// Instead of the 5 available we only use 2, so two commits can run CI at the same time
12const BROWSERSTACK_OPEN_SOURCE_CONCURRENCY = 2;
13
14const getBrowserstackBrowsers = () =>
15 Object.keys(browserstack).filter((k) => !!browserstack[k].es5 === es5);
16
17const browsers = ci
18 ? getBrowserstackBrowsers()
19 : live
20 ? undefined
21 : watch
22 ? ["Chrome"]
23 : ["ChromeHeadless", "FirefoxHeadless"];
24
25module.exports = function (config) {
26 config.set({
27 basePath: ".",
28 frameworks: ["mocha", "karma-typescript"],
29 // list of files / patterns to load in the browser
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};