在Nightwatch-Cucumber@7.3.1
框架使用Cucumber 2
之前,我在测试执行后直接在Event Handler
的钩子中实现了我的Cucumber报告生成,如:
const reporter = require("cucumber-html-reporter");
defineSupportCode(function({ registerHandler }) {
registerHandler("AfterFeature", function(features, callback) {
try {
var options = {
theme: "bootstrap",
jsonFile: "./reports/json_result/cucumber.json",
output: "./reports/json_result/cucumber_report.html",
reportSuiteAsScenarios: true,
launchReport: false,
metadata: {
"App Version": "0.0.3"
}
};
reporter.generate(options);
} catch (e) {
console.log(
"Report generation is not possible with the following message:"
);
console.log(e);
}
client.end();
callback();
});
});
但是,由于Nightwatch-Cucumber@8.0.0
框架使用Cucumber 3
而Event Handler
不再可用。现在我想使用AfterAll
的{{1}}函数,但是在执行Cucumber.js
函数时不会生成黄瓜json报告的内容。所以我得到异常AfterAll
,因为此时黄瓜json文件是空的。如何在reports/json_result/cucumber.json: Unexpected end of JSON input
之类的测试执行后生成Cucumber报告以进行拆除。
这是我目前的代码:
AfterAll
答案 0 :(得分:1)
您必须在单独的NodeJs进程中运行报告生成。示例package.json
可以是以下内容。
{
...
"e2e": "npm-run-all e2e-test e2e-report --continue-on-error",
"e2e-test": "nightwatch",
"e2e-report": "node create-html-report.js",
...
}
此示例使用npm-run-all包,该包能够运行多个npm-scripts顺序并跨平台工作。