UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

76 lines 3.18 kB
"use strict"; 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