flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
76 lines • 3.18 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(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(void 0, 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(void 0, 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