kazurayam / selenium-webdriver-java

Examples of the O'Reilly book "Hands-On Selenium WebDriver with Java"
https://oreil.ly/1E7CX
Apache License 2.0
0 stars 0 forks source link

io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test failed; "java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 at org.bouncycastle.operator.DefaultSignatureNameFinder" #25

Open kazurayam opened 8 months ago

kazurayam commented 8 months ago

I have merged the @bonigarcia's latest mater branch into my fork. I executed, in the master branch

:~/github/selenium-webdriver-java (master *)
$ gradle -q :selenium-webdriver-junit4:test --tests="*ch09.performance.HarCreator*"

Then the test failed.

<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test" tests="1" skipped="0" failures="1" errors="0" timestamp="2023-11-04T05:48:18" hostname="KAZUAKInoAir.AirPort" time="45.323">
  <properties/>
  <testcase name="testHarCreator" classname="io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test" time="45.323">
    <failure message="org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {&quot;method&quot;:&quot;css selector&quot;,&quot;selector&quot;:&quot;#username&quot;}&#10;  (Session info: chrome=119.0.6045.105)&#10;For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception&#10;Build info: version: '4.15.0', revision: '1d14b5521b'&#10;System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '12.7.1', java.version: '17.0.8'&#10;Driver info: org.openqa.selenium.chrome.ChromeDriver&#10;Command: [d47e1af01dd07ede75f56132a40abef3, findElement {using=id, value=username}]&#10;Capabilities {acceptInsecureCerts: true, browserName: chrome, browserVersion: 119.0.6045.105, chrome: {chromedriverVersion: 119.0.6045.105 (38c72552c5e..., userDataDir: /var/folders/lh/jkh513dn7f3...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:53367}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: mac, proxy: Proxy(manual, http=KAZUAKIn..., se:cdp: ws://localhost:53367/devtoo..., se:cdpVersion: 119.0.6045.105, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}&#10;Session ID: d47e1af01dd07ede75f56132a40abef3" type="org.openqa.selenium.NoSuchElementException">org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {&quot;method&quot;:&quot;css selector&quot;,&quot;selector&quot;:&quot;#username&quot;}
  (Session info: chrome=119.0.6045.105)
For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
Build info: version: '4.15.0', revision: '1d14b5521b'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '12.7.1', java.version: '17.0.8'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [d47e1af01dd07ede75f56132a40abef3, findElement {using=id, value=username}]
Capabilities {acceptInsecureCerts: true, browserName: chrome, browserVersion: 119.0.6045.105, chrome: {chromedriverVersion: 119.0.6045.105 (38c72552c5e..., userDataDir: /var/folders/lh/jkh513dn7f3...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:53367}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: mac, proxy: Proxy(manual, http=KAZUAKIn..., se:cdp: ws://localhost:53367/devtoo..., se:cdpVersion: 119.0.6045.105, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Session ID: d47e1af01dd07ede75f56132a40abef3
    at java.base@17.0.8/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base@17.0.8/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base@17.0.8/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base@17.0.8/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base@17.0.8/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at app//org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
    at app//org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
    at app//org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:52)
    at app//org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:191)
    at app//org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:200)
    at app//org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:175)
    at app//org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:607)
    at app//org.openqa.selenium.remote.ElementLocation$ElementFinder$2.findElement(ElementLocation.java:165)
    at app//org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:66)
    at app//org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:364)
    at app//org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:358)
    at app//io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test.testHarCreator(HarCreatorJUnit4Test.java:85)
    at java.base@17.0.8/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base@17.0.8/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base@17.0.8/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base@17.0.8/java.lang.reflect.Method.invoke(Method.java:568)
    at app//org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at app//org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at app//org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at app//org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at app//org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at app//org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at app//org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at app//org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at app//org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at app//org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at app//org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at app//org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at app//org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
    at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at java.base@17.0.8/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base@17.0.8/java.lang.reflect.Method.invoke(Method.java:568)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
    at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
    at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
    at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
    at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
    at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
</failure>
  </testcase>
  <system-out><![CDATA[2023-11-04 14:48:20 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.start(495) - Starting proxy at address: 0.0.0.0/0.0.0.0:0
2023-11-04 14:48:20 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStart(524) - Proxy listening with TCP transport
2023-11-04 14:48:20 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStart(559) - Proxy started at address: /[0:0:0:0:0:0:0:0]:53354
2023-11-04 14:48:20 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.<init>(227) - Using WebDriverManager 5.6.0
2023-11-04 14:48:21 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution chrome=119 in cache (valid until 15:08:01 04/11/2023 JST)
2023-11-04 14:48:21 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution chrome119=119.0.6045.105 in cache (valid until 14:08:01 05/11/2023 JST)
2023-11-04 14:48:21 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.resolveDriverVersion(1229) - Using chromedriver 119.0.6045.105 (resolved driver for Chrome 119)
2023-11-04 14:48:21 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.manage(1184) - Driver chromedriver 119.0.6045.105 found in cache
2023-11-04 14:48:21 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.exportDriver(1290) - Exporting webdriver.chrome.driver as /Users/kazuakiurayama/.cache/selenium/chromedriver/mac64/119.0.6045.105/chromedriver
2023-11-04 14:48:30 [LittleProxy-0-ClientToProxyWorker-2] WARN  i.n.util.concurrent.DefaultPromise.notifyListener0(593) - An exception was thrown by org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete()
com.google.common.util.concurrent.ExecutionError: java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.getHostnameImpersonatingSslContext(ImpersonatingMitmManager.java:242)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.clientSslEngineFor(ImpersonatingMitmManager.java:223)
    at org.littleshoot.proxy.impl.ProxyToServerConnection$3.execute(ProxyToServerConnection.java:724)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.processCurrentStep(ConnectionFlow.java:128)
    at org.littleshoot.proxy.impl.ConnectionFlow.advance(ConnectionFlow.java:90)
    at org.littleshoot.proxy.impl.ConnectionFlowStep.onSuccess(ConnectionFlowStep.java:83)
    at org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete(ConnectionFlow.java:149)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.access$000(ConnectionFlow.java:14)
    at org.littleshoot.proxy.impl.ConnectionFlow$1.run(ConnectionFlow.java:124)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.getCertificateSigner(BouncyCastleSecurityProviderTool.java:333)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.createServerCertificate(BouncyCastleSecurityProviderTool.java:99)
    at net.lightbody.bmp.mitm.tools.DefaultSecurityProviderTool.createServerCertificate(DefaultSecurityProviderTool.java:43)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:308)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:271)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.access$3(ImpersonatingMitmManager.java:264)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:245)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:1)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 28 common frames omitted
2023-11-04 14:48:30 [LittleProxy-0-ClientToProxyWorker-1] WARN  i.n.util.concurrent.DefaultPromise.notifyListener0(593) - An exception was thrown by org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete()
com.google.common.util.concurrent.ExecutionError: java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.getHostnameImpersonatingSslContext(ImpersonatingMitmManager.java:242)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.clientSslEngineFor(ImpersonatingMitmManager.java:223)
    at org.littleshoot.proxy.impl.ProxyToServerConnection$3.execute(ProxyToServerConnection.java:724)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.processCurrentStep(ConnectionFlow.java:128)
    at org.littleshoot.proxy.impl.ConnectionFlow.advance(ConnectionFlow.java:90)
    at org.littleshoot.proxy.impl.ConnectionFlowStep.onSuccess(ConnectionFlowStep.java:83)
    at org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete(ConnectionFlow.java:149)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.access$000(ConnectionFlow.java:14)
    at org.littleshoot.proxy.impl.ConnectionFlow$1.run(ConnectionFlow.java:124)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.getCertificateSigner(BouncyCastleSecurityProviderTool.java:333)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.createServerCertificate(BouncyCastleSecurityProviderTool.java:99)
    at net.lightbody.bmp.mitm.tools.DefaultSecurityProviderTool.createServerCertificate(DefaultSecurityProviderTool.java:43)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:308)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:271)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.access$3(ImpersonatingMitmManager.java:264)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:245)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:1)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 28 common frames omitted
2023-11-04 14:48:30 [LittleProxy-0-ClientToProxyWorker-0] WARN  i.n.util.concurrent.DefaultPromise.notifyListener0(593) - An exception was thrown by org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete()
com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.getHostnameImpersonatingSslContext(ImpersonatingMitmManager.java:242)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.clientSslEngineFor(ImpersonatingMitmManager.java:223)
    at org.littleshoot.proxy.impl.ProxyToServerConnection$3.execute(ProxyToServerConnection.java:724)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.processCurrentStep(ConnectionFlow.java:128)
    at org.littleshoot.proxy.impl.ConnectionFlow.advance(ConnectionFlow.java:90)
    at org.littleshoot.proxy.impl.ConnectionFlowStep.onSuccess(ConnectionFlowStep.java:83)
    at org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete(ConnectionFlow.java:149)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.access$000(ConnectionFlow.java:14)
    at org.littleshoot.proxy.impl.ConnectionFlow$1.run(ConnectionFlow.java:124)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.getCertificateSigner(BouncyCastleSecurityProviderTool.java:333)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.createServerCertificate(BouncyCastleSecurityProviderTool.java:99)
    at net.lightbody.bmp.mitm.tools.DefaultSecurityProviderTool.createServerCertificate(DefaultSecurityProviderTool.java:43)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:308)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:271)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.access$3(ImpersonatingMitmManager.java:264)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:245)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:1)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 28 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 [in thread "LittleProxy-0-ClientToProxyWorker-2"]
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
    ... 42 common frames omitted
2023-11-04 14:48:45 [LittleProxy-0-ClientToProxyWorker-3] WARN  i.n.util.concurrent.DefaultPromise.notifyListener0(593) - An exception was thrown by org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete()
com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.getHostnameImpersonatingSslContext(ImpersonatingMitmManager.java:242)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.clientSslEngineFor(ImpersonatingMitmManager.java:223)
    at org.littleshoot.proxy.impl.ProxyToServerConnection$3.execute(ProxyToServerConnection.java:724)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.processCurrentStep(ConnectionFlow.java:128)
    at org.littleshoot.proxy.impl.ConnectionFlow.advance(ConnectionFlow.java:90)
    at org.littleshoot.proxy.impl.ConnectionFlowStep.onSuccess(ConnectionFlowStep.java:83)
    at org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete(ConnectionFlow.java:149)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.access$000(ConnectionFlow.java:14)
    at org.littleshoot.proxy.impl.ConnectionFlow$1.run(ConnectionFlow.java:124)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.getCertificateSigner(BouncyCastleSecurityProviderTool.java:333)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.createServerCertificate(BouncyCastleSecurityProviderTool.java:99)
    at net.lightbody.bmp.mitm.tools.DefaultSecurityProviderTool.createServerCertificate(DefaultSecurityProviderTool.java:43)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:308)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:271)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.access$3(ImpersonatingMitmManager.java:264)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:245)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:1)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 28 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 [in thread "LittleProxy-0-ClientToProxyWorker-2"]
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
    ... 42 common frames omitted
2023-11-04 14:48:59 [LittleProxy-0-ProxyToServerWorker-4] WARN  n.l.bmp.filters.HarCaptureFilter.captureResponseContent(452) - No content type specified in response from http://www.gstatic.com/generate_204. Content will be treated as application/octet-stream
2023-11-04 14:49:01 [LittleProxy-0-ClientToProxyWorker-5] WARN  i.n.util.concurrent.DefaultPromise.notifyListener0(593) - An exception was thrown by org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete()
com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.getHostnameImpersonatingSslContext(ImpersonatingMitmManager.java:242)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.clientSslEngineFor(ImpersonatingMitmManager.java:223)
    at org.littleshoot.proxy.impl.ProxyToServerConnection$3.execute(ProxyToServerConnection.java:724)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.processCurrentStep(ConnectionFlow.java:128)
    at org.littleshoot.proxy.impl.ConnectionFlow.advance(ConnectionFlow.java:90)
    at org.littleshoot.proxy.impl.ConnectionFlowStep.onSuccess(ConnectionFlowStep.java:83)
    at org.littleshoot.proxy.impl.ConnectionFlow$2.operationComplete(ConnectionFlow.java:149)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at org.littleshoot.proxy.impl.ConnectionFlow.doProcessCurrentStep(ConnectionFlow.java:140)
    at org.littleshoot.proxy.impl.ConnectionFlow.access$000(ConnectionFlow.java:14)
    at org.littleshoot.proxy.impl.ConnectionFlow$1.run(ConnectionFlow.java:124)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper
    at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.getCertificateSigner(BouncyCastleSecurityProviderTool.java:333)
    at net.lightbody.bmp.mitm.tools.BouncyCastleSecurityProviderTool.createServerCertificate(BouncyCastleSecurityProviderTool.java:99)
    at net.lightbody.bmp.mitm.tools.DefaultSecurityProviderTool.createServerCertificate(DefaultSecurityProviderTool.java:43)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:308)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.createImpersonatingSslContext(ImpersonatingMitmManager.java:271)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager.access$3(ImpersonatingMitmManager.java:264)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:245)
    at net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager$3.call(ImpersonatingMitmManager.java:1)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 28 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 [in thread "LittleProxy-0-ClientToProxyWorker-2"]
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
    ... 42 common frames omitted
2023-11-04 14:49:01 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStop(434) - Shutting down proxy server gracefully
2023-11-04 14:49:01 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.closeAllChannels(469) - Closing all channels (graceful)
2023-11-04 14:49:01 [Test worker] INFO  o.littleshoot.proxy.impl.ServerGroup.shutdown(212) - Shutting down server group event loops (graceful)
2023-11-04 14:49:03 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStop(450) - Done shutting down proxy server
]]></system-out>
  <system-err><![CDATA[Nov 04, 2023 2:49:03 PM org.openqa.selenium.os.ExternalProcess$Builder lambda$start$0
WARNING: failed to copy the output of process 74432
java.io.IOException: Stream closed
    at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:168)
    at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:334)
    at java.base/java.io.InputStream.transferTo(InputStream.java:782)
    at org.openqa.selenium.os.ExternalProcess$Builder.lambda$start$0(ExternalProcess.java:209)
    at java.base/java.lang.Thread.run(Thread.java:833)

]]></system-err>
</testsuite>

I noticed that the ch09.performance.HarCreatorJUnit4Test sometimes passes and sometimes failed. It behaves accidental.

kazurayam commented 8 months ago

I found an information.

https://stackoverflow.com/questions/47126562/bouncycastleprovider-throws-java-lang-nosuchfielderror-id-hmacwithsha3-224

I have researched it for couples of days, I thought the reason for this problem is there is some collisions between packages:

bc-fips-1.0.0
bcprov-jdk15on-158.jar
bctls-fips-1.0.2.jar

How to fix that? Thx in advancee!

kazurayam commented 8 months ago

I looked at the dependency tree of the selenium-webdriver-junit4 project.

$ cd selenium-webdriver-junit
$ gradle -q dependencies --configuration testRuntimeClasspath > build/dependencies.txt

I got the following output:

------------------------------------------------------------
Project ':selenium-webdriver-junit4'
------------------------------------------------------------

testRuntimeClasspath - Runtime classpath of source set 'test'.
+--- org.slf4j:slf4j-api:2.0.9
+--- ch.qos.logback:logback-classic:1.4.11
|    +--- ch.qos.logback:logback-core:1.4.11
|    \--- org.slf4j:slf4j-api:2.0.7 -> 2.0.9
+--- org.springframework.boot:spring-boot-starter:3.1.5
|    +--- org.springframework.boot:spring-boot:3.1.5
|    |    +--- org.springframework:spring-core:6.0.13
|    |    |    \--- org.springframework:spring-jcl:6.0.13
|    |    \--- org.springframework:spring-context:6.0.13
|    |         +--- org.springframework:spring-aop:6.0.13
|    |         |    +--- org.springframework:spring-beans:6.0.13
|    |         |    |    \--- org.springframework:spring-core:6.0.13 (*)
|    |         |    \--- org.springframework:spring-core:6.0.13 (*)
|    |         +--- org.springframework:spring-beans:6.0.13 (*)
|    |         +--- org.springframework:spring-core:6.0.13 (*)
|    |         \--- org.springframework:spring-expression:6.0.13
|    |              \--- org.springframework:spring-core:6.0.13 (*)
|    +--- org.springframework.boot:spring-boot-autoconfigure:3.1.5
|    |    \--- org.springframework.boot:spring-boot:3.1.5 (*)
|    +--- org.springframework.boot:spring-boot-starter-logging:3.1.5
|    |    +--- ch.qos.logback:logback-classic:1.4.11 (*)
|    |    +--- org.apache.logging.log4j:log4j-to-slf4j:2.20.0
|    |    |    +--- org.apache.logging.log4j:log4j-api:2.20.0
|    |    |    \--- org.slf4j:slf4j-api:1.7.36 -> 2.0.9
|    |    \--- org.slf4j:jul-to-slf4j:2.0.9
|    |         \--- org.slf4j:slf4j-api:2.0.9
|    +--- jakarta.annotation:jakarta.annotation-api:2.1.1
|    +--- org.springframework:spring-core:6.0.13 (*)
|    \--- org.yaml:snakeyaml:1.33 -> 2.2
+--- org.springframework.boot:spring-boot-starter-web:3.1.5
|    +--- org.springframework.boot:spring-boot-starter:3.1.5 (*)
|    +--- org.springframework.boot:spring-boot-starter-json:3.1.5
|    |    +--- org.springframework.boot:spring-boot-starter:3.1.5 (*)
|    |    +--- org.springframework:spring-web:6.0.13
|    |    |    +--- org.springframework:spring-beans:6.0.13 (*)
|    |    |    +--- org.springframework:spring-core:6.0.13 (*)
|    |    |    \--- io.micrometer:micrometer-observation:1.10.12
|    |    |         \--- io.micrometer:micrometer-commons:1.10.12
|    |    +--- com.fasterxml.jackson.core:jackson-databind:2.15.3
|    |    |    +--- com.fasterxml.jackson.core:jackson-annotations:2.15.3
|    |    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.3
|    |    |    |         +--- com.fasterxml.jackson.core:jackson-annotations:2.15.3 (c)
|    |    |    |         +--- com.fasterxml.jackson.core:jackson-core:2.15.3 (c)
|    |    |    |         +--- com.fasterxml.jackson.core:jackson-databind:2.15.3 (c)
|    |    |    |         +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.3 (c)
|    |    |    |         +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3 (c)
|    |    |    |         \--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.15.3 (c)
|    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.15.3
|    |    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.3 (*)
|    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.3 (*)
|    |    +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.3
|    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.15.3 (*)
|    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.15.3 (*)
|    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.3 (*)
|    |    +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3
|    |    |    +--- com.fasterxml.jackson.core:jackson-annotations:2.15.3 (*)
|    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.15.3 (*)
|    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.15.3 (*)
|    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.3 (*)
|    |    \--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.15.3
|    |         +--- com.fasterxml.jackson.core:jackson-core:2.15.3 (*)
|    |         +--- com.fasterxml.jackson.core:jackson-databind:2.15.3 (*)
|    |         \--- com.fasterxml.jackson:jackson-bom:2.15.3 (*)
|    +--- org.springframework.boot:spring-boot-starter-tomcat:3.1.5
|    |    +--- jakarta.annotation:jakarta.annotation-api:2.1.1
|    |    +--- org.apache.tomcat.embed:tomcat-embed-core:10.1.15
|    |    +--- org.apache.tomcat.embed:tomcat-embed-el:10.1.15
|    |    \--- org.apache.tomcat.embed:tomcat-embed-websocket:10.1.15
|    |         \--- org.apache.tomcat.embed:tomcat-embed-core:10.1.15
|    +--- org.springframework:spring-web:6.0.13 (*)
|    \--- org.springframework:spring-webmvc:6.0.13
|         +--- org.springframework:spring-aop:6.0.13 (*)
|         +--- org.springframework:spring-beans:6.0.13 (*)
|         +--- org.springframework:spring-context:6.0.13 (*)
|         +--- org.springframework:spring-core:6.0.13 (*)
|         +--- org.springframework:spring-expression:6.0.13 (*)
|         \--- org.springframework:spring-web:6.0.13 (*)
+--- org.seleniumhq.selenium:selenium-java:4.15.0
|    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    +--- org.seleniumhq.selenium:selenium-chrome-driver:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-chromium-driver:4.15.0
|    |    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0
|    |    |    |    \--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0
|    |    |         +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    |         +--- com.google.guava:guava:32.1.2-jre -> 32.1.3-jre
|    |    |         |    +--- com.google.guava:failureaccess:1.0.1
|    |    |         |    +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|    |    |         |    +--- com.google.code.findbugs:jsr305:3.0.2
|    |    |         |    +--- org.checkerframework:checker-qual:3.37.0
|    |    |         |    \--- com.google.errorprone:error_prone_annotations:2.21.1
|    |    |         +--- io.opentelemetry:opentelemetry-api:1.28.0
|    |    |         |    \--- io.opentelemetry:opentelemetry-context:1.28.0
|    |    |         +--- io.opentelemetry:opentelemetry-context:1.28.0
|    |    |         +--- io.opentelemetry:opentelemetry-exporter-logging:1.28.0
|    |    |         |    +--- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.28.0
|    |    |         |    |    \--- io.opentelemetry:opentelemetry-sdk:1.28.0
|    |    |         |    |         +--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         +--- io.opentelemetry:opentelemetry-sdk-common:1.28.0
|    |    |         |    |         |    +--- io.opentelemetry:opentelemetry-semconv:1.28.0-alpha
|    |    |         |    |         |    |    \--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         |    \--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         +--- io.opentelemetry:opentelemetry-sdk-trace:1.28.0
|    |    |         |    |         |    +--- io.opentelemetry:opentelemetry-semconv:1.28.0-alpha (*)
|    |    |         |    |         |    +--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         |    \--- io.opentelemetry:opentelemetry-sdk-common:1.28.0 (*)
|    |    |         |    |         +--- io.opentelemetry:opentelemetry-sdk-metrics:1.28.0
|    |    |         |    |         |    +--- io.opentelemetry:opentelemetry-extension-incubator:1.28.0-alpha
|    |    |         |    |         |    |    \--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         |    +--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |         |    \--- io.opentelemetry:opentelemetry-sdk-common:1.28.0 (*)
|    |    |         |    |         \--- io.opentelemetry:opentelemetry-sdk-logs:1.28.0
|    |    |         |    |              +--- io.opentelemetry:opentelemetry-api-events:1.28.0-alpha
|    |    |         |    |              |    \--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |              +--- io.opentelemetry:opentelemetry-api:1.28.0 (*)
|    |    |         |    |              \--- io.opentelemetry:opentelemetry-sdk-common:1.28.0 (*)
|    |    |         |    +--- io.opentelemetry:opentelemetry-sdk:1.28.0 (*)
|    |    |         |    +--- io.opentelemetry:opentelemetry-sdk-metrics:1.28.0 (*)
|    |    |         |    \--- io.opentelemetry:opentelemetry-sdk-logs:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-sdk-common:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.28.0
|    |    |         |    +--- io.opentelemetry:opentelemetry-api-events:1.28.0-alpha (*)
|    |    |         |    +--- io.opentelemetry:opentelemetry-semconv:1.28.0-alpha (*)
|    |    |         |    +--- io.opentelemetry:opentelemetry-sdk:1.28.0 (*)
|    |    |         |    \--- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-sdk-trace:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-sdk:1.28.0 (*)
|    |    |         +--- io.opentelemetry:opentelemetry-semconv:1.28.0-alpha (*)
|    |    |         +--- net.bytebuddy:byte-buddy:1.14.5
|    |    |         +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    |         +--- org.seleniumhq.selenium:selenium-http:4.15.0
|    |    |         |    +--- com.google.guava:guava:32.1.2-jre -> 32.1.3-jre (*)
|    |    |         |    +--- dev.failsafe:failsafe:3.3.2
|    |    |         |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    |         |    \--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    |         +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    |         +--- org.seleniumhq.selenium:selenium-manager:4.15.0
|    |    |         |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    |         |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    |         |    \--- org.seleniumhq.selenium:selenium-os:4.15.0
|    |    |         |         +--- org.apache.commons:commons-exec:1.3
|    |    |         |         \--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    |         \--- org.seleniumhq.selenium:selenium-os:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-manager:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-devtools-v117:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-devtools-v118:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-devtools-v119:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-devtools-v85:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-edge-driver:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-chromium-driver:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-manager:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-firefox-driver:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-devtools-v85:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-http:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    |    +--- org.seleniumhq.selenium:selenium-manager:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-ie-driver:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    +--- org.seleniumhq.selenium:selenium-manager:4.15.0 (*)
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-safari-driver:4.15.0
|    |    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    |    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    |    \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    \--- org.seleniumhq.selenium:selenium-support:4.15.0
|         +--- com.google.auto.service:auto-service-annotations:1.1.1
|         +--- com.google.guava:guava:32.1.2-jre -> 32.1.3-jre (*)
|         +--- net.bytebuddy:byte-buddy:1.14.5
|         +--- org.seleniumhq.selenium:selenium-api:4.15.0
|         +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|         \--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
+--- junit:junit:4.13.2
|    +--- org.hamcrest:hamcrest-core:1.3
|    +--- io.qameta.allure:allure-junit4:2.16.1
|    |    +--- io.qameta.allure:allure-java-commons:2.16.1
|    |    |    +--- org.slf4j:slf4j-api:1.7.30 -> 2.0.9
|    |    |    \--- io.qameta.allure:allure-model:2.16.1
|    |    \--- junit:junit:4.13.2 (*)
|    \--- io.qameta.allure:allure-junit4-aspect:2.16.1
|         +--- io.qameta.allure:allure-junit4:2.16.1 (*)
|         +--- junit:junit:4.13.2 (*)
|         \--- org.aspectj:aspectjrt:1.9.7
+--- org.assertj:assertj-core:3.24.2
|    \--- net.bytebuddy:byte-buddy:1.12.21 -> 1.14.5
+--- io.github.bonigarcia:webdrivermanager:5.6.0
|    +--- org.slf4j:slf4j-api:2.0.9
|    +--- com.google.code.gson:gson:2.10.1
|    +--- com.github.docker-java:docker-java:3.3.3
|    |    +--- com.github.docker-java:docker-java-core:3.3.3
|    |    |    +--- com.github.docker-java:docker-java-api:3.3.3
|    |    |    |    +--- com.fasterxml.jackson.core:jackson-annotations:2.10.3 -> 2.15.3 (*)
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.30 -> 2.0.9
|    |    |    +--- com.github.docker-java:docker-java-transport:3.3.3
|    |    |    +--- org.slf4j:slf4j-api:1.7.30 -> 2.0.9
|    |    |    +--- commons-io:commons-io:2.6 -> 2.15.0
|    |    |    +--- org.apache.commons:commons-compress:1.21 -> 1.24.0
|    |    |    +--- org.apache.commons:commons-lang3:3.12.0 -> 3.13.0
|    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.10.3 -> 2.15.3 (*)
|    |    |    +--- com.google.guava:guava:19.0 -> 32.1.3-jre (*)
|    |    |    \--- org.bouncycastle:bcpkix-jdk18on:1.75 -> 1.76
|    |    |         +--- org.bouncycastle:bcprov-jdk18on:1.76
|    |    |         \--- org.bouncycastle:bcutil-jdk18on:1.76
|    |    |              \--- org.bouncycastle:bcprov-jdk18on:1.76
|    |    \--- org.slf4j:jcl-over-slf4j:1.7.30
|    |         \--- org.slf4j:slf4j-api:1.7.30 -> 2.0.9
|    +--- com.github.docker-java:docker-java-transport-httpclient5:3.3.3
|    |    +--- com.github.docker-java:docker-java-transport:3.3.3
|    |    +--- org.apache.httpcomponents.client5:httpclient5:5.0.3 -> 5.2.1
|    |    |    +--- org.apache.httpcomponents.core5:httpcore5:5.2
|    |    |    +--- org.apache.httpcomponents.core5:httpcore5-h2:5.2
|    |    |    |    \--- org.apache.httpcomponents.core5:httpcore5:5.2
|    |    |    \--- org.slf4j:slf4j-api:1.7.36 -> 2.0.9
|    |    \--- net.java.dev.jna:jna:5.12.1
|    +--- org.brotli:dec:0.1.2
|    +--- org.apache.commons:commons-lang3:3.13.0
|    +--- org.apache.commons:commons-compress:1.24.0
|    \--- org.apache.httpcomponents.client5:httpclient5:5.2.1 (*)
+--- org.seleniumhq.selenium:htmlunit-driver:4.13.0
|    \--- net.sourceforge.htmlunit:htmlunit:2.70.0
|         +--- org.apache.httpcomponents:httpmime:4.5.14
|         |    \--- org.apache.httpcomponents:httpclient:4.5.14
|         |         +--- org.apache.httpcomponents:httpcore:4.4.16
|         |         +--- commons-logging:commons-logging:1.2
|         |         \--- commons-codec:commons-codec:1.11 -> 1.15
|         +--- net.sourceforge.htmlunit:htmlunit-core-js:2.70.0
|         +--- net.sourceforge.htmlunit:neko-htmlunit:2.70.0
|         +--- net.sourceforge.htmlunit:htmlunit-cssparser:1.14.0
|         +--- net.sourceforge.htmlunit:htmlunit-xpath:2.70.0
|         +--- org.apache.commons:commons-lang3:3.12.0 -> 3.13.0
|         +--- org.apache.commons:commons-text:1.10.0
|         +--- commons-io:commons-io:2.10.0 -> 2.15.0
|         +--- commons-logging:commons-logging:1.2
|         +--- commons-net:commons-net:3.9.0
|         +--- commons-codec:commons-codec:1.15
|         +--- org.brotli:dec:0.1.2
|         +--- com.shapesecurity:salvation2:3.0.1
|         \--- org.eclipse.jetty.websocket:websocket-client:9.4.50.v20221201
|              +--- org.eclipse.jetty:jetty-client:9.4.50.v20221201
|              |    +--- org.eclipse.jetty:jetty-http:9.4.50.v20221201
|              |    |    +--- org.eclipse.jetty:jetty-util:9.4.50.v20221201
|              |    |    \--- org.eclipse.jetty:jetty-io:9.4.50.v20221201
|              |    |         \--- org.eclipse.jetty:jetty-util:9.4.50.v20221201
|              |    \--- org.eclipse.jetty:jetty-io:9.4.50.v20221201 (*)
|              +--- org.eclipse.jetty:jetty-util:9.4.50.v20221201
|              +--- org.eclipse.jetty:jetty-io:9.4.50.v20221201 (*)
|              \--- org.eclipse.jetty.websocket:websocket-common:9.4.50.v20221201
|                   +--- org.eclipse.jetty.websocket:websocket-api:9.4.50.v20221201
|                   +--- org.eclipse.jetty:jetty-util:9.4.50.v20221201
|                   \--- org.eclipse.jetty:jetty-io:9.4.50.v20221201 (*)
+--- org.seleniumhq.selenium:selenium-grid:4.15.0
|    +--- com.beust:jcommander:1.82
|    +--- com.google.auto.service:auto-service-annotations:1.1.1
|    +--- com.google.guava:guava:32.1.2-jre -> 32.1.3-jre (*)
|    +--- com.graphql-java:graphql-java:20.2
|    |    +--- com.graphql-java:java-dataloader:3.2.0
|    |    |    \--- org.slf4j:slf4j-api:1.7.30 -> 2.0.9
|    |    +--- org.reactivestreams:reactive-streams:1.0.3 -> 1.0.4
|    |    \--- org.slf4j:slf4j-api:1.7.35 -> 2.0.9
|    +--- com.graphql-java:java-dataloader:3.2.0 (*)
|    +--- dev.failsafe:failsafe:3.3.2
|    +--- io.netty:netty-buffer:4.1.100.Final
|    |    \--- io.netty:netty-common:4.1.100.Final
|    +--- io.netty:netty-codec-http:4.1.100.Final
|    |    +--- io.netty:netty-common:4.1.100.Final
|    |    +--- io.netty:netty-buffer:4.1.100.Final (*)
|    |    +--- io.netty:netty-transport:4.1.100.Final
|    |    |    +--- io.netty:netty-common:4.1.100.Final
|    |    |    +--- io.netty:netty-buffer:4.1.100.Final (*)
|    |    |    \--- io.netty:netty-resolver:4.1.100.Final
|    |    |         \--- io.netty:netty-common:4.1.100.Final
|    |    +--- io.netty:netty-codec:4.1.100.Final
|    |    |    +--- io.netty:netty-common:4.1.100.Final
|    |    |    +--- io.netty:netty-buffer:4.1.100.Final (*)
|    |    |    \--- io.netty:netty-transport:4.1.100.Final (*)
|    |    \--- io.netty:netty-handler:4.1.100.Final
|    |         +--- io.netty:netty-common:4.1.100.Final
|    |         +--- io.netty:netty-resolver:4.1.100.Final (*)
|    |         +--- io.netty:netty-buffer:4.1.100.Final (*)
|    |         +--- io.netty:netty-transport:4.1.100.Final (*)
|    |         +--- io.netty:netty-transport-native-unix-common:4.1.100.Final
|    |         |    +--- io.netty:netty-common:4.1.100.Final
|    |         |    +--- io.netty:netty-buffer:4.1.100.Final (*)
|    |         |    \--- io.netty:netty-transport:4.1.100.Final (*)
|    |         \--- io.netty:netty-codec:4.1.100.Final (*)
|    +--- io.netty:netty-common:4.1.100.Final
|    +--- io.netty:netty-handler:4.1.100.Final (*)
|    +--- io.netty:netty-transport:4.1.100.Final (*)
|    +--- io.ous:jtoml:2.0.0
|    +--- org.bouncycastle:bcpkix-jdk18on:1.76 (*)
|    +--- org.seleniumhq.selenium:selenium-api:4.15.0
|    +--- org.seleniumhq.selenium:selenium-chrome-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-edge-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-firefox-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-http:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-ie-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-json:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-manager:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-remote-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-safari-driver:4.15.0 (*)
|    +--- org.seleniumhq.selenium:selenium-support:4.15.0 (*)
|    \--- org.zeromq:jeromq:0.5.3
|         \--- eu.neilalexander:jnacl:1.0.0
+--- org.awaitility:awaitility:4.2.0
|    \--- org.hamcrest:hamcrest:2.1 -> 2.2
+--- net.lightbody.bmp:browsermob-core:2.1.5
|    +--- net.lightbody.bmp:littleproxy:1.1.0-beta-bmp-17
|    |    +--- com.google.guava:guava:22.0-android -> 32.1.3-jre (*)
|    |    +--- org.apache.commons:commons-lang3:3.5 -> 3.13.0
|    |    +--- io.netty:netty-all:4.0.49.Final -> 4.0.51.Final
|    |    \--- org.slf4j:slf4j-api:1.7.25 -> 2.0.9
|    +--- com.google.guava:guava:23.0-android -> 32.1.3-jre (*)
|    +--- dnsjava:dnsjava:2.1.8
|    +--- org.slf4j:slf4j-api:1.7.25 -> 2.0.9
|    +--- org.slf4j:jcl-over-slf4j:1.7.25 -> 1.7.30 (*)
|    +--- com.jcraft:jzlib:1.1.3
|    +--- io.netty:netty-all:4.0.51.Final
|    +--- org.bouncycastle:bcprov-jdk15on:1.58
|    +--- org.bouncycastle:bcpkix-jdk15on:1.58
|    |    \--- org.bouncycastle:bcprov-jdk15on:1.58
|    \--- net.lightbody.bmp:mitm:2.1.5
|         +--- org.bouncycastle:bcprov-jdk15on:1.58
|         \--- org.bouncycastle:bcpkix-jdk15on:1.58 (*)
+--- org.zaproxy:zap-clientapi:1.12.0
|    \--- org.jdom:jdom:1.1.3
+--- com.deque.html.axe-core:selenium:4.8.0
|    +--- commons-io:commons-io:2.11.0 -> 2.15.0
|    +--- io.github.bonigarcia:webdrivermanager:5.3.1 -> 5.6.0 (*)
|    +--- org.apache.commons:commons-lang3:3.12.0 -> 3.13.0
|    +--- com.fasterxml.jackson.core:jackson-databind:2.14.1 -> 2.15.3 (*)
|    \--- com.deque.html.axe-core:dequeutilites:4.8.0
|         \--- com.fasterxml.jackson.core:jackson-annotations:2.14.1 -> 2.15.3 (*)
+--- com.codeborne:selenide:7.0.2
|    +--- com.google.guava:guava:32.1.3-jre (*)
|    +--- org.apache.commons:commons-lang3:3.13.0
|    +--- commons-io:commons-io:2.15.0
|    +--- org.slf4j:slf4j-api:2.0.9
|    +--- com.codeborne:selenide-core:7.0.2
|    |    +--- com.google.guava:guava:32.1.3-jre (*)
|    |    +--- org.apache.commons:commons-lang3:3.13.0
|    |    +--- commons-io:commons-io:2.15.0
|    |    +--- org.slf4j:slf4j-api:2.0.9
|    |    +--- org.opentest4j:opentest4j:1.3.0
|    |    \--- com.fasterxml.jackson.core:jackson-core:2.15.3 (c)
|    \--- com.fasterxml.jackson.core:jackson-core:2.15.3 (c)
+--- net.datafaker:datafaker:2.0.2
|    +--- org.yaml:snakeyaml:2.2
|    \--- com.github.mifmif:generex:1.0.2
|         \--- dk.brics.automaton:automaton:1.11-8
+--- com.aventstack:extentreports:5.1.1
|    +--- io.reactivex.rxjava3:rxjava:3.1.6
|    |    \--- org.reactivestreams:reactive-streams:1.0.4
|    +--- org.freemarker:freemarker:2.3.32
|    \--- com.google.code.gson:gson:2.10.1
+--- io.cucumber:cucumber-java:7.14.0
|    +--- io.cucumber:cucumber-core:7.14.0
|    |    +--- io.cucumber:cucumber-gherkin:7.14.0
|    |    |    \--- io.cucumber:cucumber-plugin:7.14.0
|    |    |         \--- org.apiguardian:apiguardian-api:1.1.2
|    |    +--- io.cucumber:cucumber-gherkin-messages:7.14.0
|    |    |    +--- io.cucumber:gherkin:26.2.0
|    |    |    |    \--- io.cucumber:messages:[19.1.4,23.0.0) -> 22.0.0
|    |    |    \--- io.cucumber:cucumber-gherkin:7.14.0 (*)
|    |    +--- io.cucumber:messages:22.0.0
|    |    +--- io.cucumber:tag-expressions:5.0.6
|    |    +--- io.cucumber:cucumber-expressions:16.1.2
|    |    |    \--- org.apiguardian:apiguardian-api:1.1.2
|    |    +--- io.cucumber:datatable:7.14.0
|    |    |    \--- org.apiguardian:apiguardian-api:1.1.2
|    |    +--- io.cucumber:cucumber-plugin:7.14.0 (*)
|    |    +--- io.cucumber:docstring:7.14.0
|    |    |    \--- org.apiguardian:apiguardian-api:1.1.2
|    |    +--- io.cucumber:html-formatter:20.4.0
|    |    |    \--- io.cucumber:messages:[18.0.0,23.0.0) -> 22.0.0
|    |    +--- io.cucumber:junit-xml-formatter:0.2.0
|    |    |    \--- io.cucumber:messages:[21.0.1,23.0.0) -> 22.0.0
|    |    +--- io.cucumber:ci-environment:9.2.0
|    |    \--- org.apiguardian:apiguardian-api:1.1.2
|    \--- org.apiguardian:apiguardian-api:1.1.2
+--- io.cucumber:cucumber-junit:7.14.0
|    +--- org.apiguardian:apiguardian-api:1.1.2
|    +--- io.cucumber:cucumber-core:7.14.0 (*)
|    \--- junit:junit:4.13.2 (*)
+--- org.springframework.boot:spring-boot-starter-test:3.1.5
|    +--- org.springframework.boot:spring-boot-starter:3.1.5 (*)
|    +--- org.springframework.boot:spring-boot-test:3.1.5
|    |    \--- org.springframework.boot:spring-boot:3.1.5 (*)
|    +--- org.springframework.boot:spring-boot-test-autoconfigure:3.1.5
|    |    +--- org.springframework.boot:spring-boot:3.1.5 (*)
|    |    +--- org.springframework.boot:spring-boot-test:3.1.5 (*)
|    |    \--- org.springframework.boot:spring-boot-autoconfigure:3.1.5 (*)
|    +--- com.jayway.jsonpath:json-path:2.8.0
|    |    +--- net.minidev:json-smart:2.4.10 -> 2.4.11
|    |    |    \--- net.minidev:accessors-smart:2.4.11
|    |    |         \--- org.ow2.asm:asm:9.3
|    |    \--- org.slf4j:slf4j-api:1.7.36 -> 2.0.9
|    +--- jakarta.xml.bind:jakarta.xml.bind-api:4.0.1
|    |    \--- jakarta.activation:jakarta.activation-api:2.1.2
|    +--- net.minidev:json-smart:2.4.11 (*)
|    +--- org.assertj:assertj-core:3.24.2 (*)
|    +--- org.hamcrest:hamcrest:2.2
|    +--- org.mockito:mockito-core:5.3.1
|    |    +--- net.bytebuddy:byte-buddy:1.14.4 -> 1.14.5
|    |    +--- net.bytebuddy:byte-buddy-agent:1.14.4
|    |    \--- org.objenesis:objenesis:3.3
|    +--- org.mockito:mockito-junit-jupiter:5.3.1
|    |    \--- org.mockito:mockito-core:5.3.1 (*)
|    +--- org.skyscreamer:jsonassert:1.5.1
|    |    \--- com.vaadin.external.google:android-json:0.0.20131108.vaadin1
|    +--- org.springframework:spring-core:6.0.13 (*)
|    +--- org.springframework:spring-test:6.0.13
|    |    \--- org.springframework:spring-core:6.0.13 (*)
|    \--- org.xmlunit:xmlunit-core:2.9.1
+--- io.appium:java-client:9.0.0
|    +--- com.google.code.gson:gson:2.10.1
|    \--- org.slf4j:slf4j-api:2.0.9
+--- io.rest-assured:rest-assured:5.3.1
|    +--- org.apache.groovy:groovy:4.0.11
|    |    \--- org.apache.groovy:groovy-bom:4.0.11
|    |         +--- org.apache.groovy:groovy:4.0.11 (c)
|    |         +--- org.apache.groovy:groovy-json:4.0.11 (c)
|    |         \--- org.apache.groovy:groovy-xml:4.0.11 (c)
|    +--- org.apache.groovy:groovy-xml:4.0.11
|    |    +--- org.apache.groovy:groovy-bom:4.0.11 (*)
|    |    \--- org.apache.groovy:groovy:4.0.11 (*)
|    +--- org.apache.httpcomponents:httpclient:4.5.13 -> 4.5.14 (*)
|    +--- org.apache.httpcomponents:httpmime:4.5.13 -> 4.5.14 (*)
|    +--- org.hamcrest:hamcrest:2.2
|    +--- org.ccil.cowan.tagsoup:tagsoup:1.2.1
|    +--- io.rest-assured:json-path:5.3.1
|    |    +--- org.apache.groovy:groovy-json:4.0.11
|    |    |    +--- org.apache.groovy:groovy-bom:4.0.11 (*)
|    |    |    \--- org.apache.groovy:groovy:4.0.11 (*)
|    |    +--- org.apache.groovy:groovy:4.0.11 (*)
|    |    \--- io.rest-assured:rest-assured-common:5.3.1
|    |         +--- org.apache.groovy:groovy:4.0.11 (*)
|    |         \--- org.apache.commons:commons-lang3:3.11 -> 3.13.0
|    \--- io.rest-assured:xml-path:5.3.1
|         +--- org.apache.groovy:groovy-xml:4.0.11 (*)
|         +--- org.apache.groovy:groovy:4.0.11 (*)
|         +--- io.rest-assured:rest-assured-common:5.3.1 (*)
|         +--- org.apache.commons:commons-lang3:3.11 -> 3.13.0
|         \--- org.ccil.cowan.tagsoup:tagsoup:1.2.1
\--- org.seleniumhq.selenium:selenium-devtools-v114:4.12.1
     +--- com.google.auto.service:auto-service-annotations:1.1.1
     +--- com.google.guava:guava:32.1.2-jre -> 32.1.3-jre (*)
     +--- org.seleniumhq.selenium:selenium-api:4.12.1 -> 4.15.0
     +--- org.seleniumhq.selenium:selenium-json:4.12.1 -> 4.15.0 (*)
     \--- org.seleniumhq.selenium:selenium-remote-driver:4.12.1 -> 4.15.0 (*)

(c) - A dependency constraint, not a dependency. The dependency affected by the constraint occurs elsewhere in the tree.
(*) - Indicates repeated occurrences of a transitive dependency subtree. Gradle expands transitive dependency subtrees only once per project; repeat occurrences only display the root of the subtree, followed by this annotation.

A web-based, searchable dependency report is available by adding the --scan option.
kazurayam commented 8 months ago

In the log, I can find a name "org.bouncycaslte" as follows:

Caused by: java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128
    at org.bouncycastle.operator.DefaultSignatureNameFinder.<clinit>(Unknown Source)
        at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
        ...

So I guess that there is a version collision of org.bouncycastle:* jars, which causes "java.lang.NoSuchFieldError".

In the dependency tree, I found a version collision for the org.bouncycastle:bc* jar.

The WebDriverManager v5.6.0 depends on org.bouncycastle:bc*-jdk18on:1.76

+--- io.github.bonigarcia:webdrivermanager:5.6.0
|    +--- com.github.docker-java:docker-java:3.3.3
|    |    +--- com.github.docker-java:docker-java-core:3.3.3
|    |    |    \--- org.bouncycastle:bcpkix-jdk18on:1.75 -> 1.76
|    |    |         +--- org.bouncycastle:bcprov-jdk18on:1.76
|    |    |         \--- org.bouncycastle:bcutil-jdk18on:1.76
|    |    |              \--- org.bouncycastle:bcprov-jdk18on:1.76

BrowserMob Proxy depends on the org.bouncycastle:bc*-jdk15on:1.58

+--- net.lightbody.bmp:browsermob-core:2.1.5
|    +--- org.bouncycastle:bcprov-jdk15on:1.58
|    +--- org.bouncycastle:bcpkix-jdk15on:1.58
|    |    \--- org.bouncycastle:bcprov-jdk15on:1.58
|    \--- net.lightbody.bmp:mitm:2.1.5
|         +--- org.bouncycastle:bcprov-jdk15on:1.58
|         \--- org.bouncycastle:bcpkix-jdk15on:1.58 (*)
kazurayam commented 8 months ago

What is bouncycastle?

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms, it was developed by the Legion of the Bouncy Castle - with a little help!

kazurayam commented 8 months ago

I found the Javadoc page of [id_RSASSA_PSS_SHAKE128]

https://www.bouncycastle.org/docs/utildocs1.5on/org/bouncycastle/asn1/cms/CMSObjectIdentifiers.html#id_RSASSA_PSS_SHAKE128

So I think that it is very likely that the version collision of the "bouncycastle" jars is the root cause of the problem.

kazurayam commented 8 months ago

I remember a few weeks ago, the io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test ran and passed. It created a HAR file with rich content.

But now it fails.

What is the difference? --- well there must be some. I should be able to identify, but I am not sure if I could.

Possibly the sequence of class loading in java is different now and then. I am unable to control it.

kazurayam commented 8 months ago

I wanted to know from which jar file the org.bouncycastle.operator.DefaultSignatureNameFinder class and org.bouncycastle.asn1.cms.CMSObjectIdentifiers were loaded.

So I modified the HarCreatorJUnit4Test class a bit:

public class HarCreatorJUnit4Test {
    WebDriver driver;
    BrowserMobProxy proxy;
    @Before
    public void setup() {
        ...
        driver = WebDriverManager.chromedriver().capabilities(options).create();

        System.out.println("net.lightbody.bmp.BrowserMobProxy was loaded from " +
                BrowserMobProxy.class.getProtectionDomain().getCodeSource());        System.out.println("org.bouncycastle.operator.defaultSignatureNameFindler was loaded from " +
                org.bouncycastle.operator.DefaultSignatureNameFinder.class.getProtectionDomain().getCodeSource());   // INSERTED THIS

        System.out.println("org.bouncycastle.asn1.cms.CMSObjectIdentifiers as loaded from " +
                org.bouncycastle.asn1.cms.CMSObjectIdentifiers.class.getProtectionDomain().getCodeSource());
    }

When I ran it I got

...
net.lightbody.bmp.BrowserMobProxy was loaded from (file:/Users/kazurayam/.gradle/caches/modules-2/files-2.1/net.lightbody.bmp/browsermob-core/2.1.5/19b2a3f6c911b85793fa2ca4dbfb350dd9c01429/browsermob-core-2.1.5.jar <no signer certificates>)

...
org.bouncycastle.operator.defaultSignatureNameFindler was loaded from (file:/Users/kazurayam/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcpkix-jdk18on/1.76/10c9cf5c1b4d64abeda28ee32fbade3b74373622/bcpkix-jdk18on-1.76.jar [
...
org.bouncycastle.asn1.cms.CMSObjectIdentifiers as loaded from (file:/Users/kazurayam/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.58/2c9aa1c4e3372b447ba5daabade4adf2a2264b12/bcprov-jdk15on-1.58.jar [
...

One class was loaded from the bcpkix-jdk18on-1.76.jar, and another from the bcprov-jdk15on-1.58.jar. There is a collision here!


I think that the ideal solution of this issue is that someone contribute to the BrowserMob Proxy project to update their product so that it work with newer version of the "bouncycastle" library. ... am I going to do it? ... well, let me try ...

kazurayam commented 8 months ago

@nonigarcia

I think that we can no longer run BrowserMob Proxy with WebDriverManager safely. It is quite likely that we encounter "java.lang.NoSucFieldError: id_RSASSA_PSS_SHAKE128" error. With that error, BrowserMob Proxy does not function. The error is caused by a collision of version of the "bouncycastle" library. BrowserMob Proxy depends on the bcprov-jdk15on-1.58.jar while WebDriverManager depends on bcpkix-jdk18on-1.76.jar. It depends on the class loading sequence of Java, which users can not control.

In order to avoid confusion caused by the io.github.bonigarcia.webdriver.junit.ch09.performance.HarCreator* class , possibly we should mark the class with @Ignore or @Disabled annotation.

This means, I am afraid, that the Example 9-4 of the book is suspended.

kazurayam commented 8 months ago

I started a reseach on the browsermob-proxy libary.

https://github.com/kazurayam/browsermob-proxy/issues/1

It seems possible to modify the dependency of the browsermob-proxy library so that it uses the bouncycastle -jdk18on product rather than -jdk15on product without any change of the browsermob-proxy source code.

kazurayam commented 8 months ago

I have managed to create the browsermob-proxy-2.1.5.jar of which dependency is hacked: it depends on the bouncycastle products -jdk18on.jar, rather than -jdk15on.jar

You can download the jar from

https://github.com/kazurayam/browsermob-proxy/releases/tag/IgnoringFailingTests

kazurayam commented 8 months ago

I know that the classes of the browsermob-proxy was loaded from the following path:

net.lightbody.bmp.BrowserMobProxy was loaded from (file:/Users/kazurayam/.gradle/caches/modules-2/files-2.1/net.lightbody.bmp/browsermob-core/2.1.5/19b2a3f6c911b85793fa2ca4dbfb350dd9c01429/browsermob-core-2.1.5.jar <no signer certificates>)

I can manually replace the jar with the hacked jar as I mentioned.

Let me do it, and see if the ch09.performance.HarCreateorJUnit2Test works.


No, it did not work. Replacing the jar has no effect to the dependency tree.


In the hacked browsermob-proxy project, I would publish the hacked artifact into the MavenLocal repository. I would want to do

$ mvn install

Then in the selenium-webdriver-java project on my local machine, insert the mavenLocal() before the mavenCentral(), hoping that the mavenLocal() to have higher precedence to the Maven Central repository.

I tried it.

The ch09.performance.HarCreatorJUnit4Test worked using the hacked browsermob-proxy jar!

See the section enclosed by a pair of ** below:

> Task :selenium-webdriver-junit4:compileJava UP-TO-DATE
> Task :selenium-webdriver-junit4:processResources UP-TO-DATE
> Task :selenium-webdriver-junit4:classes UP-TO-DATE
> Task :selenium-webdriver-junit4:compileTestJava
> Task :selenium-webdriver-junit4:processTestResources UP-TO-DATE
> Task :selenium-webdriver-junit4:testClasses
2023-11-06 21:40:04 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.start(495) - Starting proxy at address: 0.0.0.0/0.0.0.0:0
2023-11-06 21:40:04 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStart(524) - Proxy listening with TCP transport
2023-11-06 21:40:05 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStart(559) - Proxy started at address: /0.0.0.0:54829
2023-11-06 21:40:05 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.<init>(227) - Using WebDriverManager 5.6.0
2023-11-06 21:40:06 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution chrome=119 in cache (valid until 21:46:10 06/11/2023 JST)
2023-11-06 21:40:06 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution chrome119=119.0.6045.105 in cache (valid until 20:46:10 07/11/2023 JST)
2023-11-06 21:40:06 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.resolveDriverVersion(1229) - Using chromedriver 119.0.6045.105 (resolved driver for Chrome 119)
2023-11-06 21:40:06 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.manage(1184) - Driver chromedriver 119.0.6045.105 found in cache
2023-11-06 21:40:06 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.exportDriver(1290) - Exporting webdriver.chrome.driver as /Users/kazuakiurayama/.cache/selenium/chromedriver/mac64/119.0.6045.105/chromedriver

***********************************************************
net.lightbody.bmp.BrowserMobProxy was loaded from (file:/Users/kazuakiurayama/.m2/repository/net/lightbody/bmp/browsermob-core/2.1.5/browsermob-core-2.1.5.jar <no signer certificates>)
***********************************************************

org.bouncycastle.operator.defaultSignatureNameFinder was loaded from (file:/Users/kazuakiurayama/.m2/repository/org/bouncycastle/bcpkix-jdk18on/1.76/bcpkix-jdk18on-1.76.jar [
[
  Version: V3
  Subject: CN=Legion of the Bouncy Castle Inc., OU=Java Software Code Signing, O=Oracle Corporation
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun DSA Public Key
    Parameters:DSA, 
    p:     95475cf5 d93e596c 3fcd1d90 2add02f4 27f5f3c7 210313bb 45fb4d5b b2e5fe1c
    bd678cd4 bbdd84c9 836be1f3 1c077772 5aeb6c2f c38b85f4 8076fa76 bcd8146c
    c89a6fb2 f706dd71 9898c208 3dc8d896 f84062e2 c9c94d13 7b054a8d 8096adb8
    d5195239 8eeca852 a0af12df 83e475aa 65d4ec0c 38a9560d 5661186f f98b9fc9
    eb60eee8 b030376b 236bc73b e3acdbd7 4fd61c1d 2475fa30 77b8f080 467881ff
    7e1ca56f ee066d79 506ade51 edbb5443 a563927d bc4ba520 08674617 5c888592
    5ebc64c6 14790677 3496990c b714ec66 7304e261 faee33b3 cbdf008e 0c3fa906
    50d97d39 09c9275b f4ac86ff cb3d03e6 dfc8ada5 934242dd 6d3bcca2 a406cb0b
    q:     f8183668 ba5fc5bb 06b5981e 6d8b795d 30b8978d 43ca0ec5 72e37e09 939a9773
    g:     42debb9d a5b3d88c c956e087 87ec3f3a 09bba5f4 8b889a74 aaf53174 aa0fbe7e
    3c5b8fcd 7a53bef5 63b0e985 60328960 a9517f40 14d3325f c7962bf1 e049370d
    76d1314a 76137e79 2f3f0db8 59d095e4 a5b93202 4f079ecf 2ef09c79 7452b077
    0e135078 2ed57ddf 794979dc ef23cb96 f1830619 65c4ebc9 3c9c71c5 6b925955
    a75f94cc cf1449ac 43d586d0 beee4325 1b0b2287 349d68de 0d144403 f13e802f
    4146d882 e057af19 b6f6275c 6676c8fa 0e3ca271 3a3257fd 1b27d063 9f695e34
    7d8d1cf9 ac819a26 ca9b04cb 0eb9b7b0 35988d15 bbac6521 2a55239c fc7e58fa
    e38d7250 ab9991ff bc971340 25fe8ce0 4c4399ad 96569be9 1a546f49 78693c7a

  y:
    555e7dfb 4b8947c4 133081ff 67039468 8682c319 3e6e7796 be868ec7 5cb77595
    7eb9ef96 b3cbeef7 d29fd4a0 aaaf2bba f86853c8 58b3f5aa 597a92e7 fdc84a03
    84b383ec 9d9f93b9 64086cdd 8ebaf443 61871963 3473baa4 098bdbf7 b76cb214
    93033f39 41f3b535 00fa30b0 62981f02 5786b467 02cf5700 72bee17f 040d2386
    27000df0 f5970030 3d199c40 fe8fd4f9 38ab2e81 c3c4f288 ebc5f7b9 c3e35713
    c07d6c4b 66357c93 0dd3586a 8dd52aea 18212ee9 1abc6bc3 cb4d918d 42a39c8b
    a2392a3d 08c82da2 752d0c41 00e1d1b1 3c8b7a78 3d50eee2 25949b8b d892e06a
    fb0ecd72 0e206706 62872b0b e87d0df1 5d94d415 c2acda2d f713d491 bbec6c25

  Validity: [From: Tue Jan 25 09:58:59 JST 2022,
               To: Mon Jan 25 09:58:59 JST 2027]
  Issuer: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  SerialNumber: [    08874f23 f4bbf63b d806a7ae b0a12cf4 672bba2a]

Certificate Extensions: 4
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

[2]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]

[3]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
]

[4]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 2E D1 58 A7 86 CE 6F DF   52 78 66 1A FE 9D 47 C8  ..X...o.Rxf...G.
0010: 54 83 4A 10                                        T.J.
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 28 92 06 11 63 AC B9 78   AC D3 44 57 4C 91 76 1C  (...c..x..DWL.v.
0010: 7D 33 CE 49 5F 50 98 9B   6D 0E 46 26 1C 52 9A 76  .3.I_P..m.F&.R.v
0020: DC 6B 9B F4 23 4E AA 8B   82 04 7F B8 9F D4 DA E9  .k..#N..........
0030: F4 49 9C 40 F3 1E 52 29   28 03 0D BF AB D0 06 8B  .I.@..R)(.......
0040: 1C 3D B5 DB 21 D4 31 A9   40 75 CD 92 9D 9D 52 EE  .=..!.1.@u....R.
0050: 46 76 23 61 7B 58 8A 57   8C E6 2F FA 15 FF 2B 2F  Fv#a.X.W../...+/
0060: 43 58 1A 3C 07 88 CB 51   1C 8E 1F 25 25 93 4A 38  CX.<...Q...%%.J8
0070: 63 3C 7B F2 C8 D6 97 1C   23 BB 79 13 61 40 23 EC  c<......#.y.a@#.
0080: BD 82 57 C7 B3 96 E3 C8   27 61 0D DD 20 71 84 A8  ..W.....'a.. q..
0090: DD C9 D2 F3 D2 3B 77 64   33 D3 7B 64 3A 17 A5 02  .....;wd3..d:...
00A0: 71 82 52 46 ED DA DE D2   CC ED 93 1F A5 FA 3D 69  q.RF..........=i
00B0: 0E 76 CB B1 E9 B0 76 AC   8B ED 23 A7 04 C8 BE E7  .v....v...#.....
00C0: 7E C5 51 FB F7 8C 6A D8   F5 35 17 1E FE 0D 4A AA  ..Q...j..5....J.
00D0: 08 49 67 6E 99 6E 26 E6   0F EE 5F BC 16 EB 21 36  .Ign.n&..._...!6
00E0: 70 72 9D 3C 62 74 D9 E6   DC 74 A4 A4 BD 1D 14 B1  pr.<bt...t......
00F0: DC 91 CF 37 EB 85 A9 D3   DE F3 F4 E9 CD 03 4C EE  ...7..........L.

] [
[
  Version: V3
  Subject: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 17055452969822851135992683666979143033468417516051484609876299349676029392164762036831549416422250468242904965674236843772803293403274674367639000027597291165980354342488221481381151536971801625301661816742720339832977615327173058869536881152822978061111237825033757212550660110223240010192057280048506749054109628485658743646473290297361365307075301733147631825944967519762063418196630025286099013201124619373211156022657615904486255757509163698183415752543095397597179195207723060703818084876590178940763595648511724817319040693751004044340989968966872349969442926398888123828596921098899758812235847574184576447233
  public exponent: 65537
  Validity: [From: Thu Jul 07 08:48:44 JST 2016,
               To: Tue Dec 31 09:00:00 JST 2030]
  Issuer: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  SerialNumber: [    3c9eb1fc 89f733d3]

Certificate Extensions: 4
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

[2]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

[3]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_CertSign
  Crl_Sign
]

[4]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 3F 13 7F D7 C2 40 E8 1E   CE 79 86 10 6B 92 B7 FB  ?....@...y..k...
0010: 6B D5 C0 56 0C 11 3A 84   CC 28 97 BE C8 96 A0 6C  k..V..:..(.....l
0020: 7A 7B B2 D2 62 23 25 A4   24 30 0E 86 32 CF 69 EE  z...b#%.$0..2.i.
0030: 50 1D DB 6F 51 00 D6 8D   14 89 AC AF FF 3B 93 18  P..oQ........;..
0040: B8 E3 A1 AD 70 B5 3C 79   1B EE 22 83 A5 7E 6A 19  ....p.<y.."...j.
0050: 7F 57 A6 C6 4D 3E 9D 86   80 DE 54 C5 00 A5 B9 6D  .W..M>....T....m
0060: 3C A2 7C 79 B4 98 35 1A   19 1D B8 E4 21 E8 0D D6  <..y..5.....!...
0070: 62 40 F6 11 3E 3A 97 ED   D8 FF 6B 69 3F CC 24 9C  b@..>:....ki?.$.
0080: 63 75 51 8F FD DE A9 2C   14 14 BB FB 50 EF FF 1F  cuQ....,....P...
0090: B0 42 2D 17 34 A3 14 43   94 C2 C5 C3 F6 4C 3C CD  .B-.4..C.....L<.
00A0: 35 4E 16 28 28 DF A6 43   B4 CB 8C 30 76 AC F8 5B  5N.((..C...0v..[
00B0: 6A BE 31 00 1D 43 79 5A   27 0E D8 7C 1E 50 53 4E  j.1..CyZ'....PSN
00C0: CA 26 68 26 41 9D C9 C5   BF 55 70 45 F7 57 B5 15  .&h&A....UpE.W..
00D0: B8 31 6F 79 DA 3D B6 7F   39 48 AF 95 44 E8 16 32  .1oy.=..9H..D..2
00E0: 02 48 B0 E5 AB C4 F1 11   A3 61 21 0E C1 D4 9C 70  .H.......a!....p
00F0: C6 75 B7 BD 6A 2B 46 61   5E 94 C8 38 69 03 5A C0  .u..j+Fa^..8i.Z.

])
org.bouncycastle.asn1.cms.CMSObjectIdentifiers as loaded from (file:/Users/kazuakiurayama/.m2/repository/org/bouncycastle/bcutil-jdk18on/1.76/bcutil-jdk18on-1.76.jar [
[
  Version: V3
  Subject: CN=Legion of the Bouncy Castle Inc., OU=Java Software Code Signing, O=Oracle Corporation
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun DSA Public Key
    Parameters:DSA, 
    p:     95475cf5 d93e596c 3fcd1d90 2add02f4 27f5f3c7 210313bb 45fb4d5b b2e5fe1c
    bd678cd4 bbdd84c9 836be1f3 1c077772 5aeb6c2f c38b85f4 8076fa76 bcd8146c
    c89a6fb2 f706dd71 9898c208 3dc8d896 f84062e2 c9c94d13 7b054a8d 8096adb8
    d5195239 8eeca852 a0af12df 83e475aa 65d4ec0c 38a9560d 5661186f f98b9fc9
    eb60eee8 b030376b 236bc73b e3acdbd7 4fd61c1d 2475fa30 77b8f080 467881ff
    7e1ca56f ee066d79 506ade51 edbb5443 a563927d bc4ba520 08674617 5c888592
    5ebc64c6 14790677 3496990c b714ec66 7304e261 faee33b3 cbdf008e 0c3fa906
    50d97d39 09c9275b f4ac86ff cb3d03e6 dfc8ada5 934242dd 6d3bcca2 a406cb0b
    q:     f8183668 ba5fc5bb 06b5981e 6d8b795d 30b8978d 43ca0ec5 72e37e09 939a9773
    g:     42debb9d a5b3d88c c956e087 87ec3f3a 09bba5f4 8b889a74 aaf53174 aa0fbe7e
    3c5b8fcd 7a53bef5 63b0e985 60328960 a9517f40 14d3325f c7962bf1 e049370d
    76d1314a 76137e79 2f3f0db8 59d095e4 a5b93202 4f079ecf 2ef09c79 7452b077
    0e135078 2ed57ddf 794979dc ef23cb96 f1830619 65c4ebc9 3c9c71c5 6b925955
    a75f94cc cf1449ac 43d586d0 beee4325 1b0b2287 349d68de 0d144403 f13e802f
    4146d882 e057af19 b6f6275c 6676c8fa 0e3ca271 3a3257fd 1b27d063 9f695e34
    7d8d1cf9 ac819a26 ca9b04cb 0eb9b7b0 35988d15 bbac6521 2a55239c fc7e58fa
    e38d7250 ab9991ff bc971340 25fe8ce0 4c4399ad 96569be9 1a546f49 78693c7a

  y:
    555e7dfb 4b8947c4 133081ff 67039468 8682c319 3e6e7796 be868ec7 5cb77595
    7eb9ef96 b3cbeef7 d29fd4a0 aaaf2bba f86853c8 58b3f5aa 597a92e7 fdc84a03
    84b383ec 9d9f93b9 64086cdd 8ebaf443 61871963 3473baa4 098bdbf7 b76cb214
    93033f39 41f3b535 00fa30b0 62981f02 5786b467 02cf5700 72bee17f 040d2386
    27000df0 f5970030 3d199c40 fe8fd4f9 38ab2e81 c3c4f288 ebc5f7b9 c3e35713
    c07d6c4b 66357c93 0dd3586a 8dd52aea 18212ee9 1abc6bc3 cb4d918d 42a39c8b
    a2392a3d 08c82da2 752d0c41 00e1d1b1 3c8b7a78 3d50eee2 25949b8b d892e06a
    fb0ecd72 0e206706 62872b0b e87d0df1 5d94d415 c2acda2d f713d491 bbec6c25

  Validity: [From: Tue Jan 25 09:58:59 JST 2022,
               To: Mon Jan 25 09:58:59 JST 2027]
  Issuer: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  SerialNumber: [    08874f23 f4bbf63b d806a7ae b0a12cf4 672bba2a]

Certificate Extensions: 4
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

[2]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]

[3]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
]

[4]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 2E D1 58 A7 86 CE 6F DF   52 78 66 1A FE 9D 47 C8  ..X...o.Rxf...G.
0010: 54 83 4A 10                                        T.J.
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 28 92 06 11 63 AC B9 78   AC D3 44 57 4C 91 76 1C  (...c..x..DWL.v.
0010: 7D 33 CE 49 5F 50 98 9B   6D 0E 46 26 1C 52 9A 76  .3.I_P..m.F&.R.v
0020: DC 6B 9B F4 23 4E AA 8B   82 04 7F B8 9F D4 DA E9  .k..#N..........
0030: F4 49 9C 40 F3 1E 52 29   28 03 0D BF AB D0 06 8B  .I.@..R)(.......
0040: 1C 3D B5 DB 21 D4 31 A9   40 75 CD 92 9D 9D 52 EE  .=..!.1.@u....R.
0050: 46 76 23 61 7B 58 8A 57   8C E6 2F FA 15 FF 2B 2F  Fv#a.X.W../...+/
0060: 43 58 1A 3C 07 88 CB 51   1C 8E 1F 25 25 93 4A 38  CX.<...Q...%%.J8
0070: 63 3C 7B F2 C8 D6 97 1C   23 BB 79 13 61 40 23 EC  c<......#.y.a@#.
0080: BD 82 57 C7 B3 96 E3 C8   27 61 0D DD 20 71 84 A8  ..W.....'a.. q..
0090: DD C9 D2 F3 D2 3B 77 64   33 D3 7B 64 3A 17 A5 02  .....;wd3..d:...
00A0: 71 82 52 46 ED DA DE D2   CC ED 93 1F A5 FA 3D 69  q.RF..........=i
00B0: 0E 76 CB B1 E9 B0 76 AC   8B ED 23 A7 04 C8 BE E7  .v....v...#.....
00C0: 7E C5 51 FB F7 8C 6A D8   F5 35 17 1E FE 0D 4A AA  ..Q...j..5....J.
00D0: 08 49 67 6E 99 6E 26 E6   0F EE 5F BC 16 EB 21 36  .Ign.n&..._...!6
00E0: 70 72 9D 3C 62 74 D9 E6   DC 74 A4 A4 BD 1D 14 B1  pr.<bt...t......
00F0: DC 91 CF 37 EB 85 A9 D3   DE F3 F4 E9 CD 03 4C EE  ...7..........L.

] [
[
  Version: V3
  Subject: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 17055452969822851135992683666979143033468417516051484609876299349676029392164762036831549416422250468242904965674236843772803293403274674367639000027597291165980354342488221481381151536971801625301661816742720339832977615327173058869536881152822978061111237825033757212550660110223240010192057280048506749054109628485658743646473290297361365307075301733147631825944967519762063418196630025286099013201124619373211156022657615904486255757509163698183415752543095397597179195207723060703818084876590178940763595648511724817319040693751004044340989968966872349969442926398888123828596921098899758812235847574184576447233
  public exponent: 65537
  Validity: [From: Thu Jul 07 08:48:44 JST 2016,
               To: Tue Dec 31 09:00:00 JST 2030]
  Issuer: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Oracle Corporation
  SerialNumber: [    3c9eb1fc 89f733d3]

Certificate Extensions: 4
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

[2]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

[3]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_CertSign
  Crl_Sign
]

[4]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 59 D5 01 84 D3 02 3B 8D   41 97 46 97 E7 A5 51 07  Y.....;.A.F...Q.
0010: BC 6C 20 2B                                        .l +
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 3F 13 7F D7 C2 40 E8 1E   CE 79 86 10 6B 92 B7 FB  ?....@...y..k...
0010: 6B D5 C0 56 0C 11 3A 84   CC 28 97 BE C8 96 A0 6C  k..V..:..(.....l
0020: 7A 7B B2 D2 62 23 25 A4   24 30 0E 86 32 CF 69 EE  z...b#%.$0..2.i.
0030: 50 1D DB 6F 51 00 D6 8D   14 89 AC AF FF 3B 93 18  P..oQ........;..
0040: B8 E3 A1 AD 70 B5 3C 79   1B EE 22 83 A5 7E 6A 19  ....p.<y.."...j.
0050: 7F 57 A6 C6 4D 3E 9D 86   80 DE 54 C5 00 A5 B9 6D  .W..M>....T....m
0060: 3C A2 7C 79 B4 98 35 1A   19 1D B8 E4 21 E8 0D D6  <..y..5.....!...
0070: 62 40 F6 11 3E 3A 97 ED   D8 FF 6B 69 3F CC 24 9C  b@..>:....ki?.$.
0080: 63 75 51 8F FD DE A9 2C   14 14 BB FB 50 EF FF 1F  cuQ....,....P...
0090: B0 42 2D 17 34 A3 14 43   94 C2 C5 C3 F6 4C 3C CD  .B-.4..C.....L<.
00A0: 35 4E 16 28 28 DF A6 43   B4 CB 8C 30 76 AC F8 5B  5N.((..C...0v..[
00B0: 6A BE 31 00 1D 43 79 5A   27 0E D8 7C 1E 50 53 4E  j.1..CyZ'....PSN
00C0: CA 26 68 26 41 9D C9 C5   BF 55 70 45 F7 57 B5 15  .&h&A....UpE.W..
00D0: B8 31 6F 79 DA 3D B6 7F   39 48 AF 95 44 E8 16 32  .1oy.=..9H..D..2
00E0: 02 48 B0 E5 AB C4 F1 11   A3 61 21 0E C1 D4 9C 70  .H.......a!....p
00F0: C6 75 B7 BD 6A 2B 46 61   5E 94 C8 38 69 03 5A C0  .u..j+Fa^..8i.Z.

])
2023-11-06 21:40:17 [LittleProxy-0-ProxyToServerWorker-3] WARN  n.l.b.f.ServerResponseCaptureFilter.decompressContents(137) - Cannot decode unsupported content encoding type br
2023-11-06 21:40:17 [LittleProxy-0-ProxyToServerWorker-3] WARN  n.l.bmp.filters.HarCaptureFilter.captureResponseContent(457) - Unable to decompress content with encoding: br. Contents will be encoded as base64 binary data.
2023-11-06 21:40:17 [LittleProxy-0-ProxyToServerWorker-4] WARN  n.l.b.f.ServerResponseCaptureFilter.decompressContents(137) - Cannot decode unsupported content encoding type br
2023-11-06 21:40:17 [LittleProxy-0-ProxyToServerWorker-4] WARN  n.l.bmp.filters.HarCaptureFilter.captureResponseContent(457) - Unable to decompress content with encoding: br. Contents will be encoded as base64 binary data.
2023-11-06 21:40:20 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStop(434) - Shutting down proxy server gracefully
2023-11-06 21:40:20 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.closeAllChannels(469) - Closing all channels (graceful)
2023-11-06 21:40:20 [Test worker] INFO  o.littleshoot.proxy.impl.ServerGroup.shutdown(212) - Shutting down server group event loops (graceful)
2023-11-06 21:40:22 [Test worker] INFO  o.l.p.impl.DefaultHttpProxyServer.doStop(450) - Done shutting down proxy server
> Task :selenium-webdriver-junit4:test
io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test > testHarCreator PASSED
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.4/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 37s
5 actionable tasks: 2 executed, 3 up-to-date
21:40:23: Execution finished ':selenium-webdriver-junit4:test --tests "io.github.bonigarcia.webdriver.junit4.ch09.performance.HarCreatorJUnit4Test"'.
kazurayam commented 8 months ago

On my MacBook Air, M1 Chip + macOS 12.7, I encountered "java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128" error.

But on my MacBook Air, x86-64 + macOS12.7 I did not see "java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128" error. Instead I encountered that WebDriverManager failed to launch Chrome browser.

Very strange.

kazurayam commented 8 months ago

I have got a doubt about the future of the lightbody/browsermob-proxy project.

I can make a Pull Request to them, but I am negative that they would process it immediately. Perhaps no one is contributing to this project.

See #26

kazurayam commented 8 months ago

I have managed to update the browsermob-proxy's jar on my Mac. The jar on my Mac is versioned as2.1.6-SNAPSHOT, which depends on the org.bouncsycastle of "-jdk18on". This version does not cause java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 at all.


I have submitted a Pull Request to the browsermob-proxy project, as

Are they going to merge my PR? I don't know. I am negative. The browsermob-proxy project is not actively maintained now. There are a lot of outstanding PRs.


I could install the updated browsermob-proxy v2.6.1-SNAPSHOT into the maven local repository at the path of ~/.m2.

So I tried restoring the "selenium-webdriver-java" project. I changed the source code so that it depends on the browsermob-proxy-2.1.6-SNAPSHOT.

For example theselenium-webdriver-junit4/build.gradle file has the following lines

    //browsermobVersion = "2.1.5"
    browsermobVersion = "2.1.6-SNAPSHOT"

And the selenium-webdriver-junit4/pom.xml file has the following lines

        <browsermob.version>2.1.6-SNAPSHOT</browsermob.version>

I tested the updated project:

:~/github/selenium-webdriver-java (kazurayam25 *+)
$ gradle -q test --tests="*ch09.performance.HarCreator*"

This worked fine. I saw no java.lang.NoSuchFieldError: id_RSASSA_PSS_SHAKE128 error occuring.

kazurayam commented 8 months ago

I started learning the mitmproxy.

I have made a JUnit5 test with Selenium4 + WebDriverManager + mitmdump command, which saves a HAR file where network traffics are dumped. See the code:

https://github.com/kazurayam/mitmproxy-lesson/blob/develop/app/src/test/java/io/github/bonigarcia/webdriver/juipter/ch09/performance/CapturingNetworkTrafficChromeJupiterTest.java

I feel that the mitmproxy project is actively maintained; so that is much more reliable than BrowserMob Proxy

kazurayam commented 8 months ago

I have created another project:

mitmproxy-lesson

In there I could successfully develop a JUnit5 unit test, an alternative implementation of ch02/performance/HarCreator*Test. It uses the mitmdump command as HTTPS proxy process.

I believe the mitmproxy and mitmdump commands are worth learning and applying to my development works.