是否可以在没有浏览器的情况下运行Karma?

ran*_*a1k 23 javascript angularjs gruntjs yeoman karma-runner

我开始使用Yeoman的Angular.js应用程序yo angular,其中包括Karma测试.然后,grunt test合理失败,因为Karma找不到任何浏览器.(browsers尚未在应用程序的node_modules/karma配置文件中设置.)

我正在通过SSH进行远程计算机的开发,我认为(如果我错了,请告诉我)/usr/bin/chromium-browser安装Chrome是毫无意义的.

那么可以在没有任何浏览器的情况下运行Karma吗?

Mik*_*378 19

Karma 需要设置浏览器.

您可以使用PhantomJS而不是Chrome.
实际上,它比传统的浏览器发布更加谨慎.

  • PhantomJS 不再维护。避免使用它。 (4认同)
  • 继续滚动......真正的答案在下面。 (2认同)

avi*_*rat 11

这个问题和答案在今天非常相关(2018年,> angular2,@ angular/cli,typescript,......).

这是一个小的更新,基于我在网上发现有用的东西:

假设您有一个angular cli未经过调整的生成项目.假设你想用来PhantomJS运行你的angular2测试(没有什么令人震惊的).

首先PhantomJS在项目中为Karma 安装启动器

npm i --save-dev karma-phantomjs-launcher
Run Code Online (Sandbox Code Playgroud)

接下来,您必须karma.conf.js按如下方式更新文件:

首先是插件属性:

plugins: [
  require('karma-jasmine'),
  require('karma-phantomjs-launcher'),
  require('karma-jasmine-html-reporter'),
  require('karma-coverage-istanbul-reporter'),
  require('@angular/cli/plugins/karma')
],
Run Code Online (Sandbox Code Playgroud)

然后是浏览器属性

browsers: [ 'PhantomJS' ],
Run Code Online (Sandbox Code Playgroud)

此时运行测试,您可能会偶然发现以下错误:

PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR
  TypeError: pre,template,textarea,script,style is not iterable!
  at http://localhost:9876/_karma_webpack_/polyfills.bundle.js:792
Run Code Online (Sandbox Code Playgroud)

基本上,这意味着您PhantomJS需要不同的polyfill.在您的帐户中取消注释以下行src\polyfills.ts

import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
Run Code Online (Sandbox Code Playgroud)

最后但同样重要的是,以下是帮助我解决这个问题的链接:

如何在没有浏览器的情况下运行jasmine测试?

新的angular-cli应用程序无法在iphone 4s上运行

  • @MarcusCantu https://www.npmjs.com/package/karma-jsdom-launcher (2认同)

Cla*_*lay 9

我将为此加两分钱。

正确-因果需要浏览器才能运行。但是-您可以在无头模式下运行Chrome,这意味着尽管您确实需要安装浏览器,但它不会打开其用户界面,因此您可以例如仅通过SSH会话运行测试。

我们将此配置用于CI / CD部署。我们用于运行测试的Docker映像已安装Chrome,并且我们以Chrome无头模式运行它们。像魅力一样工作。

要使用此功能,只需browsers在您的karma.conf.js

browsers: ['ChromeHeadless']
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助那些正在寻找类似东西的人...

  • “ChromeHeadless”就是答案。这应该在顶部。 (2认同)