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.
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.
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.
Le travail de Jenkins est très simple :
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 support 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!
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.