Capybara Driver Selenium не аутентифицирует пользователей, пока Rack Test справляется - PullRequest
2 голосов
/ 04 ноября 2011

Я провожу несколько тестов с огурцом / капибарой. У меня есть один сценарий, когда пользователь заходит на домашнюю страницу, заполняет его / ее имя пользователя и пароль и нажимает «Enter». Это должно войти в систему пользователя. При использовании драйвера Capybara по умолчанию, rack_test, это работает: пользователь входит в систему и перемещается на другую страницу. При использовании драйвера Selenium это не работает вообще. Пользователь указывает свое имя пользователя и пароль, но не входит в систему.

Я говорю о том же тесте. Единственное, что меняется, это драйвер Капибара. Я также думаю, что важно знать, что я использую Authlogic для своей логики аутентификации.

Можете ли вы помочь мне с этим? Спасибо!

Это мой конфигурационный файл Capybara (support/env.rb):

require 'cucumber/rails'
require 'capybara/session'
require 'capybara/dsl'

Capybara.default_selector = :css
Capybara.run_server = false
ActionController::Base.allow_rescue = false
Capybara.javascript_driver = :selenium
Capybara.server_port = 3000

Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
  Cucumber::Rails::World.use_transactional_fixtures = false
  Capybara.reset_sessions! 
  DatabaseCleaner.strategy = :truncation, {:except => %w[widgets]}
  DatabaseCleaner.start
  activate_authlogic
  Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
end

After('@no-txn,@selenium,@culerity,@celerity,@javascript') do
  DatabaseCleaner.clean
end

Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
  DatabaseCleaner.strategy = :transaction
end

1 Ответ

0 голосов
/ 08 ноября 2011

У меня была очень похожая проблема, но это объяснение указало мне правильное направление. Также мои функции / support / env.rb выглядят так:

require 'cucumber/rails'

Capybara.run_server = false
Capybara.default_selector = :css
Capybara.server_port = 3000
Capybara.default_driver = :selenium

Cucumber::Rails::Database.javascript_strategy = :truncation

ActionController::Base.allow_rescue = false

DatabaseCleaner.strategy = :truncation

Before('@wip') do
ActiveRecord::Base.shared_connection = nil
end

Обратите внимание, что блок Before предназначен только для тега @wip. Измените это на теги, которые вы будете тестировать с этим конфигом. Надеюсь, это поможет

...