J'utilise un rapporteur pour exécuter des tests sur une application Angular. Ils fonctionnent sur mon environnement OSX mais pas sur Linux où TeamCity tente de l'exécuter.
Lorsque j'exécute cette commande sur mon environnement OSX local, cela fonctionne (testé également sur la machine de mes collègues):
./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
..
Finished in 5.55 seconds
2 tests, 2 assertions, 0 failures
Lorsque j'exécute ceci sur une machine Linux, ou qu'un travail TeamCity essaie de l'exécuter, cela échoue:
./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:87
Error('Timed out waiting for the WebDriver server at ' + url));
^
Error: Timed out waiting for the WebDriver server at http://127.0.0.1:52959/
at Error (<anonymous>)
at onResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:87:11)
at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:42:21
at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/http/http.js:96:5
at ClientRequest.<anonymous> (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/index.js:136:7)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at Socket.socketErrorListener (http.js:1547:9)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:440:14
at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
at Function.webdriver.WebDriver.acquireSession_ (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/webdriver.js:131:49)
at Function.webdriver.WebDriver.createSession (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/webdriver.js:111:30)
J'ai examiné ce problème , mais un serveur WebDriver autonome n'est pas une solution.
J'ai regardé ce problème mais ma version de Selenium-wedriver est 2.42.1
, donc pas le même bogue.
$ node --version
v0.10.26
$ ./node_modules/protractor/bin/protractor --version
Version 1.0.0
$ uname -mrs
Linux 3.11.0-15-generic x86_64
Essayer d'obtenir la version de chrome-webdriver
expose un problème:
$ ./node_modules/protractor/Selenium/chromedriver --version
./node_modules/protractor/Selenium/chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
De cela, j'ai conclu qu'il y avait un problème de dépendance et j'ai constaté que Selenium requiert Chrome . (plus) .
J'ai installé Chrome sur la machine Linux en utilisant comme ceci :
Sudo apt-get install libxss1 libappindicator1 libindicator7
Sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb
Sudo dpkg -i google-chrome*.deb
Cela ne fonctionnait pas exactement comme ça, mais après quelques allers et retours avec des dépendances et Sudo apt-get install
, je pense que j'ai installé Chrome:
$ google-chrome --version
Google Chrome 36.0.1985.143
Cela a permis à la version chromedriver de fonctionner:
$ ./node_modules/protractor/Selenium/chromedriver --version
ChromeDriver 2.10.267518
Cependant, exécuter Protractor ne fonctionne toujours pas:
$ ./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/error.js:109
var template = new Error(this.message);
^
UnknownError: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.10.267518,platform=Linux 3.11.0-15-generic x86_64)
at new bot.Error (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/error.js:109:18)
at Object.bot.response.checkResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/response.js:106:9)
Vous devez être capable d’exécuter Chrome ou Firefox sans tête et pour cela, vous devrez entre autres configurer Xvfb, sinon Chrome ne pourra pas se lancer sans un $ DISPLAY approprié.
Vous pouvez également utiliser PhantomJS mais, à mon humble avis, à quoi cela sert-il de tester e2e puisque ce n’est pas un vrai navigateur?.
C’est ce que j’utilise avec succès pour les tests continus: https://github.com/elgalu/docker-Selenium
J'ai eu le même problème et il a été résolu juste après l'installation de l'unité-gtk3-module !!
yum install unity-gtk3-module
Installing:
PackageKit-gtk3-module
Updating:
Installing for dependencies:
PackageKit-glib
adwaita-cursor-theme
adwaita-icon-theme
at-spi2-atk
at-spi2-core
cairo-gobject
colord-libs
gtk3
json-glib
libXevie
libgusb
rest
Updating for dependencies:
glib2
j'espère que ça aide