Is it possible to run Karma with no browsers at all?

匿名 (未验证) 提交于 2019-12-03 02:50:02

问题:

I started an Angular.js app with Yeoman's yo angular that includes Karma testing. Then, the grunt test reasonably failed because Karma can't find any browsers. (The browsers has not been set in the app's node_modules/karma config file.)

I'm doing my development via SSH into a remote machine, which I think (let me know if I'm wrong) is pointless to have Chrome, /usr/bin/chromium-browser, installed.

So is it possible to run Karma without any browsers?

回答1:

Karma needs a browser to be set.

You can make use of PhantomJS instead of Chrome.
Indeed, it's more discreet than a traditional browser launch.



回答2:

This question and answer is very relevant as of today (soon 2018, > angular2, @angular/cli, typescript, ...).

Here is a small update, based on what i found as useful on the net:

Say you have an angular cli generated project that has not been tempered with. Say you want to use PhantomJS to run your angular2 tests (nothing shocking).

Start by installing PhantomJS launcher for Karma in your project

npm i --save-dev karma-phantomjs-launcher 

Next you have to update the karma.conf.js file as follows:

First the the plugins properties:

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

Then the browser properties

browsers: [ 'PhantomJS' ], 

Running the test at this point, you will probably stumble on the following error:

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 

Basically, that means your PhantomJS needs different polyfills. Uncomment the following lines in your 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'; 

Last but not least, here are the links that helped me work this out:

How to run jasmine tests without browser ?

New angular-cli app not working on iphone 4s



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!