UNPKG

flagpole

Version:

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

207 lines 7.98 kB
"use strict"; 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