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 = '[email protected]'
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?
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.
From http://opinionatedprogrammer.com/2011/02/capybara-and-selenium-with-rspec-and-rails-3/:
You will also need DatabaseCleaner, since transactional fixtures do not work with Selenium. Add the database_cleaner gem to the :test group of your Gemfile and put the following code into spec/support/database_cleaner.rb:
DatabaseCleaner.strategy = :truncation
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before :each do
DatabaseCleaner.start
end
config.after :each do
DatabaseCleaner.clean
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With