Capybaraとは?
Webアプリ用のE2EテスティングフレームワークでRails5.1から標準で入っています。Capybaraの中にはRspecやMinitest等も内包しています。なお、JavaScriptはデフォルトドライバではサポートしていないのでJavaScriptが使いたい場合はseleniumドライバを使う必要があります。なお、デフォルトではヘッドレスブラウザ(UIを持たないブラウザ)を使ってテストを実行します。
できること
- Webアプリのブラウザでの自動実行
- ブラウザでのJavaScriptの動作確認
- Headlessブラウザ(GUIのないブラウザ)を操作できる。
Capybaraの構文
量が多いので下記の記事で解説しています。
使用するドライバの種類
Rack::Test
早くて信頼性が高いドライバです。しかし、JavaScriptの実行はサポートしていません。
selenium-webdriver
Rails5.1にはデフォルトでインストールされています。CapybaraでもデフォルトのJavaScriptドライバーになっています。デフォルトではFirefoxを使ってテストするよう設定されていますが、最近のFirefoxだと互換性問題が報告されているのでChromeを使うように設定しておいた方が良いでしょう。
使用方法
「spec/rails_helper.rb」に下記の記述を追加します。
1 |
Capybara.javascript_driver = :selenium_chrome |
Chromeを使うための設定
webdrivers Gemを追加します。なお、Webdriversはライブラリの依存関係上selenium-webdriverも一緒にインストールしてくれるため明示的に書かなくても済みます。
1 2 3 |
group :test do gem 'webdrivers' end |
ヘッドレスドライバ
Circle CIとかの継続的インテグレーションではコマンドラインインターフェイスで動かす必要があるので需要があるドライバになります。
PhantomJS
Chromeのリリースでプロジェクトを降りることが宣言されました。ただ、まだまだ多くのCIでサポートされており何からの理由でChromeが実行できないのであればPhantomJSはまだ有効な選択肢になります。
この記事へのコメントはありません。