0

I am using Selenoid with GitLab and it's working like a charm for Chrome, Edge and Firefox browsers.

However when it comes to Safari, the scripts are not able to connect to the Safari browser, getting errors like session not found and other similar errors.

Below are the different snippets used for Safari with Selenoid:

  1. gitlab-ci.yml
test:
    stage: test
    image: docker:latest
    before_script:
      - apt-get update && apt-get install -y maven
      - apk add --update --no-cache curl && rm -rf /var/cache/apk/*
      - docker pull maven:3.8-openjdk-11
      - ls $CI_PROJECT_DIR
      - >
        docker run --rm
        -v /builds:/builds
        -v /var/run/docker.sock:/var/run/docker.sock
        -v ${HOME}:/root
        -e OVERRIDE_HOME=${HOME}
        aerokube/cm:latest-release
        selenoid start
        --browsers-json /builds/myprojectpath/browsers.json
        --args "-limit 1"
    script:
        - docker ps -a
        - docker images -a
        - curl docker:4444/status
        - curl http://docker:4444/status
        - curl -XPOST http://docker:4444/wd/hub/session -d '{"desiredCapabilities":{"browserName":"safari"}}'
        - docker ps -a
        - >
          docker run --rm --network host -v "$(pwd)":/app -w /app maven:3.8-openjdk-11 mvn ${MAVEN_OPTS} test -Dcucumber.filter.tags=${FEATURE_TAG} -Dbrowser=safari
  1. browsers.json
{
  "safari": {
    "default": "15.0",
    "versions": {
      "15.0": {
        "image": "browsers/safari:15.0",
        "port": "4444",
        "path": "/"
      }
    }
  }
}
  1. Driver Initialisation Java Code
RemoteWebDriver driver;
SafariOptions options = new SafariOptions();
try {
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), options);
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(120));
} catch (MalformedURLException e) {
    throw new RuntimeException(e);
}

Please find below error logs for:

  1. Selenoid
$ docker run --rm -v /builds:/builds -v /var/run/docker.sock:/var/run/docker.sock -v ${HOME}:/root -e OVERRIDE_HOME=${HOME} aerokube/cm:latest-release selenoid start --browsers-json /builds/myprojectpath/browsers.json --args "-limit 1"
Unable to find image 'aerokube/cm:latest-release' locally
latest-release: Pulling from aerokube/cm
Status: Downloaded newer image for aerokube/cm:latest-release
> Using Docker
- Your Docker API version is 1.41
> Downloading Selenoid...
- Fetching tags for image aerokube/selenoid
registry.ping url=https://index.docker.io/v2/
registry.tags url=https://index.docker.io/v2/aerokube/selenoid/tags/list repository=aerokube/selenoid
- Pulling image aerokube/selenoid:1.10.11
> Configuring Selenoid...
> Requested to sync configuration from "/builds/myprojectpath/browsers.json"...
- Pulling image browsers/safari:15.0
> Pulling video recorder image...
- Pulling image selenoid/video-recorder:latest-release
> Configuration saved to /root/.aerokube/selenoid/browsers.json
> Starting Selenoid...
> Successfully started Selenoid
$ docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS                  PORTS                    NAMES
abcd4a4bc123   aerokube/selenoid:1.10.11   "/usr/bin/selenoid -…"   2 seconds ago   Up Less than a second   0.0.0.0:4444->4444/tcp   selenoid
$ docker images -a
REPOSITORY                TAG              IMAGE ID       CREATED         SIZE
aerokube/selenoid         1.10.11          ab1a2bcd3456   4 days ago      17.5MB
aerokube/cm               latest-release   123a01b23456   6 weeks ago     17.9MB
maven                     3.8-openjdk-11   1a2bc3defg45   8 months ago    664MB
browsers/safari           15.0             a1b234567890   17 months ago   932MB
selenoid/video-recorder   latest-release   654z321456y7   2 years ago     37.6MB
$ curl docker:4444/status
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
{"total":1,"used":0,"queued":0,"pending":0,"browsers":{"safari":{"15.0":{}}}}
100    78  100    78    0     0  27358      0 --:--:-- --:--:-- --:--:-- 39000
$ curl http://docker:4444/status
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{"total":1,"used":0,"queued":0,"pending":0,"browsers":{"safari":{"15.0":{}}}}

100    78  100    78    0     0  28581      0 --:--:-- --:--:-- --:--:-- 39000
$ curl -XPOST http://docker:4444/wd/hub/session -d '{"desiredCapabilities":{"browserName":"safari"}}'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    48    0     0  100    48      0     39  0:00:01  0:00:01 --:--:--    39
100   115  100    67  100    48     39     28  0:00:01  0:00:01 --:--:--    68
{"value":{"error":"invalid argument","message":"","stacktrace":""}}
  1. Driver initialization attempt via code
org.openqa.selenium.NoSuchSessionException: session deleted because of page crash or hang.
Build info: version: '4.8.0', revision: '267030adea'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.311-233.529.amzn2.x86_64', java.version: '11.0.16'
Driver info: org.openqa.selenium.remote.RemoteWebDriver

I have tried with multiple combinations but it haven't worked:

  1. Adding tmpfs key-value in browsers.json
  2. Using acceptInsecureCerts with value true for SafariOptions
  3. Removing path key-value in browsers.json

It would be a great help if someone can help me with this issue.

6
  • You did not share any details about error message you encounter and Selenoid logs. Commented Apr 15, 2023 at 10:11
  • @vania-pooh My sincerest apologies for not sharing those details before, I have updated the question now; please do let me know if any further information is needed from my side. Commented Apr 17, 2023 at 14:40
  • Do you have Mac M1 \ M2 ? Commented Apr 18, 2023 at 14:08
  • @vania-pooh No I am using Giltab Runner, and here the amd64 architecture is being shown due to type of docker-in-docker image I am using here. Should I give it a try with any other architecture based dind image (if it exists)? Commented Apr 19, 2023 at 6:05
  • Try to increase shmSize value in browsers.json. aerokube.com/selenoid/latest/#_other_optional_fields Commented Apr 19, 2023 at 9:27

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.