"use strict";
/**
* Help description.
*
* @function
* @name help
* @arg {function} d - Function to process option description.
* @arg {function} cb - Callback to expand default help.
*/
require("colors");
var U = require("glace-utils");
var plugins = require("./plugins");
module.exports = (d, cb) => {
d = d || U.switchColor();
cb = cb || (o => o);
var result = U.help(d)
.usage("\nglace [options] [sequence-of-test-files-or-folders]".white.bold)
.options({
/* configuration */
"user-config [path]": {
describe: d("Path to JS file with configuration which will be",
"merged with override default configuration.",
"Default is 'cwd/config.js' (if it exists)."),
type: "string",
group: "Core:",
},
"session-name [name]": {
describe: d("Tests run session name.",
"Default value includes word 'session' and datetime."),
type: "string",
group: "Core:",
},
"grep <pattern>": {
alias: "g",
describe: d("Filter tests by part of name (powered by mocha)."),
type: "string",
group: "Core:",
},
"include <sequence>": {
describe: d("Sequence of test name parts separated by ' | '",
"in order to choose tests for run. Or path to json file",
"with test names and params."),
type: "string",
group: "Core:",
},
"exclude <sequence>": {
describe: d("Sequence of test name parts separated by ' | '",
"in order to exclude tests from run. Or path to json file",
"with test names."),
type: "string",
group: "Core:",
},
"precise-match": {
describe: d("Precise tests inclusion or exclusion (not substring pattern)."),
type: "boolean",
group: "Core:",
},
"report-dir [path]": {
describe: d("Path to report folder. Default is 'cwd/report'."),
type: "string",
group: "Core:",
},
"dont-clear-report": {
describe: d("Don't clear previous report on tests run."),
type: "boolean",
group: "Core:",
},
"dont-check-names": {
describe: d("Don't check test names uniqueness",
"(usually useful in unit testing)."),
type: "boolean",
group: "Core:",
},
"failed-tests-path [path]": {
describe: d("Path to save failed tests in JSON format.",
"Default is 'cwd/report/failed-tests.json'."),
type: "string",
group: "Core:",
},
"root-conftest <path>": {
describe: d("Path to root conftest.js which will be loaded",
"before all."),
type: "string",
group: "Core:",
},
"languages <sequence>": {
describe: d("List of tested languages separated with comma."),
type: "string",
group: "Core:",
},
"retry [times]": {
describe: d("Number of times to retry failed test.",
"Default is 0."),
type: "number",
group: "Core:",
},
"chunk-retry [times]": {
describe: d("Number of times to retry failed chunk.",
"Default is 0."),
type: "number",
group: "Core:",
},
"chunk-timeout [sec]": {
describe: d("Time to execute chunk or hook, sec.",
"Default is 180."),
type: "number",
group: "Core:",
},
"uncaught [type]": {
describe: d("Strategy to process uncaught exceptions.",
"Default value is 'log'. See details in",
"https://glacejs.github.io/glace-core"),
type: "string",
choices: [ "log", "fail", "mocha" ],
group: "Core:",
},
"kill-procs <sequence>": {
describe: d("List of process names separated with comma,",
"which will be killed before tests run."),
type: "string",
group: "Core:",
},
"debug-on-fail": {
describe: d("Enter to interactive debug mode on step failure.",
"Incompatible with '--slaves' option."),
type: "boolean",
group: "Core:",
},
"exit-on-fail": {
describe: d("Finish test run on first failure."),
type: "boolean",
group: "Core:",
},
"dots": {
describe: d("Print dots instead of test & chunk names."),
type: "boolean",
group: "Core:",
},
"errors-now": {
describe: d("Print error message immediately when it happened."),
type: "boolean",
group: "Core:",
},
"deep-errors": {
describe: d("Print deep objects structure in error message."),
type: "boolean",
group: "Core:",
},
"interactive": {
describe: d("Launch interactive mode to execute steps",
"manually in terminal. Incompatible with '--slaves' option."),
alias: "i",
type: "boolean",
group: "Core:",
},
"slaves <number|auto>": {
describe: d("Split tests by slaves and execute them in",
"separated processes in parallel."),
type: "string",
group: "Core:",
},
/* plugins */
"list-plugins": {
describe: d("List plugins end exit."),
type: "boolean",
group: "Plugins:",
},
"plugins-dir [path]": {
describe: d("Path to custom plugins folder. By default it searches",
"plugins inside folder, where 'glace-core' is installed."),
type: "string",
group: "Plugins:",
},
"disable-default-plugins": {
describe: d("Disable default plugins."),
type: "boolean",
group: "Plugins:",
},
/* xunit */
"xunit": {
describe: d("Activate xUnit reporter."),
type: "boolean",
group: "xUnit:",
},
"xunit-path [path]": {
describe: d("Path to xUnit report. Default is 'cwd/report/xunit.xml'."),
type: "string",
group: "xUnit:",
},
"xunit-suite-name [name]": {
describe: d("Tests suite name in xUnit report.",
"By default it's the same as session name."),
type: "string",
group: "xUnit:",
},
/* allure */
"allure": {
describe: d("Activate Allure reporter."),
type: "boolean",
group: "Allure:",
},
"allure-dir [path]": {
describe: d("Path to allure report folder. Default is 'cwd/report/allure'."),
type: "string",
group: "Allure:",
},
/* testrail */
"testrail": {
describe: d("Activate TestRail reporter."),
type: "boolean",
group: "TestRail:",
},
"testrail-host <host>": {
describe: d("TestRail host."),
type: "string",
group: "TestRail:",
},
"testrail-user <user>": {
describe: d("TestRail username or email."),
type: "string",
group: "TestRail:",
},
"testrail-token <token>": {
describe: d("TestRail token."),
type: "string",
group: "TestRail:",
},
"testrail-project-id <id>": {
describe: d("TestRail project id."),
type: "string",
group: "TestRail:",
},
"testrail-suite-id <id>": {
describe: d("TestRail suite id."),
type: "string",
group: "TestRail:",
},
"testrail-run-name <name>": {
describe: d("TestRail run name."),
type: "string",
group: "TestRail:",
},
"testrail-run-desc <description>": {
describe: d("TestRail run description."),
type: "string",
group: "TestRail:",
},
/* tools */
"testrail-check": {
describe: d("Check TestRail cases consistency with",
"implemented tests."),
type: "boolean",
group: "Tools:",
},
"list-steps [filter]": {
describe: d("List available steps and exit."),
group: "Tools:",
},
"list-tests [filter]": {
describe: d("List collected tests and exit."),
group: "Tools:",
},
"list-fixtures [filter]": {
describe: d("List available fixtures and exit."),
group: "Tools:",
},
});
for (var help of plugins.getModules("pluginHelp")) {
result = help(result, d);
}
result = cb(result);
result.epilog("Have a green test ;)".green.bold).argv;
};