お久しぶりです。
Rails学習のため本に従って作業していると、タイトルのエラーに遭遇し解決に苦労したのでその解決方法について書き残しておきます。有名なエラーっぽくて「現場 rails rspec エラー」とかで検索すると結構引っかかるのですが、色々見ることでようやく解決したのでこちらの記事で何したかをまとめておこうと思います。
ちなみに自分はmacで、本は21年4月5日に発行された電子版v9.01の書籍みたいです。参考までに。
エラーについて
書籍のchapter5-8-4でSpecを実行するときに遭遇するエラーです。
...
Got 0 failures and 2 other errors:
1.1) Failure/Error: visit login_path
Selenium::WebDriver::Error::SessionNotCreatedError:session not created: This version of ChromeDriver only supports Chrome version 114
Current browser version is 117.0.5938.92 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
macに入っているGoogle Chromeのバージョンが、gemとして入れたchromedriver-helper
のサポートするバージョンの対象外であることが原因で発生するエラーのようで、一般的な対処としては、Google Chromeのダウングレードをすることや今使っているGoogle Chromeをサポートするようなchromedriver-helperをインストールすることなどが挙げられるようです。
対処
バージョンを合わせることでも対応可能なようですが、今回chromedriver-helperを使わない方法で対処しました。
chromedriver-helperのgithubの情報を参照する限り、2019年にサポートが終了しているようです。
推奨する移行先はwebdriversのようですね。
ただ今回はGemfileにあらかじめ記載されていた「selenium-webdriver
」だけで対応できるようなので、webdriversは使用しませんでした。
gemに必要な情報を載せる
chromedriver-helperをGemfileからコメントアウトなどで取り除きます。
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
# 不要なので消す gem 'chromedriver-helper'
その後は下記を実行して、gemをインストールします。
bundle
# 不安なら今回関連する2つのgemも再度インストールする
bundle update selenium-webdriver capybara
chromedriverを落とす
改めてrspecを実行すると、エラーが変わっています。
Selenium::WebDriver::Error::WebDriverError:
Unable to find chromedriver. Please download the server from
https://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH.
chromedriverが無いのでURL先から希望するバージョンのものを落としてくれ、と言われていますが、今回はhomebrewで落とします。無い場合は入れておくと良いです。
# homebrew更新
brew update
# インストールを実行すると、既に存在していると言われたので一度アンインストールした
brew install chromedriver
Warning: Not upgrading chromedriver, the latest version is already installed
current: ~/Desktop/study/genba_ruby_on_rails/3_chapter/taskleaf
# 一度消す
brew uninstall chromedriver
# 改めて
brew install chromedriver
==> Downloading https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.92/mac-x64/chromedriver-mac-x64.zip
Already downloaded: /Users/skoni/Library/Caches/Homebrew/downloads/747fccd14a664d1d5f973f508e67fad1efd641c2a3059831cd47deb81c28aaa3--chromedriver-mac-x64.zip
==> Installing Cask chromedriver
==> Linking Binary 'chromedriver' to '/usr/local/bin/chromedriver'
🍺 chromedriver was successfully installed!
macの設定を調整する
こちらで改めてrspecを実行すると、今度はmacから怒られました。
一度キャンセルし、macのシステム環境設定 > セキュリティとプライバシー > 一般タブで、ダウンロードしたアプリケーションの実行許可を「このまま許可」とします。
許可後に、再度rspecを実行。
うまくいきました!