-1

I have a Geb and Spock Maven project using WebDriverManager (using version 5.0.4-SNAPSHOT and selenium 3.141.159). I was successfully able to run tests using browser in docker option from my local Maven but it failed when trying to run inside a maven image:

docker run -t -v "$PWD":/usr/src -w /usr/src -v /mnt/c/m2repo:/m2repo maven:3.8.4-jdk-8 mvn test -B -e -Dmaven.repo.local=/m2repo -Dgeb.env=chrome_docker -Dtest=LoginDummySpec

with logs:

...
17:29:19 [DEBUG] - DockerHubService - Getting browser image list from Docker Hub
17:29:20 [DEBUG] - DockerService - The latest version of Chrome in Docker Hub is 97.0
17:29:20 [INFO ] - DockerService - Pulling Docker image selenoid/vnc:chrome_97.0 (this might take some time, but only the first time)
17:29:21 [ERROR] - ResultCallbackTemplate - Error during callback
java.lang.RuntimeException: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
    at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl.execute(ApacheDockerHttpClientImpl.java:187)
    at com.github.dockerjava.httpclient5.ApacheDockerHttpClient.execute(ApacheDockerHttpClient.java:9)
    at com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:228)
    at com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
    at com.github.dockerjava.transport.DomainSocket.<init>(DomainSocket.java:63)
    at com.github.dockerjava.transport.LinuxDomainSocket.<init>(LinuxDomainSocket.java:41)
    at com.github.dockerjava.transport.DomainSocket.get(DomainSocket.java:140)
    at com.github.dockerjava.transport.UnixSocket.get(UnixSocket.java:27)
    at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl$2.createSocket(ApacheDockerHttpClientImpl.java:145)
17:29:21 [WARN ] - DockerService - Exception pulling image selenoid/vnc:chrome_97.0: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
17:29:21 [INFO ] - DockerService - Starting Docker container selenoid/vnc:chrome_97.0
17:29:22 [ERROR] - WebDriverManager - There was an error creating WebDriver object for Chrome
...

with config:

chrome_docker {
    driver = {
      ChromeOptions options = new ChromeOptions()
      options.addArguments("--test-type", "--disable-gpu", "--disable-features=VizDisplayCompositor",
              "--disable-software-rasterizer", "--disable-gpu-sandbox", "--no-sandbox", "--disable-dev-shm-usage", "--force-device-scale-factor=0.8")

      WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker()
      if (enableVNC) {
        wdm = wdm.enableVnc()
      }
      WebDriver driverInstance = wdm.capabilities(options).create()
      driverInstance.manage().window().maximize()
      driverInstance
    }
  }

any idea or options to use to make it work ? my goal is to create Jenkins pipeline

Simon

1 Answers1

0

I was able to have it work by mounting /var/run/docker.sock:/var/run/docker.sock from Ubuntu:

docker run -t -v /var/run/docker.sock:/var/run/docker.sock -v "$PWD":/usr/src -w /usr/src -v /mnt/c/m2repo:/m2repo maven:3.8.4-jdk-8 mvn test -B -e -Dmaven.repo.local=/m2repo -Dgeb.env=chrome_docker -Dtest=LoginDummySpec
code
  • 5,690
  • 4
  • 17
  • 39