testcontainers-java: [Bug]: Timeout exception when getting webdriver of BrowserWebDriverContainer

Module

Selenium

Testcontainers version

1.17.3

Using the latest Testcontainers version?

Yes

Host OS

Linux

Host Arch

x86

Docker version

Client:
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.17.3
 Git commit:        20.10.12-0ubuntu4
 Built:             Mon Mar  7 17:10:06 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.3
  Git commit:       20.10.12-0ubuntu4
  Built:            Mon Mar  7 15:57:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.9-0ubuntu3
  GitCommit:        
 runc:
  Version:          1.1.0-0ubuntu1
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:

What happened?

In 8 of 10 cases I get a TimeoutException when calling org.testcontainers.containers.BrowserWebDriverContainer.getWebDriver() but only with Selenium 4. This does not happen with Selenium 3. There is a timeout and retry implemented when getting the webdriver. I think everything is just slower with Seleinum 4, we just need more time. If these timeouts would be configurable I could test it easily.

Note: In Selenium there is tracing when you create a new RemoteWebdriver. Maybe this just takes more time?

This is my setup:

  @Container
  BrowserWebDriverContainer<?> firefox = new BrowserWebDriverContainer<>()
          .withNetwork(network)
          .withCapabilities(new FirefoxOptions());

  @Container
  AxonIvyEngine ivy = new AxonIvyEngine()
          .withIvyYaml(new File("src/test/resources/azure/ivy.yaml").getAbsolutePath())
          .withNetwork(network)
          .withNetworkAliases("ivy");

  @BeforeEach
  void beforeEach() {
    RemoteWebDriver webDriver = firefox.getWebDriver(); // it is failing here.
    WebDriverRunner.setWebDriver(webDriver);
    Configuration.baseUrl = "https://ivy:8443";
  }

Relevant log output

[ERROR] com.axonivy.test.docker.integration.TestAzureOAuth2Login2.login  Time elapsed: 70.413 s  <<< ERROR!
org.rnorth.ducttape.TimeoutException: Timeout waiting for result with exception
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:54)
	at org.testcontainers.containers.BrowserWebDriverContainer.getWebDriver(BrowserWebDriverContainer.java:327)
	at com.axonivy.test.docker.integration.TestAzureOAuth2Login2.beforeEach(TestAzureOAuth2Login2.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:55)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:223)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:175)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:139)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:456)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:169)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:595)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:581)
Caused by: org.rnorth.ducttape.TimeoutException: java.util.concurrent.TimeoutException
	at org.rnorth.ducttape.timeouts.Timeouts.callFuture(Timeouts.java:70)
	at org.rnorth.ducttape.timeouts.Timeouts.getWithTimeout(Timeouts.java:43)
	at org.testcontainers.containers.BrowserWebDriverContainer.lambda$getWebDriver$1(BrowserWebDriverContainer.java:331)
	at org.rnorth.ducttape.unreliables.Unreliables.lambda$retryUntilSuccess$0(Unreliables.java:43)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.concurrent.TimeoutException
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
	at org.rnorth.ducttape.timeouts.Timeouts.callFuture(Timeouts.java:65)
	... 7 more

Additional Information

No response

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 5
  • Comments: 15 (12 by maintainers)

Most upvoted comments

Ok I’ve submitted a fix for this issue.

In the meantime, the workaround would be to use a library like awaitily (or roll your own timeout mechanism) in order to instantiate the RemoteWebDriver yourself:

  private static FirefoxOptions firefoxOptions = new FirefoxOptions();

  @Container
  BrowserWebDriverContainer<?> firefox = new BrowserWebDriverContainer<>()
          .withNetwork(network)
          .withCapabilities(firefoxOptions);

  @BeforeEach
  void beforeEach() {
    RemoteWebDriver remoteWebDriver = await().atMost(20, TimeUnit.SECONDS).until(() -> {
      return new RemoteWebDriver(firefox.getSeleniumAddress(), firefoxOptions);
    }, Objects::nonNull);
    ...
  }

Which will let your specify your own timeout.

The same bug also persists in Selenium 4.5.0.

I created an issue at https://github.com/SeleniumHQ/selenium/issues/11082 so that the underlying problem gets fixed.

Thank you @alexsuter for the issue and @AB-xdev for the additional info. I’ve been able to reproduce this on my end (out of 10, I got 6 TimeoutExceptions). Let me look into this.

A little improvement: In Selenium 4.6.0 implicitlyWait(30, TimeUnit.SECONDS) is deprecated. It is better to use implicitlyWait(Duration.ofSeconds(30))

thank you! I miss IntelliJ strikethrough instead of highlighting 😁

I am updating code via this PR

Thanks, @eddumelendez, for your hint.

In my case, the root cause was that I also have to add selenium-api to my dependency. Sorry for the noise.

A little improvement: In Selenium 4.6.0 implicitlyWait(30, TimeUnit.SECONDS) is deprecated. It is better to use implicitlyWait(Duration.ofSeconds(30))

@AB-xdev Thanks for sharing the workaround and your debugging findings with us, might be helpful for others as well.

As I read the upstream issues, this is a regression/change in the web driver regarding timing behavior, correct? Let’s wait for how this proceeds in the upstream, but it’s very good we have some workarounds handy by now.

I think I found the problem or at least a workaround: https://github.com/SeleniumHQ/selenium/issues/10984#issuecomment-1268011440

Using .withEnv("SE_OPTS", "--session-retry-interval 1") (in Selenium 4.4+) fixed the timeouts for me

Yes. Seems to work! Thank you!

Same problem here. It works mostly fine for Selenium 4.2.2 but with selenium 4.4.0 >60% of our tests suffer from above problem.

It looks like sometimes the part of Selenium inside Docker needs more than 10s to respond to the initial request:

Log
11:06:28 DEBUG [main] [e.testcases.TestPageShown] Getting WebDriver... 
11:06:28 INFO  [ducttape-1] [metry.OpenTelemetryTracer] Using OpenTelemetry for tracing 
11:06:28 DEBUG [ducttape-1] [ing.InternalLoggerFactory] Using SLF4J as the default logging framework 
11:06:28 DEBUG [ducttape-1] [util.ResourceLeakDetector] -Dio.netty.leakDetection.level: simple 
11:06:28 DEBUG [ducttape-1] [util.ResourceLeakDetector] -Dio.netty.leakDetection.targetRecords: 4 
11:06:28 DEBUG [ducttape-1] [sourceLeakDetectorFactory] Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@b353cf9 
11:06:28 DEBUG [ducttape-1] [ternal.PlatformDependent0] -Dio.netty.noUnsafe: false 
11:06:28 DEBUG [ducttape-1] [ternal.PlatformDependent0] Java version: 17 
11:06:28 DEBUG [ducttape-1] [ternal.PlatformDependent0] sun.misc.Unsafe.theUnsafe: available 
...
11:06:28 DEBUG [ducttape-1] [.netty.buffer.ByteBufUtil] -Dio.netty.maxThreadLocalCharBufferSize: 16384 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [.channel.DefaultChannelId] -Dio.netty.processId: 42544 (auto-detected) 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [io.netty.util.NetUtil    ] -Djava.net.preferIPv4Stack: false 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [io.netty.util.NetUtil    ] -Djava.net.preferIPv6Addresses: false 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [il.NetUtilInitializations] Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [io.netty.util.NetUtil    ] Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 
11:06:29 DEBUG [Forwarding newSession on session null to remote] [.channel.DefaultChannelId] -Dio.netty.machineId: 00:d8:61:ff:fe:d4:70:fb (auto-detected) 
11:06:29 DEBUG [AsyncHttpClient-1-2] [ty.buffer.AbstractByteBuf] -Dio.netty.buffer.checkAccessible: true 
11:06:29 DEBUG [AsyncHttpClient-1-2] [ty.buffer.AbstractByteBuf] -Dio.netty.buffer.checkBounds: true 
11:06:29 DEBUG [AsyncHttpClient-1-2] [sourceLeakDetectorFactory] Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@462ed7c7 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd] REGISTERED 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd] CONNECT: localhost/127.0.0.1:55480 
11:06:29 DEBUG [AsyncHttpClient-1-2] [nnel.NettyConnectListener] Using new Channel '[id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480]' for 'POST' to '/wd/hub/session' 
11:06:29 DEBUG [AsyncHttpClient-1-2] [io.netty.util.Recycler   ] -Dio.netty.recycler.maxCapacityPerThread: 4096 
11:06:29 DEBUG [AsyncHttpClient-1-2] [io.netty.util.Recycler   ] -Dio.netty.recycler.ratio: 8 
11:06:29 DEBUG [AsyncHttpClient-1-2] [io.netty.util.Recycler   ] -Dio.netty.recycler.chunkSize: 32 
11:06:29 DEBUG [AsyncHttpClient-1-2] [io.netty.util.Recycler   ] -Dio.netty.recycler.blocking: false 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] WRITE: 250B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 50 4f 53 54 20 2f 77 64 2f 68 75 62 2f 73 65 73 |POST /wd/hub/ses|
|00000010| 73 69 6f 6e 20 48 54 54 50 2f 31 2e 31 0d 0a 55 |sion HTTP/1.1..U|
|00000020| 73 65 72 2d 41 67 65 6e 74 3a 20 73 65 6c 65 6e |ser-Agent: selen|
|00000030| 69 75 6d 2f 34 2e 34 2e 30 20 28 6a 61 76 61 20 |ium/4.4.0 (java |
|00000040| 77 69 6e 64 6f 77 73 29 0d 0a 74 72 61 63 65 70 |windows)..tracep|
|00000050| 61 72 65 6e 74 3a 20 30 30 2d 36 32 37 64 31 39 |arent: 00-627d19|
|00000060| 63 64 37 31 36 37 34 36 63 33 33 30 62 34 65 39 |cd716746c330b4e9|
|00000070| 63 32 35 31 64 37 32 61 37 33 2d 30 65 35 65 64 |c251d72a73-0e5ed|
|00000080| 30 36 37 66 35 66 36 39 65 62 61 2d 30 31 0d 0a |067f5f69eba-01..|
|00000090| 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 |Content-Length: |
|000000a0| 33 38 31 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 |381..Content-Typ|
|000000b0| 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a |e: application/j|
|000000c0| 73 6f 6e 3b 20 63 68 61 72 73 65 74 3d 75 74 66 |son; charset=utf|
|000000d0| 2d 38 0d 0a 68 6f 73 74 3a 20 6c 6f 63 61 6c 68 |-8..host: localh|
|000000e0| 6f 73 74 3a 35 35 34 38 30 0d 0a 61 63 63 65 70 |ost:55480..accep|
|000000f0| 74 3a 20 2a 2f 2a 0d 0a 0d 0a                   |t: */*....      |
+--------+-------------------------------------------------+----------------+ 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] WRITE: 381B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 7b 0a 20 20 22 64 65 73 69 72 65 64 43 61 70 61 |{.  "desiredCapa|
|00000010| 62 69 6c 69 74 69 65 73 22 3a 20 7b 0a 20 20 20 |bilities": {.   |
|00000020| 20 22 62 72 6f 77 73 65 72 4e 61 6d 65 22 3a 20 | "browserName": |
|00000030| 22 66 69 72 65 66 6f 78 22 2c 0a 20 20 20 20 22 |"firefox",.    "|
|00000040| 6d 6f 7a 3a 64 65 62 75 67 67 65 72 41 64 64 72 |moz:debuggerAddr|
|00000050| 65 73 73 22 3a 20 74 72 75 65 2c 0a 20 20 20 20 |ess": true,.    |
|00000060| 22 6d 6f 7a 3a 66 69 72 65 66 6f 78 4f 70 74 69 |"moz:firefoxOpti|
|00000070| 6f 6e 73 22 3a 20 7b 0a 20 20 20 20 7d 2c 0a 20 |ons": {.    },. |
|00000080| 20 20 20 22 61 63 63 65 70 74 49 6e 73 65 63 75 |   "acceptInsecu|
|00000090| 72 65 43 65 72 74 73 22 3a 20 74 72 75 65 0a 20 |reCerts": true. |
|000000a0| 20 7d 2c 0a 20 20 22 63 61 70 61 62 69 6c 69 74 | },.  "capabilit|
|000000b0| 69 65 73 22 3a 20 7b 0a 20 20 20 20 22 66 69 72 |ies": {.    "fir|
|000000c0| 73 74 4d 61 74 63 68 22 3a 20 5b 0a 20 20 20 20 |stMatch": [.    |
|000000d0| 20 20 7b 0a 20 20 20 20 20 20 20 20 22 61 63 63 |  {.        "acc|
|000000e0| 65 70 74 49 6e 73 65 63 75 72 65 43 65 72 74 73 |eptInsecureCerts|
|000000f0| 22 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 20 |": true,.       |
|00000100| 20 22 62 72 6f 77 73 65 72 4e 61 6d 65 22 3a 20 | "browserName": |
|00000110| 22 66 69 72 65 66 6f 78 22 2c 0a 20 20 20 20 20 |"firefox",.     |
|00000120| 20 20 20 22 6d 6f 7a 3a 64 65 62 75 67 67 65 72 |   "moz:debugger|
|00000130| 41 64 64 72 65 73 73 22 3a 20 74 72 75 65 2c 0a |Address": true,.|
|00000140| 20 20 20 20 20 20 20 20 22 6d 6f 7a 3a 66 69 72 |        "moz:fir|
|00000150| 65 66 6f 78 4f 70 74 69 6f 6e 73 22 3a 20 7b 0a |efoxOptions": {.|
|00000160| 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 |        }.      |
|00000170| 7d 0a 20 20 20 20 5d 0a 20 20 7d 0a 7d          |}.    ].  }.}   |
+--------+-------------------------------------------------+----------------+ 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] FLUSH 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] WRITE: 0B 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] FLUSH 
11:06:29 TRACE [AsyncHttpClient-1-2] [er.logging.LoggingHandler] [id: 0xafb917bd, L:/127.0.0.1:55484 - R:localhost/127.0.0.1:55480] ACTIVE 
11:06:38 TRACE [ducttape-0] [e.unreliables.Unreliables] Retrying lambda call on attempt 0 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf] REGISTERED 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf] CONNECT: localhost/127.0.0.1:55480 
11:06:38 DEBUG [AsyncHttpClient-1-3] [nnel.NettyConnectListener] Using new Channel '[id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480]' for 'POST' to '/wd/hub/session' 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] WRITE: 250B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 50 4f 53 54 20 2f 77 64 2f 68 75 62 2f 73 65 73 |POST /wd/hub/ses|
|00000010| 73 69 6f 6e 20 48 54 54 50 2f 31 2e 31 0d 0a 55 |sion HTTP/1.1..U|
|00000020| 73 65 72 2d 41 67 65 6e 74 3a 20 73 65 6c 65 6e |ser-Agent: selen|
|00000030| 69 75 6d 2f 34 2e 34 2e 30 20 28 6a 61 76 61 20 |ium/4.4.0 (java |
|00000040| 77 69 6e 64 6f 77 73 29 0d 0a 74 72 61 63 65 70 |windows)..tracep|
|00000050| 61 72 65 6e 74 3a 20 30 30 2d 38 35 65 32 61 33 |arent: 00-85e2a3|
|00000060| 39 61 63 35 37 32 35 65 37 38 61 64 33 35 32 61 |9ac5725e78ad352a|
|00000070| 33 34 31 34 38 31 37 61 64 66 2d 61 31 39 38 39 |3414817adf-a1989|
|00000080| 34 61 62 62 35 62 34 38 36 64 61 2d 30 31 0d 0a |4abb5b486da-01..|
|00000090| 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 |Content-Length: |
|000000a0| 33 38 31 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 |381..Content-Typ|
|000000b0| 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a |e: application/j|
|000000c0| 73 6f 6e 3b 20 63 68 61 72 73 65 74 3d 75 74 66 |son; charset=utf|
|000000d0| 2d 38 0d 0a 68 6f 73 74 3a 20 6c 6f 63 61 6c 68 |-8..host: localh|
|000000e0| 6f 73 74 3a 35 35 34 38 30 0d 0a 61 63 63 65 70 |ost:55480..accep|
|000000f0| 74 3a 20 2a 2f 2a 0d 0a 0d 0a                   |t: */*....      |
+--------+-------------------------------------------------+----------------+ 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] WRITE: 381B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 7b 0a 20 20 22 64 65 73 69 72 65 64 43 61 70 61 |{.  "desiredCapa|
|00000010| 62 69 6c 69 74 69 65 73 22 3a 20 7b 0a 20 20 20 |bilities": {.   |
|00000020| 20 22 62 72 6f 77 73 65 72 4e 61 6d 65 22 3a 20 | "browserName": |
|00000030| 22 66 69 72 65 66 6f 78 22 2c 0a 20 20 20 20 22 |"firefox",.    "|
|00000040| 6d 6f 7a 3a 64 65 62 75 67 67 65 72 41 64 64 72 |moz:debuggerAddr|
|00000050| 65 73 73 22 3a 20 74 72 75 65 2c 0a 20 20 20 20 |ess": true,.    |
|00000060| 22 6d 6f 7a 3a 66 69 72 65 66 6f 78 4f 70 74 69 |"moz:firefoxOpti|
|00000070| 6f 6e 73 22 3a 20 7b 0a 20 20 20 20 7d 2c 0a 20 |ons": {.    },. |
|00000080| 20 20 20 22 61 63 63 65 70 74 49 6e 73 65 63 75 |   "acceptInsecu|
|00000090| 72 65 43 65 72 74 73 22 3a 20 74 72 75 65 0a 20 |reCerts": true. |
|000000a0| 20 7d 2c 0a 20 20 22 63 61 70 61 62 69 6c 69 74 | },.  "capabilit|
|000000b0| 69 65 73 22 3a 20 7b 0a 20 20 20 20 22 66 69 72 |ies": {.    "fir|
|000000c0| 73 74 4d 61 74 63 68 22 3a 20 5b 0a 20 20 20 20 |stMatch": [.    |
|000000d0| 20 20 7b 0a 20 20 20 20 20 20 20 20 22 61 63 63 |  {.        "acc|
|000000e0| 65 70 74 49 6e 73 65 63 75 72 65 43 65 72 74 73 |eptInsecureCerts|
|000000f0| 22 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 20 |": true,.       |
|00000100| 20 22 62 72 6f 77 73 65 72 4e 61 6d 65 22 3a 20 | "browserName": |
|00000110| 22 66 69 72 65 66 6f 78 22 2c 0a 20 20 20 20 20 |"firefox",.     |
|00000120| 20 20 20 22 6d 6f 7a 3a 64 65 62 75 67 67 65 72 |   "moz:debugger|
|00000130| 41 64 64 72 65 73 73 22 3a 20 74 72 75 65 2c 0a |Address": true,.|
|00000140| 20 20 20 20 20 20 20 20 22 6d 6f 7a 3a 66 69 72 |        "moz:fir|
|00000150| 65 66 6f 78 4f 70 74 69 6f 6e 73 22 3a 20 7b 0a |efoxOptions": {.|
|00000160| 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 |        }.      |
|00000170| 7d 0a 20 20 20 20 5d 0a 20 20 7d 0a 7d          |}.    ].  }.}   |
+--------+-------------------------------------------------+----------------+ 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] FLUSH 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] WRITE: 0B 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] FLUSH 
11:06:38 TRACE [AsyncHttpClient-1-3] [er.logging.LoggingHandler] [id: 0x228976cf, L:/127.0.0.1:55486 - R:localhost/127.0.0.1:55480] ACTIVE 
11:06:41 DEBUG [docker-java-stream-1229649897] [ache.hc.client5.http.wire] http-outgoing-4 << "e5[\r][\n]" 
11:06:41 DEBUG [docker-java-stream-1229649897] [ache.hc.client5.http.wire] http-outgoing-4 << "[0x1][0x0][0x0][0x0][0x0][0x0][0x0]`11:06:41.894 INFO [LocalDistributor.newSession] - Session request received by the Distributor: [\n]" 
11:06:41 DEBUG [docker-java-stream-1229649897] [ache.hc.client5.http.wire] http-outgoing-4 << "[0x1][0x0][0x0][0x0][0x0][0x0][0x0]u [Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {}}][\n]" 
11:06:41 DEBUG [docker-java-stream-1229649897] [ache.hc.client5.http.wire] http-outgoing-4 << "[\r][\n]" 
11:06:41 INFO  [docker-java-stream-1229649897] [ontainer.browserwebdriver] STDOUT: 11:06:41.894 INFO [LocalDistributor.newSession] - Session request received by the Distributor:  
11:06:41 INFO  [docker-java-stream-1229649897] [ontainer.browserwebdriver] STDOUT:  [Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {}}] 
11:06:41 DEBUG [docker-java-stream-1229649897] [ache.hc.client5.http.wire] http-outgoing-4 << "e5[\r][\n]"