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

前端 未结 3 776
别那么骄傲
别那么骄傲 2020-12-08 20:03

Hi
I have a very simple integration test

require \'integration_test_helper\'
Capybara.current_driver = :rack_test

class AdminSignsInTest < ActionDi         


        
相关标签:
3条回答
  • 2020-12-08 20:25

    I found mattwinder's answer worked, but I also had to comment out the line

    config.use_transactional_fixtures = true

    in spec/spec_helper.rb as well. Just overriding it in spec/support/database_cleaner.rb wasn't sufficient to make logins work with Selenium.

    0 讨论(0)
  • 2020-12-08 20:35

    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.

    0 讨论(0)
  • 2020-12-08 20:46

    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
    
    0 讨论(0)
提交回复
热议问题