我希望捕获屏幕截图,只要Spec失败,这是我正在使用的屏幕截图辅助函数:
var fs = require('fs');
function screenshot(filename, path) {
// within a test:
browser.takeScreenshot().then(function (png) {
writeScreenShot(png, filename, path);
});
}
function writeScreenShot(data, filename, path) {
var stream = fs.createWriteStream( path+ filename);
stream.write(new Buffer(data, 'base64'));
stream.end();
}
我的测试:
describe('this is a sample test',function(){
var testCaseName = this.getFullName();
it('this is sample spec1',function(){
// Test Steps
expect(A).toBe(B);
});
it('this is sample spec2',function(){
// Test Steps
expect(A).toBe(B);
});
});
我想在我的测试规格失败时截取屏幕截图,我该怎么做?有什么建议 ?
答案 0 :(得分:8)
修改:对于Jasmine 2 ,您可以尝试https://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter。这应该与最新版本的Jasmine兼容。
安装 - npm install protractor-jasmine2-screenshot-reporter --save-dev
并在配置文件中注册报告。
然后捕获屏幕截图的选项是:
var reporter = new HtmlScreenshotReporter({
captureOnlyFailedSpecs: true
});
这可能是最佳选择,因为我认为Jasmine 2不再提供currentSpec()。
对于Jasmine 1 ,您可以尝试两个选项。你可以这样做:
function screenshot(filename, path) {
afterEach(function() {
var passed = jasmine.getEnv().currentSpec.results().passed();
if (!passed) {
browser.takeScreenshot().then(function(png) {
writeScreenShot(png, filename, path);
});
}
});
}
然后在你的规范中:
describe('this is a sample test',function(){
screenshot(filename, path);
另一个选项是https://github.com/jintoppy/protractor-html-screenshot-reporter。它处理为您截取屏幕截图并生成HTML报告。要获取有关失败的屏幕截图,您可以执行
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, takeScreenShotsOnlyForFailedSpecs: true
});
答案 1 :(得分:1)
如果您想在预期失败时捕获屏幕截图,请尝试以下方法:https://www.npmjs.com/package/jasmine2-protractor-utils