Ich kann Tests in Jenkins nicht mehrmals ausführen. Ich kann Tests auf meinem lokalen Computer mehrmals ausführen und es funktioniert immer einwandfrei, aber ich erhalte einen ESOCKETTIMEDOUT-Fehler in Jenkins.
Es ist wichtig zu erwähnen, dass ich mich nicht wiederherstellen kann, wenn ich diesen Fehler erhalte (wenn der Job in Jenkins immer wieder ausgeführt wird, wird immer der gleiche Fehler erzeugt). Aber ich konnte es 2-3 Mal ohne Fehler ausführen (also habe ich gesehen, dass es funktioniert).
Tests werden in Chrome gestartet. Jenkins Sklave ist ein MacMini. Die Bereitstellung von Selen-Host und -Port behebt das Problem nicht.
Der Jenkins-Fehler mit ausführlichem Loglevel lautet wie folgt:
+ 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.
Der Job von Jenkins ist sehr einfach:
Anscheinend kann WebdriverIO keine Verbindung zum WebDriver-Back-End (wahrscheinlich Chromedriver) herstellen. Dies kann viele Gründe haben, aber es ist unwahrscheinlich, dass es mit WebdriverIO zusammenhängt. Etwas stimmt nicht mit Ihrem Treiber-Setup. Vielleicht führen Sie viele Tests gleichzeitig durch? Es gibt nichts, was wir tun können, um dies in WebdriverIO zu beheben. Deshalb schließen Sie diese. Melde dich gerne bei unserem Support wenn Sie weitere Fragen haben.
Hallo @christian-bromann danke für deine schnelle Antwort.
Ich mache mir Sorgen, weil ich nur einen Test (eine Funktion), die Anmeldung durchführe, und wie ich bereits erwähnt habe, konnte ich es 2-3 Mal in Jenkins sehen, aber dann schlug es fehl (immer mit dem gleichen Fehler) ). Ist es möglich, dass der Selen/Webtreiber nicht richtig getrennt/geschlossen ist, wenn der Test abgeschlossen ist? Vielleicht gibt es einige geöffnete Verbindungen aus früheren Läufen?
Ich habe andere verschiedene Tests durchgeführt (da ich verschiedene Webs teste) und neue Jobs in Jenkins konfiguriert und das gleiche Problem gefunden. Erste Tests funktionieren einwandfrei und dann schlug es mit ESOCKETTIMEDOUT fehl.
Auch hier kann ich diese Tests ohne Probleme und mehrmals lokal ausführen.
Für diejenigen, die das gleiche Problem haben können, habe ich es gerade mit Headless Chrome versucht und es funktioniert seit einigen Tagen einwandfrei :D Fügen Sie also die "headless" chromeOption zu Ihren Fähigkeiten hinzu und sehen Sie, ob es funktioniert.
Hallo @LaiaPR , ich hatte heute das gleiche Problem. Wie Sie vorgeschlagen haben, behebt das Hinzufügen der Option "headless" das Problem. Vielen Dank!
Hilfreichster Kommentar
Für diejenigen, die das gleiche Problem haben können, habe ich es gerade mit Headless Chrome versucht und es funktioniert seit einigen Tagen einwandfrei :D Fügen Sie also die "headless" chromeOption zu Ihren Fähigkeiten hinzu und sehen Sie, ob es funktioniert.