使用karma runner获得总测试执行时间

时间:2014-09-15 20:24:42

标签: javascript angularjs unit-testing karma-runner browserstack

我们目前已在browserstack插件的帮助下,在多个操作系统的多个浏览器中,karma-browserstack-launcher远程切换到远程运行单元测试。

目前测试运行的输出如下:

$ grunt unit:remote
Running "unit:remote" task

Running "karma:remote" (karma) task
INFO [karma]: Karma v0.12.23 server started at http://localhost:9876/
INFO [launcher]: Starting browser firefox 21.0 (OS X Mountain Lion) on BrowserStack
INFO [launcher]: Starting browser iPhone 5 (ios 6.0) on BrowserStack
INFO [launcher]: Starting browser android (android 4.1) on BrowserStack
INFO [launcher]: Starting browser ie 8.0 (Windows 7) on BrowserStack
INFO [launcher]: Starting browser ie 9.0 (Windows 7) on BrowserStack
INFO [launcher]: Starting browser chrome latest (OS X Mavericks) on BrowserStack
INFO [launcher]: Starting browser PhantomJS

PhantomJS 1.9.7 (Mac OS X): Executed 70 of 70 SUCCESS (0.063 secs / 0.275 secs)
Chrome 37.0.2062 (Mac OS X 10.9.0): Executed 70 of 70 SUCCESS (0 secs / 0.452 secs)
Mobile Safari 6.0.0 (iOS 6.1.4): Executed 70 of 70 SUCCESS (1.161 secs / 0.839 secs)
Firefox 21.0.0 (Mac OS X 10.8): Executed 70 of 70 SUCCESS (1.175 secs / 0.496 secs)
...

每个浏览器都会报告的执行时间

有没有办法在控制台上看到总执行时间


仅供参考,这是我们正在使用的karma config

2 个答案:

答案 0 :(得分:5)

我已经分叉 karma插件并在karma browserStack config中添加了一个 extraLog 选项,以便在所有浏览器完成后获取更多信息,包括总数所有浏览器的执行和净时间。

我主要使用的browser_complete event emitter为我提供浏览器的totalnet时间。

emitter.on('browser_complete', function (data) {
  result.browsers.push({ name: data.name, time: data.lastResult.totalTime });
  result.time.net += data.lastResult.netTime;
  result.time.total += data.lastResult.totalTime; //this is what we want
});

在这里使用三个浏览器示例输出(抱歉,我还不是设计师):

screen

time-grunt 相比,这可以让您获得更准确的结果。

您可以在 feature-extra-logs 分支上查看代码here

我真的不知道您希望(以及最佳实践)如何将此部署给您,因为我认为将其合并到上游并不足够有趣,但我可能错了。

答案 1 :(得分:3)

不是特定于特定于业力的,但您可以使用https://github.com/sindresorhus/time-grunt来查看整个单元:远程任务需要多长时间。

只需从readme.md进行复制,即可使用

进行安装
npm install --save-dev time-grunt

然后将您的gruntfile编辑为

// Gruntfile.js
module.exports = function (grunt) {
  // require it at the top and pass in the grunt instance
  require('time-grunt')(grunt);

  grunt.initConfig();
}

然后,当您运行grunt任务时,您应该获得如下输出:

time-grunt example