Rails5 で System Spec を使ってみる
Ruby Ruby on Rails
Published: 2019-06-10

やったこと

System Spec を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

$ gem list | grep rspec-rails
rspec-rails (3.8.2)

調査

System Spec とは

Rails の SystemTestCase を Rspec から利用できるようにしたもの

SystemTestCase は E2E テストを実行することができます。

使ってみる

ファイル準備

$ mkdir spec/system
$ touch spec/system/tasks_spec.rb

app/views/tasks/new.html.erb

<button onclick="if (confirm('ok???')) { alert('pushed ok!!!'); }">
  テストボタン
</button>

spec/system/tasks_spec.rb

require 'rails_helper'

RSpec.describe 'Tasks', type: :system do
  it 'js test' do
    visit '/tasks/new'
    click_button('テストボタン')
    expect(page.driver.browser.switch_to.alert.text).to eq 'ok???'
    page.accept_confirm
    expect(page.driver.browser.switch_to.alert.text).to eq 'pushed ok!!!'

    page.accept_alert
  end
end

System Spec を実行

$ rails spec spec/system/tasks_spec.rb

参考