flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
77 lines • 3.14 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const cli_1 = require("./cli");
const testrunner_1 = require("./testrunner");
const cli_ansi_1 = require("./cli-ansi");
const flagpoleexecutionoptions_1 = require("../flagpoleexecutionoptions");
const ansi = new cli_ansi_1.CliAnsi();
exports.run = (suiteNames, tag) => __awaiter(this, void 0, void 0, function* () {
const suitesInProject = cli_1.Cli.config.getSuites();
let selectedSuites = [];
if (suiteNames.length) {
let regEx = (function () {
let arr = [];
suiteNames.forEach((name) => {
arr.push(name
.replace(/([.+^=!:${}()|\[\]\/\\])/g, "\\$1")
.replace('*', '.*'));
});
return new RegExp(`^${arr.join('|')}$`, 'i');
})();
suitesInProject.forEach(function (suite) {
if (regEx.test(suite.name)) {
selectedSuites.push(suite);
}
});
}
else if (tag.length) {
suitesInProject.forEach(function (suite) {
if (suite.tags.includes(tag)) {
selectedSuites.push(suite);
}
});
}
else {
selectedSuites = suitesInProject;
}
return runSuites(selectedSuites);
});
const runSuites = (selectedSuites) => __awaiter(this, void 0, void 0, function* () {
const runner = new testrunner_1.TestRunner();
selectedSuites.forEach(function (suite) {
runner.addSuite(suite);
});
if (flagpoleexecutionoptions_1.FlagpoleExecution.opts.output == flagpoleexecutionoptions_1.FlagpoleOutput.console) {
if (runner.suites.length == 0) {
cli_1.Cli.log("Did not find any test suites to run.\n");
cli_1.Cli.exit(2);
}
ansi.writeLine();
const states = ['/', '—', '\\', '|'];
let stateIndex = 0;
let statusMessage = `Loading ${runner.suites.length} test suites...`;
let timer = setInterval(() => {
ansi.writeLine(ansi.cursorUp(), ansi.eraseLine(), `${states[stateIndex]} ${statusMessage}`);
stateIndex = (stateIndex < states.length - 1) ? stateIndex + 1 : 0;
}, 100);
runner.subscribe((message) => {
statusMessage = message;
});
yield runner.runSpawn();
clearInterval(timer);
ansi.write(ansi.eraseLines(2));
}
else {
yield runner.runSpawn();
}
cli_1.Cli.exit(runner.exitCode);
});
//# sourceMappingURL=run.js.map