プチラヴォス

Vagrant環境下でのRuby on Railsテスト(RSpec・Capybara・FactoryBot)構築

下記環境下でGoogle Chromeブラウザ(ヘッドレス)を想定したRailsのテスト(RSpec・Capybara・FactoryBot)を構築しシナリオテストを作成、実行したところ失敗した。

環境構成.

環境.

導入gem.

失敗原因.

原因箇所1.

Seleniumがchromedriverへ連携出来ていない

エラー文.
Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515

原因箇所2.

chrome binaryが見つからない(おそらくサーバにchromeが導入されてない為)

エラー文.
Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary

以上2点が失敗原因だった。

以下解決

失敗原因箇所1.

引用記事1.
qiita.com

引用記事2.
github.com

上記記事1・2で詳しく説明されており参照することで解決した。
(俺が補足出来る事は全くありません!)

失敗原因箇所2.

引用記事1では失敗原因箇所2については結論として仮想環境を使わずローカル環境でテストを行う方針で解決した模様。
自分はVagrant上でテスト実施出来るよう失敗原因箇所2の解決を行いたかったのもあり、サーバにGoogle Chromeを導入してみた所解決した。
具体的な操作は以下の通り。やってる事は超簡単

操作.

①. Google Chromeリポジトリを追加

$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'  

②. 公開のダウンロード及び追加登録

$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -  

③. パッケージリストをアップデートし、chromeをインストール

$ sudo apt update && sudo apt install google-chrome-stable  

引用記事3.
qiita.com

テスト実行.

$ bundle exec rspec hoge/fuga/bar.rb  

実行結果.

Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:34894
.

Finished in 2.33 seconds (files took 1.44 seconds to load)
1 example, 0 failures

完全勝利。
自分の場合はUbuntuだったが、他のOS環境も同様に導入すれば上手くいきそうな気する