使用Nightwatch-Cucumber测试执行后生成黄瓜报告

时间:2017-08-28 13:27:03

标签: node.js cucumber nightwatch.js

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 3Event Handler不再可用。现在我想使用AfterAll的{​​{1}}函数,但是在执行Cucumber.js函数时不会生成黄瓜json报告的内容。所以我得到异常AfterAll,因为此时黄瓜json文件是空的。如何在reports/json_result/cucumber.json: Unexpected end of JSON input之类的测试执行后生成Cucumber报告以进行拆除。

这是我目前的代码:

AfterAll

1 个答案:

答案 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顺序并跨平台工作。