量角器不会在詹金斯拍摄截图

时间:2015-01-28 09:33:02

标签: javascript angularjs jenkins webdriver protractor

我使用以下代码在Protractor中测试失败时截取(在每个之后):

function failScreenshot() {
var fs = require('fs');
var spec = jasmine.getEnv().currentSpec;
var specName = spec.description.split(' ').join('_');

if (spec.results().passed()) {
    return;
} else {
    browser.takeScreenshot().then(
            function(png) {
                var stream = fs.createWriteStream('screenshots/' + specName + '.png');
                stream.write(new Buffer(png, 'base64'));
                stream.end();
            });
}

}

当我在本地运行测试时,屏幕截图正如预期的那样工作。通过Jenkins运行测试时,测试将在第一次失败时停止,并且不会创建屏幕截图。此外,文件夹和路径是正确的,我已经反复检查它们。我的詹金斯版本是1532.1

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:0)

经过进一步的记录后,我找到了答案。这是路径的问题。好像NODE JS没有像我想的那样读取路径。

./返回当前目录,require()函数除外。当使用require()时,它会将./读取到调用它的文件的目录中(显然,错误就在这里)。 __dirname始终是使用的文件的目录。 我的路径使用的代码如下:

__dirname + '/screenshots/' + specName + '.png'

答案 1 :(得分:0)

您还可以使用mocha-proshot记者在jenkins中截取屏幕截图。

这是一个npm包,可以轻松下载,并且很容易设置。