Closed drewheasman closed 10 months ago
Thanks @drewheasman! I'll take a look soon :)
Hi @drewheasman, thanks for the PR. I encountered problems building your branch due to the different layout of the newer ChromeDriver zips. Your changes were similar to my work-in-progress though which I've now pushed to the branch chrome-for-testing.
Unfortunately this branch fails the tests in ./build.sh
due to Chrome crashing:
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.hobsoft.docker.mavenchrome.BrowserTest
Starting ChromeDriver 119.0.6045.105 (38c72552c5e15ba9b3117c0967a0fd105072d7c6-refs/branch-heads/6045@{#1103}) on port 6513
Only local connecti[o1n7s0 0ar34e0 1a1ll1.ow42e1d].
[SPlEeVEaRsEe ]s: ebe inhdt(t)p sf:a/i/lcherdo:m Ceadrnniovter .acsshrigomn irume.qouregs/tesde caudrdirtyes-cso (n9s9id)
erations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
[ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.475 s <<< FAILURE! - in org.hobsoft.docker.mavenchrome.BrowserTest
[ERROR] org.hobsoft.docker.mavenchrome.BrowserTest.canDuck Time elapsed: 0.446 s <<< ERROR!
org.openqa.selenium.SessionNotCreatedException:
session not created: Chrome failed to start: exited normally.
(session not created: DevToolsActivePort file doesn't exist)
(The process started from chrome location /opt/google/chrome/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'c365d50409d2', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '6.2.0-36-generic', java.version: '1.8.0_372'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55ec3f7175e3 <unknown>
#1 0x55ec3f3da0b7 <unknown>
#2 0x55ec3f410e55 <unknown>
#3 0x55ec3f40db81 <unknown>
#4 0x55ec3f45847f <unknown>
#5 0x55ec3f44ecc3 <unknown>
#6 0x55ec3f41a0e4 <unknown>
#7 0x55ec3f41b0ae <unknown>
#8 0x55ec3f6ddce1 <unknown>
#9 0x55ec3f6e1b7e <unknown>
#10 0x55ec3f6cb4b5 <unknown>
#11 0x55ec3f6e27d6 <unknown>
#12 0x55ec3f6aedbf <unknown>
#13 0x55ec3f705748 <unknown>
#14 0x55ec3f705917 <unknown>
#15 0x55ec3f716773 <unknown>
#16 0x7ff2dd17bb43 <unknown>
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at org.hobsoft.docker.mavenchrome.BrowserTest.setUp(BrowserTest.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
I'm guessing something has changed with recent versions of Chrome, perhaps to do with the --no-sandbox
that we invoke it with.
I'd be interested if others encounter the same and welcome any ideas.
Ah that's a shame, I had some issues running the bats script (not used this framework for testing before) so I had just ensured the build ran, and ran the test class separately, so apologies for costing you some time trying out.
I'll try to have a look at your branch also to see if I can help
No problem, thanks for nudging me to take another look :)
So I bumped Selenium to latest (4.15.0, not committed to this branch) and I can get the tests to run against JDK17 (had some issues with some of the others that not looked into), but this is probably because Selenium now does the browser/driver management https://www.selenium.dev/documentation/selenium_manager/
If it's ok to bump the Selenium version, maybe could store the driver binary in ~/.cache/selenium and make sure stable chrome is preinstalled as per that page?
Thanks for the suggestion. I've upgraded Selenium to 4.13.0 (the latest that supports Java 8) and switched the tests to use DuckDuckGo Lite - for some reason the new DuckDuckGo site crashes Chrome in the tests.
Hopefully the latest images should work for you now!
Hey @markhobson I had a go at making the changes mentioned in https://github.com/markhobson/docker-maven-chrome/pull/49#issuecomment-1710758280
I've made minimal changes to allow chrome/chromedriver to be updated, wasn't sure if you were intending to rework anything else here