vagrant on mac で rspec with capybara (selenium)
mac vagrant 環境の railsのテストを rspec with capybara (Selenium)を使ってテストしたいってときに
※ Vagrant環境下におけるブラウザテストについて(Chrome編) | hifive開発者ブログ
を参考(◎とてもわかりやすい!!)にやってみた上で個人的に迷った点を補足した内容です。
前提
vagrant側でrails+rspec with capybara 環境構築済み
gem 'rspec-rails' gem 'capybara' gem 'selenium-webdriver'
設定の手順
1) Vagrantfileに下記を追加 し、vagrant 起動
Vagrant.configure(***) do | config | 〜 end の間に記載
config.vm.network :forwarded_port, guest: 3000, host: 3000
仮想環境側の3000番ポートがそのまま母艦の3000番ポートにつながっています。そのため母艦の http://localhost:3000/ にアクセスすると、仮想環境の http://localhost:3000/ にアクセスしたのと同じになります。
・・母艦って表現わかりやすいなぁ。ホストとゲストってピンとこないし。
2) vagrant環境の rails 開発環境の spec/rails_helper.rb に下記 追記
# use chrome driver with capybara Capybara.javascript_driver = ENV['DRIVER'] ? ENV['DRIVER'].to_sym : :chrome Capybara.app_host = [:safari, :chrome, :firefox, :iphone, :ipad].include?(Capybara.javascript_driver) ? "http://localhost:3000" : "http://10.0.2.2:3000" Capybara.default_wait_time = 10 Capybara.run_server = false Capybara.register_driver :chrome do |app| Capybara::Selenium::Driver.new app, browser: :remote, desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome, url: "http://10.0.2.2:4444/wd/hub" end
※ 参考元からコピペ後 IPを 「10.0.2.2」に変更
10.0.2.2 は vagrant(ゲスト)側からみた 「母艦」(ホスト)側のIPとなるとのこと↓
参考:VirtualBox 内のゲスト OS からホスト OS にアクセスしたい · GitHub
3)vagrant環境 で railsサーバ 起動 = localhost:3000 で動く
rails s
※当方 動かず。。→ rails 4.2 だったため
rails s -b 0.0.0.0