Capybaraは通常Rack:Testと呼ばれるブラウザエンジンを用い、仮想的に画面操作をしています。そのためJavascriptを考慮したテストはできません。 この場合、CapybaraのエンジンをJavascriptが動作する、capybara-webkitやSeleniumというブラウザエンジンに切り替えてテストを行います。 capybara_webkitを使うにはGemfileにcapybara-webkitを追記します。
1 2 3 4 |
|
次にenv.rbにJavascriptドライバーを記述します。
1 2 |
|
これでJacascripがテストで動作する環境ができました。Javascriptを動作させたいところにRSpecだと
1 2 3 |
|
Cucumerだとシナリオに@javascriptタグを付加します。
1 2 |
|
ブラウザ別のテストを実施したいときはSeleniumドライバーを使います。 SeleniumドライバーはFirefox、InternetExplorer、GoogleChromeを実際に起動させてテストします。 SeleniumはCapybaraに同梱されているので、ブラウザエンジンを切り替えるだけで使用可能になります。
1
|
|
デフォルトではFirefoxが起動するので、FirefoxではなくChromeを使用したいときには以下をCapybara.default_driverの前に記載します。
1 2 3 |
|
Seleniumドライバーは実際のブラウザを起動するのでほとんどのJavascriptをテストできますが、オーバーヘッドが大きくなります。 従って、必要なテストにのみSeleniumドライバーを利用するようにします。 RSpecのフィルタで切り替える方法を載せます。この方法は特定のサンプルのみブラウザの切り替えを行います。 フィルタ機能を設定するには、spec_helper.rbにSelenium用のフィルターを用意します。
1 2 3 4 5 6 7 8 9 |
|
あとはSeleniumを実行したいサンプルにseleniumタグを追加します。
1 2 3 |
|