Vagrant環境下でのRuby on Railsテスト(RSpec・Capybara・FactoryBot)構築
下記環境下でGoogle Chromeブラウザ(ヘッドレス)を想定したRailsのテスト(RSpec・Capybara・FactoryBot)を構築しシナリオテストを作成、実行したところ失敗した。
環境構成.
環境.
- Vagrant:2.2.0
- OSイメージ:Ubuntu16.04LTS
- Ruby:2.5.1p57
- Ruby on Rails:5.2.2
導入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環境も同様に導入すれば上手くいきそうな気する