LoginSignup
3
5

More than 1 year has passed since last update.

【RSpec】結合テストを実施した際に出たchromedriverに関するエラーの解消方法

Posted at

対象者

  • 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がないことが問題みたいです。

スクリーンショット 2021-09-09 15.28.45.png

しかし、chromedriver-helperのサポートはgemは2019年3月31日に終了しています。

webdriversというgemへ移行してくださいとのことですが、
下記の記事を参考にさせて頂いた際にうまく行かなかったので、
渋々chromedriver-helperをアプリケーションにインストールすることにしました。

3.Chromedriverをインストールして解決する方法

  1. Chromedriverのインストール
  2. 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テストが正常に動作しました。下記の記事を参考にさせて頂いております。

参考にさせて頂いた記事

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5