Webdriverio: ESOCKETTIMEDOUT lors du lancement des tests dans Jenkins

Créé le 5 avr. 2018  ·  4Commentaires  ·  Source: webdriverio/webdriverio

Le problème

Je ne suis pas en mesure d'exécuter des tests plusieurs fois dans Jenkins. Je peux exécuter des tests plusieurs fois sur ma machine locale et cela fonctionne toujours bien, mais j'obtiens une erreur ESOCKETTIMEDOUT dans Jenkins.

Environnement

  • Version WebdriverIO : arrivée avec 4.10.1 et également mise à jour vers 4.12.0
  • Version de Node.js : 8.9.1
  • Mode autonome ou wdio testrunner : autonome
  • si wdio testrunner, exécution de tests synchrones ou asynchrones : sync
  • Packages wdio supplémentaires utilisés (le cas échéant) : j'utilise le concombre-chaudière

Des détails

Il est important de mentionner que lorsque j'obtiens cette erreur, je ne peux pas récupérer (exécuter encore et encore le travail dans Jenkins produit toujours la même erreur). Mais j'ai pu l'exécuter 2-3 fois sans erreur (donc, je l'ai vu fonctionner).
Les tests sont lancés dans Chrome. L'esclave Jenkins est un MacMini. La fourniture d'un hôte et d'un port sélénium ne résout pas le problème.

Lien vers les journaux Selenium/WebdriverIO

L'erreur Jenkins avec le niveau de journalisation détaillé est comme :

+ yarn run local-webserver
yarn run v1.3.2
$ forever start -s ./node_modules/.bin/http-server ./demo-app -s
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: ./node_modules/.bin/http-server
Done in 0.44s.
+ yarn run wdio
yarn run v1.3.2
$ /Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/.bin/wdio
[18:48:07]  COMMAND POST     "/wd/hub/session"
[18:48:07]  DATA        {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"chrome","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.12.0","name":"webdriverio"}}}
ERROR: ESOCKETTIMEDOUT
chrome
    at new RuntimeError (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:144:12)
    at Request._callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/RequestHandler.js:330:43)
    at self.callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:186:22)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at ClientRequest.<anonymous> (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:816:16)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at Socket.emitTimeout (_http_client.js:708:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7)
    at Socket._onTimeout (net.js:407:8)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)

error Command failed with exit code 1.

Code pour reproduire le problème

Le travail de Jenkins est très simple :

  • aller au répertoire spécifique
  • définir la version du nœud
  • installation de fil
  • lancer les tests avec : fil run wdio

Commentaire le plus utile

Pour ceux qui peuvent rencontrer le même problème, je viens d'essayer avec headless chrome et cela fonctionne bien depuis quelques jours :D Ajoutez donc l'option chrome "headless" dans vos capacités et voyez si cela fonctionne.

Tous les 4 commentaires

On dirait que WebdriverIO ne peut pas établir de connexion avec le backend WebDriver (probablement Chromedriver). Cela peut être dû à de nombreuses raisons, mais il est peu probable que cela soit lié à WebdriverIO. Quelque chose ne va pas avec la configuration de votre pilote. Peut-être que vous passez plusieurs tests en même temps ? Nous ne pouvons rien faire pour résoudre ce problème dans WebdriverIO. Par conséquent, la fermeture de ce. N'hésitez pas à contacter notre supportGitter si vous avez d'autres questions.

Salut @christian-bromann merci pour ta réponse rapide.

Je suis inquiet parce que je n'exécute qu'un seul test (une fonctionnalité), la connexion, et aussi comme je l'ai mentionné, j'ai pu le voir fonctionner dans Jenkins pendant 2-3 fois, mais cela a commencé à échouer (toujours avec la même erreur ). Est-il possible que le sélénium/webdriver ne soit pas bien déconnecté/fermé une fois le test terminé ? Peut-être y a-t-il des connexions ouvertes lors des précédentes exécutions ?

J'ai fait d'autres tests différents (car je teste différents sites Web) et configuré de nouveaux travaux dans Jenkins et j'ai trouvé le même problème. Les premiers tests fonctionnent correctement, puis il a commencé à échouer avec ESOCKETTIMEDOUT.

Encore une fois, je peux exécuter ces tests en local sans problème et plusieurs fois.

Pour ceux qui peuvent rencontrer le même problème, je viens d'essayer avec headless chrome et cela fonctionne bien depuis quelques jours :D Ajoutez donc l'option chrome "headless" dans vos capacités et voyez si cela fonctionne.

Salut @LaiaPR , j'ai eu le même problème aujourd'hui. Comme vous l'avez suggéré, l'ajout de l'option "sans tête" résout le problème. Merci!

Cette page vous a été utile?
0 / 5 - 0 notes