量角器&挂钩后的Cucumberjs无法按预期工作

时间:2016-05-24 03:05:37

标签: protractor cucumberjs

由于某种原因,我在cucumberjs中编写了一个基本的钩子,它没有按预期工作。当场景失败时,它应该附加截图并编写浏览器控制台日志。但它附加了html报告中的功能之后的屏幕截图,并在第二个方案enter image description here之间打印浏览器控制台日志。任何线索有什么问题?

     this.After(function(scenario, callback) {       
        if (scenario.isFailed()) {
            global.browser.takeScreenshot().then(function(base64png) {
            var decodedImage = new Buffer(base64png,'base64').toString('binary');
            scenario.attach(decodedImage, 'image/png');
       });
        global.browser.manage().logs().get('browser').then(function (browserlog){         
        browserlog.forEach(function (log) {
          if (log.level.value > 900) {
             console.error(log.message.substring(log.message.indexOf('Error'),log.message.indexOf('\n')))
           }
         })           
        });
        callback();
    } else {
        callback();
    }

});

1 个答案:

答案 0 :(得分:0)

根据cucumberjs github页面https://github.com/cucumber/cucumber-js#attachments

  

可以使用stream.Readable附加图像和其他二进制数据。在这种情况下,将回调传递给attach()将成为强制性的:

你可以将单个钩子后分成两个独立的钩子:

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);
  });
});

this.After(function(scenario, next) {
  global.browser.manage().logs().get('browser').then(function (browserlog){
    browserlog.forEach(function (log) {
      if (log.level.value > 900) {
        console.error(log.message.substring(log.message.indexOf('Error'),log.message.indexOf('\n')))
      }
    });
  });
});