我希望捕获屏幕截图,只要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();
}
Run Code Online (Sandbox Code Playgroud)
我的测试:
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);
});
});
Run Code Online (Sandbox Code Playgroud)
当我的测试规格失败时,我想截取屏幕截图,我该怎么做?有什么建议 ?
编辑:对于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
});
Run Code Online (Sandbox Code Playgroud)
这可能是最佳选择,因为我认为currentSpec()不再适用于Jasmine 2.
对于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);
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后在你的规范中:
describe('this is a sample test',function(){
screenshot(filename, path);
Run Code Online (Sandbox Code Playgroud)
另一种选择是https://github.com/jintoppy/protractor-html-screenshot-reporter.它处理为您截取屏幕截图并生成HTML报告.要获取有关失败的屏幕截图,您可以这样做
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, takeScreenShotsOnlyForFailedSpecs: true
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |