66 lines
1.3 KiB
JavaScript
66 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const Server = require('karma').Server;
|
|
|
|
function run(type) {
|
|
const config = getConfig(type);
|
|
const server = new Server(config, function(exitCode) {
|
|
process.exit(exitCode);
|
|
});
|
|
|
|
server.start();
|
|
}
|
|
|
|
function getConfig(type) {
|
|
switch (type) {
|
|
case 'headless':
|
|
case 'hl':
|
|
case 'h':
|
|
return getHeadlessConfig();
|
|
case 'all':
|
|
case 'a':
|
|
return getAllConfig();
|
|
case 'watch':
|
|
case 'w':
|
|
return getWatchConfig();
|
|
default:
|
|
return getSingleConfig();
|
|
}
|
|
}
|
|
|
|
function getSingleConfig() {
|
|
let config = getHeadlessConfig();
|
|
|
|
config.singleRun = true;
|
|
|
|
return config;
|
|
}
|
|
|
|
function getHeadlessConfig() {
|
|
let config = getAllConfig();
|
|
|
|
config.browsers = ['PhantomJS'];
|
|
|
|
return config;
|
|
}
|
|
|
|
function getWatchConfig() {
|
|
let config = getAllConfig(true);
|
|
|
|
config.browsers = ['Chrome'];
|
|
|
|
return config;
|
|
}
|
|
|
|
const getAllConfig = (watch) => ({
|
|
configFile: path.resolve(__dirname, '..', 'karma.conf.js'),
|
|
webpack: require(path.resolve(__dirname, '..', 'webpack', 'webpack.test.js'))(watch),
|
|
});
|
|
|
|
module.exports = run;
|
|
|
|
if (!module.parent) {
|
|
run(process.argv[2]);
|
|
}
|