Chrome and chromedriver can get out of sync in master pipeline
Summary
When Google Chrome updates, chromedriver sources may not be immediately available. If we have a job that installs these resources on demand, it may pick up two different versions of the software packages leading to failed jobs. This occurred in master in:
- https://gitlab.com/gitlab-org/gitlab-qa-mirror/pipelines/147666148
- https://gitlab.com/gitlab-org/gitlab-qa-mirror/pipelines/147691071
Stack trace
Status: Downloaded newer image for registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee-qa:f2699a172cd8da7bca2418f1ba0b6fd39b6ae65a
D, [2020-05-19T18:43:12.973313 #24] DEBUG -- : with retry_on_exception: max_attempts: 3; reload_page: ; sleep_interval: 0.5
D, [2020-05-19T18:43:12.973501 #24] DEBUG -- : Attempt number 1
D, [2020-05-19T18:43:14.161922 #24] DEBUG -- : Attempt number 2
D, [2020-05-19T18:43:15.095932 #24] DEBUG -- : Attempt number 3
WARN: Screenshot could not be saved. `page.current_path` raised exception: #<Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 81>.
bundler: failed to load command: bin/qa (bin/qa)
Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 81
#0 0x5583a168a189 <unknown>
/usr/local/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok'
/usr/local/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
/usr/local/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
/usr/local/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
/usr/local/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/default.rb:114:in `request'
Screenshot / HTML page
No screenshot available.
Possible fixes
- Version control Google Chrome and ChromeDriver
- Check for matching major versions on installation, then fall back to version control if mismatched