対象者
- chromedriverに関するエラーが発生している方
- RSpe結合テストを実施中の方
- JavaScriptのテストが不要な方
- GoogleChromeを使用中の方
目的
- エラーを解消してRSpecテストを実行できるようにする
実際の手順と実例
1.前提
- RSpecテスト実装
- Ruby 2.6.3
- Rails 5.2.5
- Gemfileは下記の通り
Gemfile.
:
:
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
# Easy installation and use of chromedriver to run system tests with Chrome
gem 'webdrivers'
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker'
end
:
:
2.現状(エラー内容)
下記のようなエラーが出ています。
調べてたところによると、chromedriver-helperというgemがないことが問題みたいです。
しかし、chromedriver-helperのサポートはgemは2019年3月31日に終了しています。
webdriversというgemへ移行してくださいとのことですが、
下記の記事を参考にさせて頂いた際にうまく行かなかったので、
渋々chromedriver-helperをアプリケーションにインストールすることにしました。
3.Chromedriverをインストールして解決する方法
- Chromedriverのインストール
- rails_helper.rbの修正
上記2点を実行していきます。
1. Chromedriverのインストール
まず手始めにGoogleChromeをupdateしていきます。
Terminal.
$ sudo yum -y update
$ sudo yum -y install google-chrome-stable
$ sudo yum -y install libX11 GConf2 fontconfig libOSMesa google-noto-cjk-fonts
$ google-chrome --version
その後下記のコマンドでChromedriverをインストールしていきます。
Terminal.
sudo yum -y install unzip
curl -O -L https://chromedriver.storage.googleapis.com/85.0.4183.38/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin
rm chromedriver_linux64.zip
chromedriver -v
最後のコマンドを実行するとChromedriverのバージョンが表示されます。バージョンは下記のサイトで確認できます。
ここまで実行したら再度、テストを実行します。
実行後は更に下記のようなエラーがでました。
Terminal.
Selenium::WebDriver::Error::UnknownError:
unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
2. rails_helper.rbの修正
rails_helper.rb
RSpec.configure do |config|
:
:
:
config.include FactoryBot::Syntax::Methods
config.before(:each) do |example|
if example.metadata[:type] == :system
if example.metadata[:js]
driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]
else
driven_by :rack_test
end
end
end
# Capybara.javascript_driver = :selenium
end
上記を追加したらRSpecテストが正常に動作しました。下記の記事を参考にさせて頂いております。