skutter
Version:
Skutter: Opinionated BDD Browser based test framework
63 lines (62 loc) • 2.3 kB
JavaScript
;
const node_module_finder_1 = require("../services/node-module-finder");
const process_error_sender_1 = require("../services/process-error-sender");
function CannotBeUndefined(propertyName) {
throw Error(`ExecutorInit: Property ${propertyName} was not defined.`);
}
function teardownOnError() {
console.log("[ExecutorInit] Tearing down due to error.");
if (browser) {
browser.close();
browser.quit();
}
setTimeout(() => {
process.exit(-1);
}, 100);
}
class ExecutorInit {
static execute(payload = CannotBeUndefined("payload")) {
global.skutterConfig = {
libraryPaths: payload.stepLibraryPaths,
basePath: payload.screenshotRootPath,
features: payload.features,
verbosity: payload.verbosity,
};
let protractorLauncherLocation = null;
try {
protractorLauncherLocation = node_module_finder_1.NodeModuleFinder.find("protractor/lib/launcher.js");
}
catch (exception) {
process_error_sender_1.ProcessErrorSender.send("executor-init", "Protractor launcher was not found in expected location.", exception)
.then(() => {
teardownOnError();
});
}
let protractorRunner = null;
try {
protractorRunner = require(protractorLauncherLocation);
}
catch (exception) {
process_error_sender_1.ProcessErrorSender.send("executor-init", "Error loading protractor runner.", exception)
.then(() => {
teardownOnError();
});
}
if (!payload.protractorArgs) {
process_error_sender_1.ProcessErrorSender.send("executor-init", "Protractor configuration not provided.")
.then(() => {
teardownOnError();
});
}
try {
protractorRunner.init(payload.protractorArgs.configPath, payload.protractorArgs);
}
catch (exception) {
process_error_sender_1.ProcessErrorSender.send("executor-init", "Error initialising protractor runner.", exception)
.then(() => {
teardownOnError();
});
}
}
}
exports.ExecutorInit = ExecutorInit;