我使用以下代码在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
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
经过进一步的记录后,我找到了答案。这是路径的问题。好像NODE JS没有像我想的那样读取路径。
./返回当前目录,require()函数除外。当使用require()时,它会将./读取到调用它的文件的目录中(显然,错误就在这里)。 __dirname始终是使用的文件的目录。 我的路径使用的代码如下:
__dirname + '/screenshots/' + specName + '.png'
答案 1 :(得分:0)
您还可以使用mocha-proshot
记者在jenkins中截取屏幕截图。
这是一个npm包,可以轻松下载,并且很容易设置。