System SpecはRspec3.7からの機能で比較的歴史が浅い機能になります。E2Eテストができるspecになります。
元々は、Feature SpecというE2Eテスト用のSpecが用意されていましたがその代替です。
Feature Specとの違い
RailsでのE2Eテストをより便利にするように以下がデフォルト実装されています。
- デフォルトでselnium-webdriver + Chrome上でテストが実行される。
- データベースのトランザクション管理をする必要がない。
- テスト失敗時に自動でスクリーンショットを保存してくれる。
準備
System SpecをするためにはCapybaraという外部のGemをRailsに組み込む必要があります。capybara自体はrails newコマンドを実行した際に既にインストールされているはずなのでRspecでcapybaraを利用するための準備をしていきます。
spec/spec_helper.rb
spec_helper.rb(Rails特有のRspecの設定をしていくファイル)に対して下記の記述を追加しましょう。
1 2 3 4 5 6 7 8 9 10 |
require 'rspec/rails' # Add additional requires below this line. Rails is not loaded until this point! require 'capybara/rspec' ★追加 ~ 中略 ~ RSpec.configure do |config| config.before(:each, type: :system) do ★追加 driven_by :selenium_chrome_headless ★追加 end ★追加 |
require 'capybara/rspec'
RspecでCapybaraを読み込みます。注意点としては「ActiveRecord::Migration.maintain_test_schema!」等の他の記述の後には記述しないようにしましょう。(動かなくなりました。)
config.before(:each, type: :system) do 〜 end
System Specを使用するための設定です。その際にドライバというSystem Specにおいてブラウザに相当する機能を持ったプログラムの指定をします。ここでは「selenium_chrome_headless」というドライバを指定しています。
この記事へのコメントはありません。