68 votes

Comment puis-je exécuter des tests avec un navigateur sans tête?

À l'aide de:

ng test

Angulaire de la CLI exécute les tests par défaut dans google Chrome, ce qui est excellent, mais si j'ai besoin de les exécuter dans une console environnement (headless browser)?

Aussi, il serait bien si je peux spécifier si je veux un navigateur moins ou pas à chaque fois que je le lance, donc quelque chose comme:

ng test --browsers MyHeadLessBrowser


Edit:

l'exécution de PhantomJS j'ai eu la suivante:

PhantomJS 2.1.1 (Linux 0.0.0) ERREUR TypeError: useValue,useFactory,les données ne sont pas itérable! au http://localhost:9876/_karma_webpack_/polyfills.bundle.js:854


eferenceError: ne Peut pas trouver de variable: Intl http://localhost:9876/_karma_webpack_/vendor.bundle.js (ligne 49362) intlDateFormat@http://localhost:9876/_karma_webpack_/vendor.bundle.js:49362:20

104voto

Shin Points 10934

Comme une réponse plus complète, basée sur William Hampshire's, Cugas'commentaire et mes ajouts.


Réponse courte: à l'aide de ChromeHeadless

Vous pouvez simplement utiliser sans Tête de Chrome:

ng test --browsers ChromeHeadless

Vous avez besoin d'avoir Chrome 59+.

Mais si vous avez besoin de PhantomJS (et/ou chaning la valeur par défaut ng test comportement sans arguments) lire la suite.


Plus réponse: l'utilisation de PhantomJS

EDIT: sachez que PhantomJS projet a été archivé, voir ce fil de discussion.

Le programme d'installation

Afin de pouvoir (éventuellement) l'exécution de vos tests sans un navigateur, à l'aide de PhantomJS, vous devriez:

1) Installer quelques dépendances:

npm install --save-dev karma-phantomjs-launcher
npm install --save intl

2) Ajouter PhantomJS pour le Karma de la liste des plugins

Ouvrez karma.conf.js et ajouter require('karma-phantomjs-launcher') de la plugins tableau, par exemple:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-phantomjs-launcher'),
      // ...
    ],

3) de Permettre à polyfills

Ouvrez votre src/polyfills.ts le fichier et décommentez les lignes suivantes:

NAVIGATEUR POLYFILLS

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';

DEMANDE D'IMPORTATIONS

import 'intl';
import 'intl/locale-data/jsonp/en';

Comment faire pour exécuter les tests

En précisant les navigateurs lors de l'exécution de la commande

Non, vous pouvez exécuter le test à l'aide de Chrome (le angulaires-cli par défaut):

ng test --browsers Chrome

Ou PhantomJS (sans tête):

ng test --browsers PhantomJS

Changer le comportement par défaut de juste ng test

Il est possible de changer le comportement par défaut de ng test (donc quand n --browsers argument est fourni) en modifiant la valeur de l' browsers tableau en karma.conf.js.

Il peut maintenant être mis à l'utiliser Chrome (par défaut angulaire de la cli d'installation):

browsers: ['Chrome'],

ou PhantomJS:

browsers: ['PhantomJS'],

ou même les deux:

browsers: ['Chrome', 'PhantomJS'],

7voto

William Hampshire Points 2412

Cela devrait faire l'affaire:

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

Modifiez ensuite la propriété plugins du fichier karma.conf.js, en ajoutant le plugin PhantomJS à la liste. Ajoutez également PhantomJS à la propriété des navigateurs.

 plugins: [
    require( 'karma-jasmine' ),
    require( 'karma-chrome-launcher' ),
    require( 'karma-phantomjs-launcher' ),
    require( 'karma-remap-istanbul' ),
    require( 'angular-cli/plugins/karma' )
],
...
browsers: [ 'PhantomJS', 'Chrome' ],
 

Étant donné que vous souhaitez vivre une expérience totalement sans tête, vous pouvez supprimer Chrome de la propriété des navigateurs, ainsi que karma-chrome-launcher du tableau de plugins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X