Session not created exception: Chrome version must be >= 62.0.3202.0

docker

#1

Hi,

I’m using circleci/ruby in CircleCI 2.0.

After docker image update about 7 hours ago(maybe 2018-01-18 10:00:00+0900), the error occurs in RSpec system test.

  Selenium::WebDriver::Error::SessionNotCreatedError:
       session not created exception: Chrome version must be >= 62.0.3202.0
         (Driver info: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.4.0-108-generic x86_64)

Do you have any reports similar this or any suggestions?

My environment is:

  • circleci/ruby:2.4.1-node-browsers
  • Rails 5.1.4
  • rspec-rails 3.7.2
  • capybara 2.16.1
  • selenium-webdriver 3.8.0

This might not be suitable bug report in this forum, though.


#2

I’m having the same problem since they updated their docker images yesterday.


#4

We are also experiencing this same issue. Using circleci/ruby:2.3.4-node-browsers.


#5

Same here!


#6

Update: for us we were using chromedriver-helper in test mode which was overriding the chromedriver already configured by CircleCI. We removed the gem. Builds are working now for us.


#7

Thank you, @jpparsons !

Resolved the issue with your advice.

What I Did

  1. Remove the chromedriver-helper gem
  2. Build via CircleCI with Rebuild without cache

We have to install chromedriver manually when running the test which requires chromedriver on local dev environment.

Thank you guys!


Updated

I have to run rebuild without cache all time to pass the build.

and sudo apt update && sudo apt install google-chrome-stable can’t install proper Chrome version.

Using old chromedriver is not good solution for this issue and I’ll wait for the Docker image fixed.


#8

We were also using chromedriver-helper. I think Circle updating their images was a coincidence.

In my circle config, I added chromedriver-update 2.34 before the test run. This version is compatible with the older version of Chrome that’s installed. Installing a newer version of Chrome should also fix it.


#9

You can just use apt-get to update the chromedriver.

-run
    name: Update Chromedriver
    command: |
        sudo apt-get update
        sudo apt-get install google-chrome-stable

#10

I couldn’t get any of the above fixes to work for me. I managed to fix it by downloading and installing the package directly from Google like so:

  - run:
      name: Install Chrome
      command: |
        curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
        sudo dpkg -i google-chrome.deb
        sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome
        rm google-chrome.deb

#11

Thanks dude! This is the only thing that worked for me as well.


#12

I also needed to add a sudo apt install libappindicator3-1 before. So it’s:

- run:
    name: Install Chrome
    command: |
      sudo apt install -y libappindicator3-1
      curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
      sudo dpkg -i google-chrome.deb
      sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome
      rm google-chrome.deb

#13

this worked for me - because of missing libs

- run:
      name: Install Chrome
      command: |
        wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
        sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
        sudo apt-get update
        sudo apt-get -y install google-chrome-stable

#14

This is an issue for me running Protractor end-to-end tests for an Angular CLI application.

I attempted the following steps with unsatisfactory results:

  1. Update Chrome: sudo apt-get update && sudo apt-get -y install google-chrome-stable
    This did not work because the latest stable version of Chrome is 64, but ChromeDriver 2.38 wants Chrome >= 65.0.3325.0.
  2. Add a build step that runs the shell command chromedriver-update 2.34.
    This did not work because the command chromedriver-update does not exist.
  3. Add a build step that runs the shell command webdriver-manager update --versions.chrome 2.35 (from here).
    This did not work because webdriver-manager is not available on the system.

As the previous few posts mention, I could go back to manually patching the local apt lists and installing the latest version of Chrome that way. I am hesitant to do so, however, because simply using the image circleci/node:9-stretch-browsers is much simpler than copying and pasting four lines of code (and having to run apt-get update) to every project’s CircleCI config.yml.


#15

Running image circleci/node:8-browsers.

Today we’re getting:
SessionNotCreatedError: session not created exception: Chrome version must be >= 65.0.3325.0 (Driver info: chromedriver=2.38.551591 (bcc4a2cdef0f6b942b2bb8049068f65340fa2a69),platform=Linux 4.4.0-119-generic x86_64).

This issue crops up nearly every time there is a new release of Google Chrome, and we have been unable to get any of the solutions listed here to work, so each time we’re at the mercy of waiting for the docker image to update its bundled version of Chrome.

I notice that on https://hub.docker.com/r/circleci/node/ it describes the -browsers images as “extends the defacto image and installs Firefox and Chrome/chromedriver and configure them to run in a chrontainzied [sic] environment” - but ChromeDriver does not appear to be installed on the image. Would it be possible to bundle that into the image? Then they can be updated in unison, instead of relying on the client to download a version of ChromeDriver that works for the bundled Chrome version (or trying to force Chrome to update at each run, defeating the purpose of using the -browsers image).


#16

We’re getting it too. However, we’re running image circleci/ruby:2.4.3-node-browsers


#17

I don’t use these images, but I wonder if it comes about because the driver and the browser are out of sync? If so, can someone try pinning the driver to a fixed version?

If the driver is changing because the base images are changing, I wonder if a custom image would help here? One can create a Docker image containing the versions of things that are needed, and then stick with that until one decides that a new one is necessary.


#18

Just use this solution

works perfectly for me


#19

A custom image would most certainly solve the issue, but if users need to build and manage their own image just because the tooling in the -browsers images isn’t updated frequently enough, then it defeats the purpose of Circle offering them


#20

Personally speaking, I see it as the opposite problem: given the number of problems that are reported in this forum, I think they are updated too frequently. I take the view that browser tests should test the general principle of a UI - if folks want to test across a wide range of browsers (or a frequently changing set of browsers) then traditional CI isn’t appropriate. Either folks maintain the images themselves (duplicated work) or they are updated centrally (more breakages on edge cases).

Maybe BrowserStack or similar would be better?

(All IMO, of course :smiley_cat: ).


#21

If you use the chromedriver-helper gem, you can specify a version to use: https://github.com/flavorjones/chromedriver-helper#specifying-a-version

In my case, setting the version to 2.37 fixed the issue. You can see the PR here: https://github.com/18F/identity-idp/pull/2108