功能截取黄瓜-html-报告生成"功能超时后5000 .."错误

时间:2016-11-04 13:05:43

标签: protractor cucumber cucumberjs

我正在使用量角器 - 黄瓜 - 框架,我想为我编写的测试生成html报告。我决定使用cucumber-html-reporter实现它。在我的hooks.js中我写了一个。在对象上截取测试失败的截图:

   this.After(function(scenario, callback) {
     if (scenario.isFailed()) {
        browser.takeScreenshot().then(function(buffer) {
            return scenario.attach(new Buffer(buffer, 'base64'), function(err) {
                callback(err);
            });
        });
     }
     else {
        callback();
     }
   });

一切正常,生成报告并截取屏幕截图并仅在测试失败时附加。但是当After step继续时(因此当出现故障时)我也收到了一条错误消息:

  

函数在5000毫秒后超时

我想摆脱这条消息,因为它也出现在我的HTML报告中。任何人都可以为我提供解决方案吗?

3 个答案:

答案 0 :(得分:2)

下面的代码对我有用。我在步骤定义js文件中添加了这个。在报告的场景结束时,它会添加屏幕截图。

defineSupportCode(({After}) => {
    After(function(scenario) {
        if (scenario.isFailed()) {
            var attach = this.attach; 
                return browser.takeScreenshot().then(function(png) {
            var decodedImage = new Buffer(png, "base64");
                return attach(decodedImage, "image/png");
            });
            }
        });
    });

答案 1 :(得分:0)

您的代码似乎绝对正常。 也许它只需要更长的时间?

你可以在这样的钩子上设置超时:

this.After({ timeout: 20 * 1000 }, function (scenario, callback) {
  if (scenario.isFailed()) {
    browser.takeScreenshot().then(function(buffer) {
        return scenario.attach(new Buffer(buffer, 'base64'), function(err) {
            callback(err);
        });
    });
  }
  else {
    callback();
  }
});

答案 2 :(得分:0)

我有类似的问题,即使在等待60秒后也失败了。问题是我没有实施适当的回调。

以下代码对我有用。 (我是JavaScript新手,所以我的回调用法可能是正确的方法。如果有更好的方法,请随时教我。:))

After(function(scenario,done)
{
    const world = this;
    if (scenario.result.status === 'failed') {
        browser.takeScreenshot().then(function (stream) {
            let decodedImage = new Buffer(stream.replace(/^data:image\/(png|gif|jpeg);base64,/, ''), 'base64');
            world.attach(decodedImage, 'image/png');
        }).then(function () {
            done();
        });
    }else {
        done();
    }
});