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.
实际上,它比传统的浏览器发布更加谨慎.
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)
最后但同样重要的是,以下是帮助我解决这个问题的链接:
新的angular-cli应用程序无法在iphone 4s上运行
我将为此加两分钱。
正确-因果需要浏览器才能运行。但是-您可以在无头模式下运行Chrome,这意味着尽管您确实需要安装浏览器,但它不会打开其用户界面,因此您可以例如仅通过SSH会话运行测试。
我们将此配置用于CI / CD部署。我们用于运行测试的Docker映像已安装Chrome,并且我们以Chrome无头模式运行它们。像魅力一样工作。
要使用此功能,只需browsers在您的karma.conf.js
browsers: ['ChromeHeadless']
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助那些正在寻找类似东西的人...