我尝试使用以下(require srfi/13)
(string-pad (number->string 23) 4 #\0) ; ==> "0023"
获取code
并将其保存在本地。但是,我想将屏幕截图嵌入到screenshot
(由cucumber HTML report
使用Jenkins
文件生成)。
我应该在json
添加哪些代码,这些代码应反映在我的embedding
报告文件中,以便在json
报告中获取该链接?请建议。
我的代码:
HTML
答案 0 :(得分:1)
根据https://github.com/cucumber/cucumber-js#attachments
的文件您可以使用方案对象将文本,图像和文件附加到Cucumber报告中:
在stepResult挂钩期间,无法在After hook中附加屏幕截图。
this.After(function(scenario, next) {
browser.takeScreenshot().then(function(png) {
var decodedImage = new Buffer(png, 'base64').toString('binary');
scenario.attach(decodedImage, 'image/png', next);
}, function(err) {
next(err);
});
});
答案 1 :(得分:1)
您只能在方案的挂钩后附加,但是您可以在每个步骤(在StepResult中)截取屏幕截图,如果这是您所追求的并将结果存储/推送到数组中。然后,您可以在每个场景结束时将阵列内容作为附件推送,并清除阵列以用于下一个步骤场景。
您还可以根据每个步骤/页面的内容获取动态屏幕截图/浏览器高度。见下文。
在你有钩子的文件中,执行以下操作:
'use strict';
var eachStepScreensArr = [];
module.exports = function() {
this.Before(() => {
//Reset Array with Step screenshots
eachStepScreensArr = [];
});
this.After((scenario) => {
return browser.driver.manage().window().setSize(1280, 1000).then(function() { //reset size after each scenario
return browser.driver.manage().window().setPosition(0, 0).then(function() { //reset position after each scenario
//Attach any step screenshots to the scenario metadata
for (var key in eachStepScreensArr) {
scenario.attach(eachStepScreensArr[key], 'image/png');
}
});
});
return Promise.resolve();
});
this.StepResult((stepResult) => {
var step = stepResult.getStep();
if (step.getName() && stepResult.getStatus() !== 'skipped') {
return browser.executeScript('return {' +
'height: document.body.scrollHeight,' +
'width: document.body.scrollWidth' +
'}'
).then(function(result) {
return browser.driver.manage().window().setSize(/*result.width*/1280, result.height + 50).then(function() {
return browser.takeScreenshot().then(function(png) {
eachStepScreensArr.push(new Buffer(png.replace(/^data:image\/(png|gif|jpeg);base64,/, ''), 'base64'));
});
});
});
}
return Promise.resolve();
});
};
如果您正在使用黄瓜HTML报告器,请确保它支持多个嵌入(例如“cucumber-html-report”),其他大多数只显示第一个嵌入。
如果您只拍摄失败步骤的屏幕截图,请更改行
stepResult.getStatus() !== 'skipped'
到
stepResult.getStatus() == 'failed'