@cbt/karma-cbt-launcher
Version:
Custom launcher for Karma that allows testing remotely through CrossBrowserTesting.
57 lines (51 loc) • 1.55 kB
JavaScript
/*
This code was originally taken and modified from Actano/Marcus Mennemeier's karma-cbt-launcher.
The original code can be found at http://github.com/actano/karma-cbt-launcher
*/
const consoleLogger = require('./console-logger');
const cbt = require('cbt_tunnels');
let log = consoleLogger('cbt-tunnel');
let tunnelProm;
let isRunning = false;
module.exports = {
setLogger: (logger) => log = logger.create('cbt-tunnel'),
stop: () => {
if(!isRunning)
cbt.stop();
isRunning = false;
},
start:() => new Promise(async(resolve, reject) => {
let cbtConfig = {
username: module.exports.username,
authkey: module.exports.authkey,
quiet: false
};
if(isRunning) {
//tunnel is already up
resolve();
} else if(tunnelProm) {
// tunnel already started. wait until done
try {
resolve(await tunnelProm);
} catch(err) {
reject(err);
}
} else {
tunnelProm = new Promise((resolve, reject) => {
cbt.start(cbtConfig, err => {
if(err) {
reject(err);
} else {
isRunning = true;
resolve();
}
});
});
try {
resolve(await tunnelProm);
} catch(err) {
reject(err);
}
}
})
};