clj-commons / etaoin

Pure Clojure Webdriver protocol implementation

Home Page:https://cljdoc.org/d/etaoin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ci: tests failing due to mismatch between edge webdriver and edge browser on Windows

lread opened this issue · comments

Version
master HEAD

Platform
Operating System: Windows
Browser vendor: Edge

Symptom
GitHub Actions tests are failing for Edge on Windows with the following:

Testing etaoin.api-test
Testing with browsers: [:edge]
Error: Exception in thread "main" clojure.lang.ExceptionInfo: throw+: {:response {:sessionId "1ea08b1bb661d770e21cbf5d6df26343", :status 102, :value {:message "disconnected: not connected to DevTools\n  (failed to check if window was closed: disconnected: not connected to DevTools)\n  (Session info: headless MicrosoftEdge=112.0.1722.39)\n  (Driver info: msedgedriver=111.0.1661.62 (0a8f453929e6410c973aa529a40485ce4e3e03db),platform=Windows NT 10.0.20348 x86_64)"}}, :path "session", :payload {:desiredCapabilities {:loggingPrefs {:browser "ALL"}, :edgeOptions {:args ("--headless")}}}, :method :post, :type :etaoin/http-error, :port 51239, :host "127.0.0.1", :status 200, :webdriver-url nil, :driver {:type :edge, :host "127.0.0.1", :port 51239, :url "http://127.0.0.1:51239/", :locator "xpath", :capabilities {:loggingPrefs {:browser "ALL"}, :edgeOptions {:args ("--headless")}}, :args ("msedgedriver" "--port=51239"), :process {:proc #object[java.lang.ProcessImpl 0x1e680c92 "Process[pid=4712, exitValue=\"not exited\"]"], :exit nil, :in #object[java.io.BufferedOutputStream 0xef64a8f "java.io.BufferedOutputStream@ef64a8f"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x3a2cc282 "java.lang.ProcessBuilder$NullInputStream@3a2cc282"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x3a2cc282 "java.lang.ProcessBuilder$NullInputStream@3a2cc282"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\EdgeDriver\\msedgedriver.exe" "--port=51239"]}}} {:response {:sessionId "1ea08b1bb661d770e21cbf5d6df26343", :status 102, :value {:message "disconnected: not connected to DevTools\n  (failed to check if window was closed: disconnected: not connected to DevTools)\n  (Session info: headless MicrosoftEdge=112.0.1722.39)\n  (Driver info: msedgedriver=111.0.1661.62 (0a8f453929e6410c973aa529a40485ce4e3e03db),platform=Windows NT 10.0.20348 x86_64)"}}, :path "session", :payload {:desiredCapabilities {:loggingPrefs {:browser "ALL"}, :edgeOptions {:args ("--headless")}}}, :method :post, :type :etaoin/http-error, :port 51239, :host "127.0.0.1", :status 200, :webdriver-url nil, :driver {:type :edge, :host "127.0.0.1", :port 51239, :url "http://127.0.0.1:51239/", :locator "xpath", :capabilities {:loggingPrefs {:browser "ALL"}, :edgeOptions {:args ("--headless")}}, :args ("msedgedriver" "--port=51239"), :process {:proc #object[java.lang.ProcessImpl 0x1e680c92 "Process[pid=4712, exitValue=1]"], :exit nil, :in #object[java.io.BufferedOutputStream 0xef64a8f "java.io.BufferedOutputStream@ef64a8f"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x3a2cc282 "java.lang.ProcessBuilder$NullInputStream@3a2cc282"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x3a2cc282 "java.lang.ProcessBuilder$NullInputStream@3a2cc282"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\EdgeDriver\\msedgedriver.exe" "--port=51239"]}}}
	at slingshot.support$stack_trace.invoke(support.clj:201)
	at etaoin.impl.client$call.invokeStatic(client.cljc:143)
	at etaoin.impl.client$call.invoke(client.cljc:95)
	at etaoin.api$execute.invokeStatic(api.clj:235)
	at etaoin.api$execute.invoke(api.clj:209)
	at etaoin.api$create_session.invokeStatic(api.clj:262)
	at etaoin.api$create_session.doInvoke(api.clj:252)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at etaoin.api$_connect_driver.invokeStatic(api.clj:3607)
	at etaoin.api$_connect_driver.doInvoke(api.clj:3520)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at etaoin.api$boot_driver.invokeStatic(api.clj:3665)
	at etaoin.api$boot_driver.invoke(api.clj:3640)
	at etaoin.api_test$fixture_browsers$fn__8717.invoke(api_test.clj:57)
	at etaoin.api_test$fixture_browsers.invokeStatic(api_test.clj:57)
	at etaoin.api_test$fixture_browsers.invoke(api_test.clj:53)
	at clojure.test$compose_fixtures$fn__9203$fn__9204.invoke(test.clj:693)
	at clojure.test$default_fixture.invokeStatic(test.clj:686)
	at clojure.test$default_fixture.invoke(test.clj:682)
	at clojure.test$compose_fixtures$fn__9203.invoke(test.clj:693)
	at clojure.test$test_vars$fn__9235.invoke(test.clj:734)
	at etaoin.api_test$report_browsers.invokeStatic(api_test.clj:71)
	at etaoin.api_test$report_browsers.invoke(api_test.clj:69)
	at clojure.test$compose_fixtures$fn__9203$fn__9204.invoke(test.clj:693)
	at clojure.test$default_fixture.invokeStatic(test.clj:686)
	at clojure.test$default_fixture.invoke(test.clj:682)
	at clojure.test$compose_fixtures$fn__9203.invoke(test.clj:693)
	at clojure.test$test_vars.invokeStatic(test.clj:730)
	at clojure.test$test_all_vars.invokeStatic(test.clj:736)
	at clojure.test$test_ns.invokeStatic(test.clj:757)
	at clojure.test$test_ns.invoke(test.clj:742)
	at clojure.core$map$fn__5587.invoke(core.clj:2747)
	at clojure.lang.LazySeq.sval(LazySeq.java:40)
	at clojure.lang.LazySeq.seq(LazySeq.java:49)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.boundedLength(RT.java:1785)
	at clojure.lang.RestFn.applyTo(RestFn.java:130)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.test$run_tests.invokeStatic(test.clj:767)
	at clojure.test$run_tests.doInvoke(test.clj:767)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.core$apply.invoke(core.clj:652)
	at cognitect.test_runner$test.invokeStatic(test_runner.clj:74)
	at cognitect.test_runner$test.invoke(test_runner.clj:62)
	at cognitect.test_runner.api$do_test.invokeStatic(api.clj:14)
	at cognitect.test_runner.api$do_test.invoke(api.clj:6)
	at cognitect.test_runner.api$test.invokeStatic(api.clj:28)
	at cognitect.test_runner.api$test.invoke(api.clj:16)
	at clojure.lang.Var.invoke(Var.java:381)
	at babashka.cli.exec$main.invokeStatic(exec.clj:65)
	at babashka.cli.exec$main.doInvoke(exec.clj:63)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.core$apply.invoke(core.clj:652)
	at babashka.cli.exec$_main.invokeStatic(exec.clj:80)
	at babashka.cli.exec$_main.doInvoke(exec.clj:67)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.main$main_opt.invokeStatic(main.clj:317)
	at clojure.main$main_opt.invoke(main.clj:313)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)

Diagnosis
We have our CI runs spit out tools versions:

|-------------------+-----------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------|
|        Name       |                                               Version                                               |                                       Path                                      |
|-------------------+-----------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------|
| Java              | openjdk version "11.0.18" 2023-01-17                                                                | C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\11.0.18-10\x64\bin\java.exe |
|                   | OpenJDK Runtime Environment Temurin-11.0.18+10 (build 11.0.18+10)                                   |                                                                                 |
|                   | OpenJDK 64-Bit Server VM Temurin-11.0.18+10 (build 11.0.18+10, mixed mode)                          |                                                                                 |
| Babashka          | babashka v1.3.176                                                                                   | D:\a\_temp\176624e2-1522-4cda-a5bb-e2420b786cff\bb.exe                          |
| Image Magick      | Version: ImageMagick 7.1.1-6 Q16-HDRI x64 b2dd67b:20230402 https://imagemagick.org/                  | C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe                          |
| Chrome            | 112.0.5615.50                                                                                       |                                                                                 |
| Chrome Webdriver  | ChromeDriver 112.0.5615.49 (bd2a7bcb881c11e8cfe3078709382934e3916914-refs/branch-heads/5615@{#936}) | C:\SeleniumWebDrivers\ChromeDriver\chromedriver.exe                             |
| Firefox           | 111.0.1                                                                                             | C:\Program Files\Mozilla Firefox                                                |
| Firefox Webdriver | geckodriver 0.33.0 (a80e5fd61076 2023-04-02 18:31 +0000)                                            | C:\SeleniumWebDrivers\GeckoDriver\geckodriver.exe                               |
| Edge              | 112.0.1722.39                                                                                       | C:\Program Files (x86)\Microsoft\Edge\Application                               |
| Edge Webdriver    | Microsoft Edge WebDriver 111.0.1661.62 (0a8f453929e6410c973aa529a40485ce4e3e03db)                   | C:\SeleniumWebDrivers\EdgeDriver\msedgedriver.exe                               |
|-------------------+-----------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------|

You'll notice that Edge is at v112 and Edge Webdriver is at v111.
For Edge, it is important that these versions match.

GitHub Actions does spit out some info about the runner image:

Runner Image
Image: windows-2022
Version: 20230407.1
Included Software: https://github.com/actions/runner-images/blob/win22/20230407.1/images/win/Windows2022-Readme.md
Image Release: https://github.com/actions/runner-images/releases/tag/win22%2F20230407.1

From the README, it seems that Edge is supposed to be at v111.

I see this issue has been raised against the runner: actions/runner-images#7426

Reproduction
Failing tests cmds:

bb test:jvm --suites api --browsers edge
bb test:bb --suites api --browsers edge

If I try Edge v112 with a matching Edge WebDriver on a local Windows VM, tests pass for me.
I can reproduce the symptom if I downgrade Edge WebDriver to v111.

Action
Not sure. I could wait a couple of days for the GitHub Actions team to resolve this.

If no resolution comes, I could add a workaround to replace the Edge WebDriver with a compatible version. The workaround shown in the runner-image issue is a bit wordy, I'd likely do something in babashka.