Rails integration test with selenium as webdriver - can't sign_in

0
0

Hi

I have a very simple integration test

require 'integration_test_helper'
Capybara.current_driver = :rack_test
class AdminSignsInTest < ActionDispatch::IntegrationTest
test
'can sign in' do
email
= 'bob@example.com'
password
= 'secret_password'
Admin.create email: email, password: password
visit new_admin_session_path
fill_in
'admin_email', with: email
fill_in
'admin_password', with: password
click_button I18n
.t('devise.views.sign_in')
assert_equal I18n
.t('devise.sessions.signed_in'), find('p.notice').text
end
end

When I set Capybara driver to rack_test test passes, but when I set it to selenium, it fails with ‘Invalid email or password.’ on the login page (I’m using Devise). What am I doing wrong?

  • You must to post comments
0
0

When I set Capybara driver to rack_test test passes, but when I set it to selenium, it fails with ‘Invalid email or password.’ on the login page (I’m using Devise). What am I doing wrong?

You’ll have to check use_transactional_fixtures. When using transactional fixtures, because Selenium (or, any of the external drivers, which aren’t Rack::Test) do not have access to information that has been written to the database. (as the transaction hasn’t been “Committed”)

You can resolve this inside of your test_helper.rb with the following:

class ActionDispatch::IntegrationTest
self.use_transactional_fixtures = false
end

You may want, at the same time to look into something like Database Cleaner, as without transactional fixtures, your database will become untidy.

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website