artes
Version:
The simplest way to automate UI and API tests using Cucumber-style steps.
60 lines (47 loc) โข 1.65 kB
JavaScript
const { spawnSync } = require("child_process");
const { moduleConfig } = require("../imports/commons");
const path = require("path");
function runTests(args, flags) {
const env = args[args.indexOf("--env") + 1];
const featureFiles = args[args.indexOf("--features") + 1];
const features = flags.features && featureFiles;
const tags = args[args.indexOf("--tags") + 1];
flags.env && console.log("Running env:", env);
flags.env ? (process.env.ENV = JSON.stringify(env)) : "";
flags.report
? (process.env.REPORT_FORMAT = JSON.stringify([
"rerun:@rerun.txt",
"allure-cucumberjs/reporter",
]))
: "";
flags.tags && console.log("Running tags:", tags);
flags.tags ? (process.env.RUN_TAGS = JSON.stringify(tags)) : "";
flags.features && console.log("Running features:", features);
flags.features ? (process.env.FEATURES = features) : "";
flags.headless &&
console.log("Running mode:", flags.headless ? "headless" : "headed");
flags.headless ? (process.env.MODE = JSON.stringify(true)) : false;
try {
console.log("๐งช Running tests...");
process.env.FORCE_COLOR = "1";
process.env.FORCE_STDIO_TTY = "1";
const result = spawnSync("cucumber-js", ["--config=cucumber.config.js"], {
cwd: moduleConfig.modulePath,
stdio: "inherit",
shell: true,
env: {
...process.env,
FORCE_TTY: "1",
FORCE_COLOR: "1",
CI: "false",
},
});
console.log("โ
Tests completed successfully!");
} catch (error) {
console.error("โ Test execution failed:", error);
process.exit(1);
}
}
module.exports = {
runTests,
};