2016-11-04 44 views
4

我正在使用量角器黃瓜框架,我想爲我寫的測試生成html報告。我決定用cucumber-html-reporter來實現它。在我hooks.js我寫了一個this.After對象採取截圖的測試失敗:功能爲cucumber-html-reporter生成截圖生成「5000後超時功能」錯誤

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

一切都運行得很好,生成報告和截圖採取和連接只在測試失敗。但我也有步驟進行,當後一個錯誤信息(因此,當有一些故障):後5000毫秒

功能超時

我想擺脫這個消息,因爲它也出現在我的HTML報告。任何人都可以爲我提供解決方案嗎?

+0

你可能想看看[ Serenity/JS](http://serenity-js.org),它可以恭維你目前的量角器/黃瓜設置 - [看到這個答案](http://stackoverflow.com/questions/34821016/is-there-a-量角器報告方法工具是-作品上帶有一個黃瓜的框架/ 42598696#42598696) –

回答

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

下面的代碼爲我工作。我已經在步驟定義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"); 
      }); 
      } 
     }); 
    }); 
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(); 
    } 
});