Capybaraでログイン処理をシミュレートしてテスト – RSpec

/spec/rails_helper.rb

require 'capybara/rspec' #追加
require 'capybara/rails' #追加
Capybara.default_driver = :selenium_chrome #追加 #headlessモードを使う場合は:selenium_chrome_headless
#追加ここから #chromedriverを登録
Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end
#追加ここまで
#追加ここから #chromeのheadlessモードを登録(ブラウザ起動なし)
Capybara.register_driver :selenium_chrome_headless do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('headless')
  options.add_argument('--disable-gpu')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
#追加ここまで
/spec/features/sample_spec.rb

require "rails_helper"

feature "ユーザーがログインできること" do

    background do
    # ユーザを作成する
    User.create(name:  "a@gmail.com",
               email: "a@gmail.com",
               password:              "a@gmail.com",
               password_confirmation: "a@gmail.com",
               activated: true,
               activated_at: Time.zone.now)
    end
    scenario 'ログインする' do
    # トップページを開く
    visit users_path
    # ログインフォームにEmailとパスワードを入力する
    fill_in "Email",        with: "a@gmail.com"
    fill_in "Password",     with: "a@gmail.com"
    # ログインボタンをクリックする
    click_on 'Log in'
    # ログインに成功したことを検証する
    expect(page).to have_selector 'i', text: 'my_mind'
    end


end
 

参考

 

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

RailsRuby

コメントする

メールアドレスが公開されることはありません。