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?
I am going to add my two cents to this.
Correct - Karma requires a browser to run. BUT - you can run Chrome in Headless mode, which means although you do need the browser installed, it will not open it's UI, and you can therefore run the tests purely through an SSH session for example.
We used this configuration for our CI/CD deployments. Our Docker image for running the tests had Chrome installed and we ran them with Chrome headless mode. Worked like a charm.
To use this, simply modify your
browsers
property in yourkarma.conf.js
Hope this might help someone out there who may be looking for something similar...
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 usePhantomJS
to run your angular2 tests (nothing shocking).Start by installing
PhantomJS
launcher for Karma in your projectNext you have to update the
karma.conf.js
file as follows:First the the plugins properties:
Then the browser properties
Running the test at this point, you will probably stumble on the following error:
Basically, that means your
PhantomJS
needs different polyfills. Uncomment the following lines in yoursrc\polyfills.ts
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
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.