Тесты написаны на Capybara и крутятся на Убунту, headless Chrome.
В spec_config :
config.append_after(:each) do |example|
Capybara.reset_sessions!
end
Сам тест тестирует правильность еррор месседжа при неправильном конфирмейшн пароле:
scenario ‘password_do_not_match’ do
visit ‘/resetpassword’
fill_in ‘Password’, with: ‘87654321’
fill_in ‘Password Confirmation’, with: ‘88654321’
click_button ‘Reset Password’
expect(page).to have_content ‘*Password does not match’
end
Проблема: тест падает с ошибкой “Failure/Error: fill_in ‘Password’, with: ‘87654321’
Capybara::ElementNotFound:
Unable to find visible field “Password” that is not disabled”
а в скриншоте хоум пейдж для логгед юзера
Тесты ранятся в рендомном порядке и когда перед ним тест, где юзер залогинился, то этот тест падает, что очень странно, так как после каждого теста срабатывает ресет сешнс.
получаю в логах
about:blank
https://…/resetpassword
Test name: Reset_pass password_do_not_match
F
то есть ресет срабатывает, появляется пустая страница, кукисов нет, переходит на нужную страницу, но там вместо формы ресета оказывается хоумпедж для логгед юзера.
то есть вкладка не закрывается? вы в браузере сессию может и закончили, но приложение само целевое вас не отпускает и не рисует страницу логина, потому что вы для него залогинены
Вкладку не закрывала, а открывала пустую страницу, потом переходила на нужную мне.
Если предположить что это и есть причина, то как это можно исправить?
Проблема решена
Local storage (где сохранялись данные логгед юзера) оказвается не чистился.
В конфиг файл было добавлено
config.after(:each) do
Capybara.execute_script ‘localStorage.clear()’
end
Можете делать в
after(:each) do
Capybara.current_session.driver.quit
end
Но, если у вас прикручены скриншоты от капибары они могут выполняться не корректно, поэтому мы в тестах добавили не в after хук а в before хук, первой командой
В конечном итоге добавила в описании браузера - работает всё норм
Capybara::Selenium::Driver.new app,
browser: :chrome, clear_local_storage: true, clear_session_storage: true,
desired_capabilities: capabilities
end