0

code以下を試して、screenshotローカルに保存してみました。しかし、スクリーンショットを(ファイルを使用してcucumber HTML report生成された)に埋め込みたい。Jenkinsjson

レポートでそのリンクを取得するembeddingためにレポート ファイルに反映する必要がある、ここに追加する必要があるコードは何でしょうか? 提案してください。jsonHTML

私のコード:

module.exports  = function stepResultHooks() {
var fs = require('fs'), dir = 'features/screenShots/';

this.StepResult(function (event, callBack) {
    var stepResult = event.getPayloadItem('stepResult'), step = stepResult.getStep();

    if (stepResult.isFailed()) {
        browser.takeScreenshot().then(function (png) {
            browser.getCapabilities().then(function (capabilities) {
                var browserName = capabilities.caps_.browserName;
                var browserVersion = capabilities.caps_.version;
                var stream, fname;

                fname = 'Screenshot' + '_' + 'Failed Step' + '_' + step.getName() + '_' + browserName.toUpperCase()+'_'+browserVersion+'_' + new Date() + '.png';
                fname = fname.replace(/"|'|\//g, '').replace(/\s|:|>/g, '_');

                stream = fs.createWriteStream(dir + fname);
                stream.write(new Buffer(png, 'base64'));
                stream.end();
            });
        }).then(callBack);
    } else callBack();
});
4

2 に答える 2

1

https://github.com/cucumber/cucumber-js#attachmentsのドキュメントによると

シナリオ オブジェクトを使用して、テキスト、画像、およびファイルを Cucumber レポートに添付できます。

stepResult フック中にスクリーンショットを添付する方法はなく、After フックでのみ添付できます。

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);
  });
});
于 2016-05-24T09:10:40.447 に答える