¿Es posible ejecutar Karma sin ningún navegador?
Comencé una aplicación Angular.js con Yeoman yo angular
que incluye pruebas de Karma. Entonces, grunt test
razonablemente falló porque Karma no puede encontrar ningún navegador . ( browsers
No se ha configurado en el archivo de configuración node_modules/karma de la aplicación).
Estoy haciendo mi desarrollo a través de SSH en una máquina remota, lo cual creo (avíseme si me equivoco) no tiene sentido tener Chrome /usr/bin/chromium-browser
instalado.
Entonces, ¿es posible ejecutar Karma sin navegadores?
Voy a añadir mi granito de arena a esto.
Correcto: Karma requiere un navegador para ejecutarse. PERO, puedes ejecutar Chrome en modo Headless, lo que significa que aunque necesitas tener el navegador instalado, no abrirá su interfaz de usuario y, por lo tanto, puedes ejecutar las pruebas únicamente a través de una sesión SSH, por ejemplo.
Usamos esta configuración para nuestras implementaciones de CI/CD. Nuestra imagen de Docker para ejecutar las pruebas tenía Chrome instalado y las ejecutamos con el modo sin cabeza de Chrome. Trabajado como un encanto.
Para usar esto, simplemente modifique su browsers
propiedad en sukarma.conf.js
browsers: ['ChromeHeadless']
Espero que esto pueda ayudar a alguien que esté buscando algo similar...
Karma necesita configurar un navegador.
Puedes utilizar PhantomJS en lugar de Chrome.
De hecho, es más discreto que el inicio de un navegador tradicional.
Esta pregunta y respuesta son muy relevantes a partir de hoy (pronto 2018, > angular2, @angular/cli, mecanografiado, ...).
Aquí hay una pequeña actualización, basada en lo que encontré útil en la red:
Digamos que tiene un angular cli
proyecto generado que no ha sido modificado. Digamos que desea utilizarlo PhantomJS
para ejecutar sus pruebas de angular2 (nada sorprendente).
Comience instalando PhantomJS
el lanzador de Karma en su proyecto
npm i --save-dev karma-phantomjs-launcher
A continuación tienes que actualizar el karma.conf.js
archivo de la siguiente manera:
Primero las propiedades de los complementos:
plugins: [
require('karma-jasmine'),
require('karma-phantomjs-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular/cli/plugins/karma')
],
Luego las propiedades del navegador.
browsers: [ 'PhantomJS' ],
Al ejecutar la prueba en este punto, probablemente se encontrará con el siguiente 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
Básicamente, eso significa que PhantomJS
necesitas diferentes polirellenos. Descomente las siguientes líneas en susrc\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';
Por último, pero no menos importante, aquí están los enlaces que me ayudaron a resolver esto:
¿Cómo ejecutar pruebas de Jasmine sin navegador?
La nueva aplicación angular-cli no funciona en el iPhone 4s