Report 带量角器的黄瓜HTML报告
我正在使用黄瓜量角器(js)。我想生成报告文件,就像JVM版本一样。我见过用量角器测量茉莉花的例子,但在黄瓜上几乎没有 使用此配置时如何生成报告 最终目标是在Jenkins中发布此报告,或者在直接以HTML生成的任何其他地方发布Report 带量角器的黄瓜HTML报告,report,cucumber,reporting,protractor,cucumberjs,Report,Cucumber,Reporting,Protractor,Cucumberjs,我正在使用黄瓜量角器(js)。我想生成报告文件,就像JVM版本一样。我见过用量角器测量茉莉花的例子,但在黄瓜上几乎没有 使用此配置时如何生成报告 最终目标是在Jenkins中发布此报告,或者在直接以HTML生成的任何其他地方发布 谢谢 使用最新版本的量角器(从1.5.0版开始),您现在可以生成JSON报告。大约7个月前,当我问这个问题时,这个功能并不存在 您所需要做的就是将其添加到pergrator-config.json文件中 resultJsonOutputFile: 'report.jso
谢谢 使用最新版本的量角器(从1.5.0版开始),您现在可以生成JSON报告。大约7个月前,当我问这个问题时,这个功能并不存在 您所需要做的就是将其添加到pergrator-config.json文件中
resultJsonOutputFile: 'report.json'
其中report.json是输出文件的位置
一旦有了这些,就可以使用量角器cucumberjunit()、cucumberjs junitxml()或类似的工具将JSON文件转换为Jenkins可以显示的有效XML文件
$ cat report.json | ./node_modules/.bin/cucumber-junit > report.xml
希望这有帮助。您可以使用cucumber html report将json报告转换为html。使用将html报告添加到项目中
$ npm install cucumber-html-report --save-dev
如果使用量角器,则可以将以下代码添加到hooks.js以
- 在每个失败的场景之后,在after钩子中将其附加到json报告中,拍摄一个浏览器屏幕截图
- 即使cucumber opts format属性显示“pretty”,也要将测试结果写入json文件
- 将json报告转换为HTML,包括失败场景的屏幕截图
var outputDir='someDir';
this.After(函数(场景、回调){
if(scenario.isFailed()){
browser.takeScreenshot().then(函数(base64png){
var decodedImage=新缓冲区(base64png,'base64')。toString('binary');
场景。附加(decodedImage,'image/png');
回调();
},函数(err){
回调(err);
});
}否则{
回调();
}
});
var createHtmlReport=函数(sourceJson){
var cucumberchtmlreport=require('cucumber-html-report');
var报告=新黄瓜HTMLReport({
source:sourceJson,//sourceJson
dest:outputDir//目标目录(如果不存在将创建)
});
report.createReport();
};
var JsonFormatter=Cucumber.Listener.JsonFormatter();
JsonFormatter.log=函数(字符串){
如果(!fs.existsSync(outputDir)){
fs.mkdirSync(outputDir);
}
var targetJson=outputDir+'cucumber_report.json';
writeFile(targetJson、字符串、函数(err){
如果(错误){
log('未能将测试结果保存到json文件');
控制台日志(err);
}否则{
创建HtmlReport(targetJson);
}
});
};
registerListener(JsonFormatter)代码>当以另一个答案所示的方式使用cucumber html报告时,您可能会在cucumber/Digrator/cucumber html报告的较新版本上遇到问题
症状是index.html已创建,但在测试运行结束时保留为空
这是因为cucumber html报告正在使用异步文件写入,而量角器并没有等待它完成。(我们使用的代码与答案中的代码极为相似。)
这是一个工作设置:
在hooks.js中,保持屏幕截图部分与其他答案相同:
// Generate a screenshot at the end of each scenario (if failed; configurable to always)
cuke.After(function(scenario, done) {
browser.getProcessedConfig().then(config => {
if (!config.screenshots.onErrorOnly || scenario.isFailed()) {
return browser.driver.takeScreenshot().then(function(png) {
let decodedImage = new Buffer(png.replace(/^data:image\/(png|gif|jpeg);base64,/, ''), 'base64');
scenario.attach(decodedImage, 'image/png');
done();
});
} else {
done();
}
});
});
在paragrator.conf.js中:
var cucumberReportDirectory = 'protractor-report';
var jsonReportFile = cucumberReportDirectory + '/cucumber_report.json';
exports.config = {
cucumberOpts: {
format: 'json:./' + jsonReportFile,
},
onCleanUp: function () {
var CucumberHtmlReport = require('cucumber-html-report');
return CucumberHtmlReport.create({
source: jsonReportFile,
dest: cucumberReportDirectory,
title: 'OptiRoute - Protractor Test Run',
component: new Date().toString()
}).then(console.log).catch(console.log);
},
ignoreUncaughtExceptions: true,
untrackOutstandingTimeouts: true
};
这只是一个与黄瓜html报告直接相关的配置,其余的都是经过调味的
在运行测试之前,请确保报告目录存在
通过将报告创建放在这里,而不是将其附加为Cucumber侦听器,Cucumber将在退出之前等待异步操作完成
感谢您向Ola提供原始答案,我发现了异步问题(困难的方式),并认为当他们发现相同的问题时,我可以为他们节省时间。请尝试下面适合我的代码:
您可以使用以下插件:
在package.json中添加以下依赖项,如下所示:
"cucumber-html-reporter": "^5.0.0"
npm install
点击以下命令:
"cucumber-html-reporter": "^5.0.0"
npm install
在cucumberconfig.ts中添加以下导入
import * as reporter from "cucumber-html-reporter"
onComplete: () => {
//var reporter = require('cucumber-html-reporter');
var options = {
theme: 'bootstrap',
jsonFile: './cucumberreport.json',
output: './cucumberreportsss.html',
reportSuiteAsScenarios: true,
launchReport: true,
metadata: {
"App Version":"0.3.2",
"Test Environment": "STAGING",
"Browser": "Chrome 54.0.2840.98",
"Platform": "Windows 10",
"Parallel": "Scenarios",
"Executed": "Remote"
}
};
reporter.generate(options);
},
现在在cucumberconfig.ts中添加以下键
import * as reporter from "cucumber-html-reporter"
onComplete: () => {
//var reporter = require('cucumber-html-reporter');
var options = {
theme: 'bootstrap',
jsonFile: './cucumberreport.json',
output: './cucumberreportsss.html',
reportSuiteAsScenarios: true,
launchReport: true,
metadata: {
"App Version":"0.3.2",
"Test Environment": "STAGING",
"Browser": "Chrome 54.0.2840.98",
"Platform": "Windows 10",
"Parallel": "Scenarios",
"Executed": "Remote"
}
};
reporter.generate(options);
},
完整的文件如下所示:
import {Config} from 'protractor'
import * as reporter from "cucumber-html-reporter"
export let config: Config = {
directConnect:true,
// set to "custom" instead of cucumber.
framework: 'custom',
// path relative to the current config file
frameworkPath: require.resolve('protractor-cucumber-framework'),
seleniumAddress: 'http://localhost:4444/wd/hub',
// To run script without cucumber use below
//specs: ['typescriptscript.js'],
onComplete: () => {
//var reporter = require('cucumber-html-reporter');
var options = {
theme: 'bootstrap',
jsonFile: './cucumberreport.json',
output: './cucumberreportsss.html',
reportSuiteAsScenarios: true,
launchReport: true,
metadata: {
"App Version":"0.3.2",
"Test Environment": "STAGING",
"Browser": "Chrome 54.0.2840.98",
"Platform": "Windows 10",
"Parallel": "Scenarios",
"Executed": "Remote"
}
};
reporter.generate(options);
},
capabilities: {
'browserName': 'firefox',
'marionette': true,
//shardTestFiles: true,
},
SELENIUM_PROMISE_MANAGER: false,
specs: [
'../Features/*.feature' // accepts a glob
],
// Run feature file for cucumber use below
cucumberOpts: {
// require step definitions
require: [
'./stepDefination/*.js' // accepts a glob
],
format: 'json:cucumberreport.json',
},
jasmineNodeOpts: {
showColors: true,
},
};
要附加失败的屏幕截图,请在钩子中使用下面的代码
After(function(scenarioResult) {
let self = this;
if (scenarioResult.result.status === Status.FAILED) {
return browser.takeScreenshot()
.then(function (screenshot) {
const decodedImage = new Buffer(screenshot.replace(/^data:image\/png;base64,/, ''), 'base64');
self.attach(decodedImage, 'image/png');
});
}
});
同一个用例,还没有答案,但是环顾四周……你试过这个吗:?问题是,因为我使用的是量角器,所以我不能像junit建议的那样重定向输出。尽管如此,最新版本的量角器解决了这个问题,您最终可以重定向输出并生成一个JSON文件,您可以使用量角器junit处理该文件并获取XML。谢谢。另外值得一看的是吞咽量角器黄瓜html报告
您可能想看一下,它可以补充您当前的量角器/黄瓜设置,自动生成图解html报告-我收到以下错误:[launcher]错误:TypeError:undefined不是Object上的函数。(e2e/hooks.js:2:6)在Module.处编译(Module.js:460:26)在Object.Module.处扩展..js(Module.js:478:10)在Module.load(/Users/aaaa/.npm packages/lib/node_modules/cumber/node_modules/coffee script/lib/coffee script/register.js:45:36)在Module.处加载(Module.js:310:12)(module.js:365:17)在require(module.js:384:17)…因此我将hooks.js包装在module.exports…中,但随后它开始说[launcher]错误:ReferenceError:Cumber未定义……所以我尝试将其小写为c(Cumber),但它仍然不起作用:错误:TypeError:无法读取未定义的属性“JsonFormatter”?我们可以使用记录器执行每个步骤吗?如果可以,如何实现这一点?当ng run e2e命令执行时,浏览器中没有任何报告自动运行的方式completed@ShubhamJain在钩子中,我们称之为.attach,它是对世界的attach func的调用是吗?我的功能只是在报告文件夹中生成截图,我想将截图附加到HTML报告中,我找不到解决方案。请