1. 検証環境
- MacBook Pro (13-inch, 2020)
- macOS Ventura 13.4.1
- Rails 6.1.4.7
- Ruby 3.1.0
- rbenv 1.2.0
- capybara 3.39.1
- webdrivers 5.2.0
- selenium-webdriver 4.9.1
- Google Chrome 115.0.5790.114
2. エラー内容
Railsでテストを実行しようとしたら以下のエラーが出た。
$ rails test test/system/xxx_test.rb:31 /Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/webdrivers-5.2.0/lib/webdrivers/chromedriver.rb:83:in `rescue in latest_point_release': Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html (Webdrivers::VersionError) 省略 /Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/webdrivers-5.2.0/lib/webdrivers/network.rb:19:in `get': Net::HTTPServerException: 404 "Not Found" with https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 (Webdrivers::NetworkError)
ChromeDriverの115.0.5790の最新のリリースバージョンが見つからないと言っている。
3. 解決法
test/application_system_test_case.rb
に以下を追記
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
+ Webdrivers::Chromedriver.required_version = "114.0.5735.90"
省略
end
テスト実行できた。
$ rails test test/system/xxx_test.rb:31 Run options: --seed 64817 # Running: . [Minitest::CI] Generating test report in JUnit XML format... Finished in 8.397903s, 0.1191 runs/s, 0.1191 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
4. まとめ
Chromeのバージョンを確認
バージョン: 115.0.5790.114(Official Build) (x86_64)
- ChromeDriverの最新は
114.0.5735.90
。115がない。 - 暫定的な対応として、
Webdrivers::Chromedriver.required_version = "114.0.5735.90"
でバージョン固定。
追記(2023/8/17)
Chromeのバージョンが116.0.5845.96でテスト実行したら以下のエラーが発生。
$ rails test test/system/xxx_test.rb:31 省略 Error: xxx: Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 116.0.5845.96 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
test/application_system_test_case.rb
に追加したWebdrivers::Chromedriver.required_version = "114.0.5735.90"
を削除すると直る。
WebDrivers - Update: Future of this Projectにある対応をした方が良さそう。
【参考】
- Webdrivers trying to load a Chrome version that doesn't exist · Issue #247 · titusfortner/webdrivers
- Fixed Webdrivers::VersionError with chrome version greater than 115 by sadahiro-ono · Pull Request #249 · titusfortner/webdrivers
- titusfortner/webdrivers: Version Pinning
- ChromeDriver - WebDriver for Chrome - Downloads
- RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita
- What's new in Selenium Manager with Selenium 4.11.0 | Selenium