Comment puis-je exécuter des tests avec un headless browser?
À 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 ce 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
Modifier:
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
Un headless browser est en cours d'exécution de votre navigateur sans navigateur de l'INTERFACE utilisateur,
PhantomJS
est une tête WebKit scriptable avec une API JavaScript. PhantomJS
n'est plus maintenu en raison de la nouvelle tête d'options déjà disponibles.OriginalL'auteur Francesco Borzi | 2017-09-25
Vous devez vous connecter pour publier un commentaire.
Comme une réponse plus complète, basée sur William Hampshire's, Cuga'commentaire et mes ajouts.
Réponse courte: à l'aide de ChromeHeadless
Vous pouvez simplement utiliser Headless 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: Être conscient que PhantomJS projet a été archivé, voir ce fil.
Installation
Afin de pouvoir (éventuellement) l'exécution de vos tests sans un navigateur, à l'aide de PhantomJS, vous devez:
1) Installer quelques dépendances:
2) Ajouter PhantomJS pour le Karma liste de plugins
Ouvrir
karma.conf.js
et ajouterrequire('karma-phantomjs-launcher')
à laplugins
tableau, par exemple:3) de Permettre à polyfills
Ouvrir votre
src/polyfills.ts
fichier et décommentez les lignes suivantes:NAVIGATEUR POLYFILLS
APPLICATION DES IMPORTATIONS
Manière d'exécuter les tests
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
De 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 aucun--browsers
argument est fourni) en modifiant la valeur de labrowsers
tableau danskarma.conf.js
.Il peut maintenant être réglé à n'utiliser que la
Chrome
(par défaut angulaire-cli configuration):browsers: ['Chrome'],
ou
PhantomJS
:browsers: ['PhantomJS'],
ou même les deux:
browsers: ['Chrome', 'PhantomJS'],
OriginalL'auteur Francesco Borzi
Cela devrait faire l'affaire:
Puis modifier les plugins de la propriété de l'karma.conf.js fichier, en ajoutant le PhantomJS plugin à la liste. Également ajouter PhantomJS pour les navigateurs de la propriété.
Puisque vous voulez un complètement décapité l'expérience, vous pouvez supprimer les navigateurs google Chrome à partir de la propriété, et de supprimer le karma-chrome-lanceur à partir des plugins tableau.
ng test --browsers PhantomJS
voir la edit: ce serait bien si je peux spécifier si je veux un navigateur moins ou pas à chaque fois que je le lance, quelque chose comme
Si vous avez google Chrome installé, mais ne veulent pas pour pop-up, vous pouvez également spécifier "ChromeHeadless" comme l'un des navigateurs si vous ne voulez pas utiliser de PhantomJS.
les options que vous pourriez utiliser sont:
ng test --browsers Chrome
oung test --browsers ChromeHeadless
oung test --browsers PhantomJS
J'obtiens cette erreur lors de l'utilisation de PhatomJs. { "message": "Une erreur s'est jeté dans afterAll\nTypeError: undefined n'est pas un objet (évaluer les modules[moduleId].appel')", "str": "Une erreur s'est jeté dans afterAll\nTypeError: undefined n'est pas un objet (évaluer les modules[moduleId].appel")" }
OriginalL'auteur William Hampshire