¿Es posible ejecutar Karma sin ningún navegador?

Resuelto randwa1k asked hace 10 años • 3 respuestas

Comencé una aplicación Angular.js con Yeoman yo angularque incluye pruebas de Karma. Entonces, grunt testrazonablemente falló porque Karma no puede encontrar ningún navegador . ( browsersNo 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-browserinstalado.

Entonces, ¿es posible ejecutar Karma sin navegadores?

randwa1k avatar Feb 20 '14 08:02 randwa1k
Aceptado

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 browserspropiedad en sukarma.conf.js

browsers: ['ChromeHeadless']

Espero que esto pueda ayudar a alguien que esté buscando algo similar...

Clay avatar May 12 '2019 00:05 Clay

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.

Mik378 avatar Feb 20 '2014 09:02 Mik378

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 cliproyecto generado que no ha sido modificado. Digamos que desea utilizarlo PhantomJSpara ejecutar sus pruebas de angular2 (nada sorprendente).

Comience instalando PhantomJSel lanzador de Karma en su proyecto

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

A continuación tienes que actualizar el karma.conf.jsarchivo 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 PhantomJSnecesitas 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

avi.elkharrat avatar Dec 15 '2017 10:12 avi.elkharrat