-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprojector.js
47 lines (40 loc) · 1.17 KB
/
projector.js
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
// @flow
const karma = require('projector-karma');
const spawn = require('spawndamnit');
const { getKarmaConfig } = require('./build/karma-config');
const log = (type /*: string */ = 'log') => (
data /*: { toString: Function }*/,
) =>
// eslint-disable-next-line
console[type](data.toString());
const runKarma = async ({ watch, browserstack }) => {
const config = await getKarmaConfig({
cwd: process.cwd(),
watch,
browserstack,
});
await karma.run({ config, files: [] });
};
const spawnWithLog = async (...args) => {
const child = spawn(...args);
child.on('stdout', log());
child.on('stderr', log('error'));
return child;
};
exports.start = async ({ packages } /*: { packages: string } */) => {
const args = ['start'];
if (packages) {
args.push(`+(${packages.split(',').join('|')})`);
}
await spawnWithLog('yarn', args);
};
exports.testBrowser = async (
{ watch, browserstack } /*: { watch: boolean, browserstack: boolean }*/,
) => {
await runKarma({ watch, browserstack });
};
exports.testBrowserCI = async (
{ watch, browserstack } /*: { watch: boolean, browserstack: boolean }*/,
) => {
await runKarma({ watch, browserstack });
};