Динамическое создание записи в капибарах с селеном не работает - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь запустить тесты моего приложения на огурец над капибарой с драйвером селена.В тестовых шагах я динамически создаю пользователей для входа в приложение.Но пользователь не может войти в систему с пользователем, которого создал.Я установил для user_transactional_fixture значение false.Тем не менее созданные записи недоступны для приложения selenium.

Вот код

Файл функций

@ browser Сценарий: только администратор может иметь доступ к страницам администратора "admin@example.com "является администратором Когда я вошел в систему как файл определения шага" admin@example.com "

учитывая /" ([^ \ "] *)" является администратором / do | электронная почта|

user = Email.active.find_by_address (email) .try (: user) || User.new ({},: password =>

'Monkey_123',: password_confirmation =>'Monkey_123',: last_name => 'example',: first_name => 'admin')

user.update_attribute (: state, "active")

user.update_attribute (: terms_and_conditions_accepted,1)

user.groups << Group.find (1) </p>

user.primary_email || = Email.new (: address => email,: state => Email :: State:: ACTIVE,

: email_type => Email :: Type :: PRIMARY)

user.save!

, когда я запускаю тесты с использованием capybara и selenium driveri, я не могувойдите в мое приложение, используя

созданный пользователь через браузер.

Я попытался использовать отладчик ruby, который показал создание конкретного пользователя.

Ниже приведена моя конфигурация в файле env.rb

, если она определена? (ActiveRecord:: База)

начало

require 'database_cleaner'

DatabaseCleaner.strategy = :truncation

rescue LoadError => ignore_if_database_cleaner_not_present

конец

конец

Capybara.server_port = 9887 # Или какой номер вы хотите?

Capybara.app_host = "http://localhost: # {Capybara.server_port}"

Capybara.default_wait_time = 4

Capybara.ignore_hidden_elements = false

Before ('@ browser') do Capybara.current_driver =: конец селена

Пожалуйста, предложите решение для этого.Версии драгоценных камней: 1) огурец -v 0.10.7

2) огурцы-рельсы 0.3.2

3) капибара 0.4.1.2

4) database_cleaner 0.5.0

Спасибо

1 Ответ

1 голос
/ 27 июля 2012

У меня была похожая проблема с огурцом, капибарой и селеном.Придумать как-то не позволило логин для созданных пользователей.Во время теста Cucumber не смог войти в приложение, используя созданного пользователя через браузер.Когда я установил драйвер Capybara в rack_test, тест прошел успешно, но когда я установил его на selenium, он потерпел неудачу с «Неверный адрес электронной почты или пароль».на странице входа в Devise.

Наконец я нашел ответ здесь и здесь .При использовании транзакционных средств Selenium не имеет доступа к информации, которая была записана в базу данных.Поэтому вы должны выключить фиксации транзакций и установить стратегию DatabaseCleaner: усечение.В ваших конфигурационных файлах (в моем случае features / support / env.rb и spec / spec_helper.rb) определите следующее: в конфигурационных функциях огурца / support / env.rb

DatabaseCleaner.strategy = :truncation

и в RSpecконфигурация spec/spec_helper.rb

RSpec.configure do |config|
  config.use_transactional_fixtures = false
  config.before :each do
    DatabaseCleaner.start
  end
  config.after :each do
    DatabaseCleaner.clean
  end
end
...