使用量角器

时间:2015-09-13 06:20:44

标签: javascript angularjs protractor angularjs-e2e e2e-testing

我正在尝试在这样的量角器中记录控制台错误

日志输出格式为

{
  level: {
    value: 900,
    name: 'WARNING'
  },
  message: 'message',
  timestamp: 1442090739962,
  type: ''
}, {
  level: {
    value: 800,
    name: 'INFO'
  },
  message: 'message',
  timestamp: 1442090740723,
  type: ''
}, {
  level: {
    value: 1000,
    name: 'ERROR'
  },
  message: 'error message',
  timestamp: 1442090740723,
  type: ''
},

我想只捕捉错误,所以我写了这样的测试

it('it should be detect console errors', function() {
  browser.manage().logs().get('browser').then(function(browserLogs) {
    // browserLogs is an array of objects with level and message fields
    browserLogs.forEach(function(log) {
      if (log.level.value > 900) { // it's an error log
        console.log('Browser console error!');
        console.log(log.message);
      }
    });
  });
});

问题是它有时会发现错误,有时也不会。

当我给websocket提供错误的路径时,如果有错误则会记录它。但是当我向ng-include提供错误的路径并且在控制台中有404 error时,它就不会记录。

我正在使用firefox进行测试。这个控制台插件浏览器是依赖还是什么? 为什么它为控制台错误显示不同的行为?

3 个答案:

答案 0 :(得分:0)

800不大于900,那么你期望如何捕获错误, 它应该是

if (log.level.value <= 900)

答案 1 :(得分:0)

在我的测试套件中,我使用以下内容检查控制台错误并显示它们是否存在:

~Document()

答案 2 :(得分:0)

有类似的问题,所以I wrote wrapping functions

injectConsoleTracing = function () {
    browser.executeScript('window.errs=typeof(errs)=="undefined" ? [] : window.errs; window.console.error = function(msg){window.errs.push(msg); }; ');
    browser.executeScript('window.logs=typeof(logs)=="undefined" ? [] : window.logs; window.console.log = function(msg){window.logs.push(msg); }; ');
};

expectNoConsoleErrors = function () {
    browser.executeScript('return window.errs;').then(function (v) {
        expect(v).toEqual([]);
    });
    browser.executeScript('return window.logs;').then(function (v) {
        expect(v).toEqual([]);
    });
};