2017-10-11 48 views
1

我想创建黄瓜HTML报告,我是新来的节点JS,我试图寻找它,我用下面的如何创建硒黄瓜HTML报告与节点JS

this.registerHandler('AfterFeatures', function(callback) { 
     try { 
      var options = { 
       theme: "bootstrap", 
       jsonFile: "/report/cucumber.json", 
       output: "/report/cucumber_report.html", 
       reportSuiteAsScenarios: true, 
       launchReport: true, 
       metadata: { 
        "App Version": "0.0.1" 
       } 
      }; 
      reporter.generate(options); 
     } catch (e) { 
      console.log(e); 
     } 
     callback(); 
    }); 

但是,当我运行码,黄瓜功能的场景会被执行并且它最终给了我一个错误,说明,

Unable to parse cucumberjs output into json: '/report/cucumber.json' { Error: /report/cucumber.json: ENOENT: no such file or directory, open '/report/cucumber.json' 
    at Object.fs.openSync (fs.js:652:18) 
    at Object.fs.readFileSync (fs.js:553:33) 
    at Object.readFileSync (/Users/sarav/Documents/GitHub/automationtests/node_modules/jsonfile/index.js:67:22) 
    at isValidJsonFile (/Users/sarav/Documents/GitHub/automationtests/node_modules/cucumber-html-reporter/lib/reporter.js:404:48) 
    at Object.generate (/Users/sarav/Documents/GitHub/automationtests/node_modules/cucumber-html-reporter/lib/reporter.js:426:9) 
    at Object.generateReport [as generate] (/Users/sarav/Documents/GitHub/automationtests/node_modules/cucumber-html-reporter/index.js:30:21) 
    at /Users/sarav/Documents/GitHub/automationtests/features/support/hooks.js:49:22 
    at _combinedTickCallback (internal/process/next_tick.js:131:7) 
    at process._tickCallback (internal/process/next_tick.js:180:9) 
    errno: -2, 
    code: 'ENOENT', 
    syscall: 'open', 
    path: '/report/cucumber.json' } 

执行上面的代码自动生成以.json和.html文件或需要我们手动创建一个以.json文件,并转换到这一个html报告。

我一直在使用Java,它会在执行结束时自动创建json和html报告。

由于这是很新的,我无法弄清楚什么缺少的一部分

感谢

回答

1

你的代码来生成HTML报告会期望JSON文件:/report/cucumber.json一直存在。

因此,您需要其他代码来帮助在测试运行期间生成json文件,我将在我的项目中使用代码以供您参考。

注意:下面的代码只能对黄瓜1工作,不能在Cucumver 2工作,下面是我所使用的版本:

"dependencies": { 
    "cucumber": "1.2.1", 
    "cucumber-html-reporter": "0.2.6", 

1)黄瓜JSON-report.js以产生运行期间的黄瓜JSON报告。

var fs = require('fs-extra'); 
var path = require('path'); 
var moment = require('moment'); 
var Cucumber = require('cucumber'); 

module.exports = function() { 

    var JsonFormatter = Cucumber.Listener.JsonFormatter(); 

    JsonFormatter.log = function(string) { 

    var outputDir = './reports'; 
    var targetJson = outputDir + '/cucumber_report.json'; 

    if (fs.existsSync(outputDir)) { 
     fs.moveSync(outputDir, outputDir + '_' + moment().format('YYYYMMDD_HHmmss') + "_" + Math.floor(Math.random() * 10000), { 
     overwrite: true 
     }); 
    } 
    fs.mkdirSync(outputDir); 
    fs.writeFileSync(targetJson, string); 
    }; 

    this.registerListener(JsonFormatter); 
}; 

2)screenshot.js采取截图的时候失败

module.exports = function() { 

    this.After(function(scenario, callback) { 
    if (scenario.isFailed()) { 
     browser.takeScreenshot().then(function(buffer) { 
     var decodedImage = new Buffer(buffer, 'base64'); 
     scenario.attach(decodedImage, 'image/png'); 
     callback(); 
     }, function(err) { 
     callback(err); 
     }); 
    } else { 
     callback(); 
    } 
    }); 
}; 

3)黄瓜HTML-report.js生成运行结束时,所有的功能后黄瓜HTML报告。

var reporter = require('cucumber-html-reporter'); 

module.exports = function() { 

    this.AfterFeatures(function(features, callback) { 
    var options = { 
     theme: 'bootstrap', 
     jsonFile: 'reports/cucumber_report.json', 
     output: 'reports/cucumber_report.html', 
     reportSuiteAsScenarios: true 
    }; 

    reporter.generate(options); 
    callback(); 
    }); 

};

4)量角器conf.js为包括上述三个文件中cucumberOpts.require

cucumberOpts: { 
    monochrome: true, 
    strict: true, 
    plugin: ["pretty"], 
    require:[ 
     './step_definitions/*step.js', 
     './support/screenshot.js', 
     './support/cucumber-json-reporter.js', 
     './support/cucumber-html-reporter.js' 
    ] 
    tags: '' 
},