pruebas - router angular navigationend
¿Cómo puedo ejecutar pruebas con un navegador sin cabeza? (2)
Utilizando:
ng test
Angular CLI ejecuta las pruebas de forma predeterminada en Chrome, lo cual es genial, pero ¿qué sucede si necesito ejecutarlas en un entorno de consola solamente (navegador sin cabeza)?
También sería bueno si puedo especificar si quiero o no navegadores cada vez que lo ejecuto, así que algo como:
ng test --browsers MyHeadLessBrowser
Editar :
corriendo PhantomJS tengo lo siguiente:
PhantomJS 2.1.1 (Linux 0.0.0) ERROR TypeError: useValue, useFactory, ¡los datos no son iterables! en http://localhost:9876/_karma_webpack_/polyfills.bundle.js:854
eferenceError: No se puede encontrar la variable: Intl en http://localhost:9876/_karma_webpack_/vendor.bundle.js (línea 49362) intlDateFormat @ http://localhost:9876/_karma_webpack_/vendor.bundle.js:49362:20
Esto debería funcionar:
npm i --save-dev karma-phantomjs-launcher
Luego modifique la propiedad de los complementos del archivo karma.conf.js, agregando el complemento PhantomJS a la lista. También agregue PhantomJS a la propiedad del navegador.
plugins: [
require( ''karma-jasmine'' ),
require( ''karma-chrome-launcher'' ),
require( ''karma-phantomjs-launcher'' ),
require( ''karma-remap-istanbul'' ),
require( ''angular-cli/plugins/karma'' )
],
...
browsers: [ ''PhantomJS'', ''Chrome'' ],
Como desea una experiencia completamente sin cabeza, puede eliminar Chrome de la propiedad de los navegadores y también eliminar el lanzador karma-chrome de la matriz de complementos.
Como una respuesta más completa basada en la de William Hampshire , el comentario de Cuga y mis adiciones personales.
Respuesta corta: usando ChromeHeadless
Puedes usar Chrome sin cabeza :
ng test --browsers ChromeHeadless
Necesitas tener Chrome 59+.
Pero si necesita PhantomJS (y / o cambiar el comportamiento predeterminado de la ng test
sin argumentos) lea lo siguiente.
Respuesta más larga: usando PhantomJS
EDITAR: tenga en cuenta que el proyecto PhantomJS ha sido archivado , vea este hilo .
Preparar
Para poder (opcionalmente) ejecutar sus pruebas sin un navegador, utilizando PhantomJS, debe:
1) Instalar algunas dependencias:
npm install --save-dev karma-phantomjs-launcher
npm install --save intl
2) Agregar PhantomJS a la lista de complementos del Karma
Abra karma.conf.js
y agregue require(''karma-phantomjs-launcher'')
a la matriz de plugins
, por ejemplo:
module.exports = function (config) {
config.set({
basePath: '''',
frameworks: [''jasmine'', ''@angular/cli''],
plugins: [
require(''karma-jasmine''),
require(''karma-chrome-launcher''),
require(''karma-phantomjs-launcher''),
// ...
],
3) Habilitar polyfills
Abra su archivo src/polyfills.ts
y descomente las siguientes líneas:
POLYFILLS DE NAVEGADOR
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'';
IMPORTACIONES DE APLICACION
import ''intl'';
import ''intl/locale-data/jsonp/en'';
Cómo ejecutar las pruebas
Especificando los navegadores al ejecutar el comando
No, puede ejecutar la prueba usando Chrome
(el valor predeterminado de angular-cli):
ng test --browsers Chrome
O PhantomJS (sin cabeza):
ng test --browsers PhantomJS
Cambiando el comportamiento predeterminado de solo ng test
Es posible cambiar el comportamiento predeterminado de ng test
(por lo tanto, cuando no se proporciona el argumento --browsers
) cambiando el valor de la matriz de browsers
en karma.conf.js
.
Ahora se puede configurar para que solo use Chrome
(configuración predeterminada de ángulo-cli):
browsers: [''Chrome''],
o PhantomJS
:
browsers: [''PhantomJS''],
o incluso ambos:
browsers: [''Chrome'', ''PhantomJS''],