flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
207 lines • 7.98 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.promptList = exports.promptToggle = exports.promptConfirm = exports.promptSelect = exports.promptMultiSelect = exports.promptTextDescription = exports.promptTextPath = exports.promptUrl = exports.promptTextName = exports.stringArrayToPromptChoices = exports.trimInput = exports.findJsFilesInTestFolder = exports.findDetachedSuites = exports.printLine = exports.printSubheader = exports.printOldHeader = exports.printHeader = void 0;
const flagpole_execution_1 = require("../flagpole-execution");
const fs = require("fs-extra");
const path_1 = require("path");
const cli_ansi_1 = require("cli-ansi");
function printHeader(alwaysPrint = false) {
if (alwaysPrint || flagpole_execution_1.FlagpoleExecution.global.shouldOutputToConsole) {
console.log("\u001b[0m \u001b[37m^\u001b[0m ");
console.log("\u001b[0m \u001b[47m \u001b[0m \u001b[44m\u001b[37m ****** \u001b[41m \u001b[0m\u001b[37;1m\u001b[1m F L A G P O L E J S");
console.log("\u001b[0m \u001b[47m \u001b[0m \u001b[44m\u001b[37m ****** \u001b[47m \u001b[0m");
console.log("\u001b[0m \u001b[47m \u001b[0m \u001b[44m\u001b[37m ****** \u001b[41m \u001b[0m\u001b[238m Version 2.3");
console.log("\u001b[0m \u001b[47m \u001b[0m \u001b[47m \u001b[0m");
console.log("\u001b[0m \u001b[47m \u001b[0m \u001b[41m \u001b[0m");
console.log("\u001b[0m \u001b[47m \u001b[0m ");
}
}
exports.printHeader = printHeader;
function printOldHeader() {
if (flagpole_execution_1.FlagpoleExecution.global.shouldOutputToConsole) {
console.log("\x1b[32m", `
\x1b[31m $$$$$$$$\\ $$\\ $$\\
\x1b[31m $$ _____|$$ | $$ |
\x1b[31m $$ | $$ | $$$$$$\\ $$$$$$\\ $$$$$$\\ $$$$$$\\ $$ | $$$$$$\\
\x1b[31m $$$$$\\ $$ | \\____$$\\ $$ __$$\\ $$ __$$\\ $$ __$$\\ $$ |$$ __$$\\
\x1b[37m $$ __| $$ | $$$$$$$ |$$ / $$ |$$ / $$ |$$ / $$ |$$ |$$$$$$$$ |
\x1b[37m $$ | $$ |$$ __$$ |$$ | $$ |$$ | $$ |$$ | $$ |$$ |$$ ____|
\x1b[37m $$ | $$ |\\$$$$$$$ |\\$$$$$$$ |$$$$$$$ |\\$$$$$$ |$$ |\\$$$$$$$\\
\x1b[34m \\__| \\__| \\_______| \\____$$ |$$ ____/ \\______/ \\__| \\_______|
\x1b[34m $$\\ $$ |$$ |
\x1b[34m \\$$$$$$ |$$ |
\x1b[34m \\______/ \\__|`, "\x1b[0m", "\n");
}
}
exports.printOldHeader = printOldHeader;
function printSubheader(heading) {
if (flagpole_execution_1.FlagpoleExecution.global.shouldOutputToConsole) {
console.log(cli_ansi_1.default.center("\x1b[31m===========================================================================\x1b[0m\n" +
"\x1b[0m" +
heading +
"\n" +
"\x1b[31m===========================================================================\x1b[0m\n"));
}
}
exports.printSubheader = printSubheader;
function printLine(...messages) {
if (flagpole_execution_1.FlagpoleExecution.global.shouldOutputToConsole) {
messages.forEach((message) => {
console.log(message);
});
}
}
exports.printLine = printLine;
function findDetachedSuites() {
const suitesInFolder = findJsFilesInTestFolder();
const suitesAvailableToImport = [];
const suitesInConfig = flagpole_execution_1.FlagpoleExecution.global.config.getSuiteNames() || [];
suitesInFolder.forEach((suiteName) => {
if (!suitesInConfig.includes(suiteName)) {
suitesAvailableToImport.push(suiteName);
}
});
return suitesAvailableToImport;
}
exports.findDetachedSuites = findDetachedSuites;
function findJsFilesInTestFolder() {
const startFolder = flagpole_execution_1.FlagpoleExecution.global.config.getTestsFolder();
const suitesInFolder = [];
function findSuites(dir, isSubFolder = false) {
if (fs.pathExistsSync(dir)) {
const files = fs.readdirSync(dir);
files
.filter((file) => flagpole_execution_1.FlagpoleExecution.global.config.project.patternRegEx.test(file))
.forEach((file) => {
if (!isSubFolder && fs.statSync(dir + file).isDirectory()) {
findSuites(`${dir}${file}${path_1.sep}`, true);
}
else if (file.endsWith(".js")) {
const name = (dir + file)
.replace(startFolder, "")
.replace(/\.js$/i, "");
suitesInFolder.push(name);
}
});
}
}
findSuites(startFolder);
return suitesInFolder;
}
exports.findJsFilesInTestFolder = findJsFilesInTestFolder;
function trimInput(input) {
return input.trim();
}
exports.trimInput = trimInput;
function stringArrayToPromptChoices(arr) {
const out = [];
arr.forEach((item) => {
out.push({ title: item, value: item });
});
return out;
}
exports.stringArrayToPromptChoices = stringArrayToPromptChoices;
function promptTextName(name, message, initial) {
return {
type: "text",
name: name,
message: message,
initial: initial || "",
format: trimInput,
validate: (input) => {
return /^[a-z0-9][a-z0-9\/_.-]{1,62}[a-z0-9]$/i.test(input);
},
};
}
exports.promptTextName = promptTextName;
function promptUrl(name, message, initial) {
return {
type: "text",
name: name,
message: message,
initial: initial || "",
format: trimInput,
validate: (input) => {
return /^https?:\/\/[a-z0-9]/i.test(input);
},
};
}
exports.promptUrl = promptUrl;
function promptTextPath(name, message, initial) {
return {
type: "text",
name: name,
message: message,
initial: initial || "/",
format: trimInput,
};
}
exports.promptTextPath = promptTextPath;
function promptTextDescription(name, message, initial) {
return {
type: "text",
name: name,
message: message,
initial: initial || "",
format: trimInput,
};
}
exports.promptTextDescription = promptTextDescription;
function promptMultiSelect(name, message, choices, minSelections = 1, maxSeletions) {
return {
type: "multiselect",
name: name,
min: minSelections,
max: maxSeletions,
message: message,
choices: choices,
};
}
exports.promptMultiSelect = promptMultiSelect;
function promptSelect(name, message, choices, initial) {
const obj = {
type: "select",
name: name,
message: message,
choices: choices,
};
if (initial !== undefined) {
obj.initial = initial || 0;
}
return obj;
}
exports.promptSelect = promptSelect;
function promptConfirm(name, message, initial = false) {
return {
type: "confirm",
name: name,
message: message,
initial: initial,
};
}
exports.promptConfirm = promptConfirm;
function promptToggle(name, message, initial = false, yesText = "yes", noText = "no") {
return {
type: "toggle",
name: name,
message: message,
initial: initial,
active: yesText,
inactive: noText,
};
}
exports.promptToggle = promptToggle;
function promptList(name, message) {
return {
type: "list",
name: name,
message: message,
separator: " ",
initial: "",
validate: function (input) {
return /^[A-Z0-9 -_]*$/i.test(input);
},
};
}
exports.promptList = promptList;
//# sourceMappingURL=cli-helper.js.map
;