2017-08-28 188 views
0

直到[email protected]框架使用Cucumber 2,我意識到我的黃瓜報表生成與一個Event Handler鉤測試執行後直接,如:生成測試執行與Nightwatch黃瓜嫁接黃瓜報告

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(); 
    }); 
}); 

但由於[email protected]的框架使用Cucumber 3Event Handler不再可用。現在我想使用AfterAll函數Cucumber.js,但是在執行AfterAll函數時不會生成黃瓜json報告的內容。所以我得到異常reports/json_result/cucumber.json: Unexpected end of JSON input,因爲黃瓜json文件在這個時候是空的。我怎樣才能在測試執行後生成一個黃瓜報告,如AfterAll用於拆卸。

這裏是我當前的代碼:

const reporter = require("cucumber-html-reporter"); 

defineSupportCode(function({ AfterAll }) { 
    AfterAll(function(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(); 
    }); 
}); 

回答

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-腳本順序和工作跨平臺。