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?
Karma works only with browsers, so use PhantomJS if you want it to be headless. We don't use it as Chrome or Safari are faster than PhantomJS.
With the default settings in place, just point your browser to http://localhost:9876/ . This allows you to capture a browser on any device, such as a tablet or a phone, that is on the same network as the machine running Karma (or using a local tunnel).
Just simply add into the configuration file: browsers = ['Chrome']; Then, Karma will take care of autocapturing these browsers, as well as killing them.
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 your karma.conf.js
browsers: ['ChromeHeadless']
Hope this might help someone out there who may be looking for something similar...
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With