У меня есть некоторые системные тесты, использующие Minitest / Capybara, но одна часть неизменно дает сбой при использовании NON-headless Chrome, даже если она проходит нормально при использовании безголовой версии.
Эта установка работает:
# application_system_test_case.rb
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :headless_chrome
end
Это приводит к сбою теста:
# application_system_test_case.rb
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium
end
Данный тест проверяет функциональность определенной кнопки Back
в моем приложении (пользовательская кнопка, а не браузер по умолчанию) Кнопка назад). Тест находит и нажимает кнопку, которая вызывает history.back()
внутри. Предполагается, что это перенаправляет страницу обратно на предыдущую страницу, но вместо этого при использовании браузера без заголовка перенаправляется либо на экран входа в систему, либо на другой, не связанный с этим экран. Последняя строка в приведенном ниже фрагменте завершается неудачей.
page_before_settings_page = current_path
click_on 'Settings'
assert_current_path '/settings'
click_on 'Back'
assert_current_path page_before_settings_page
Еще больше меня удивляет то, что для контроллера входа в систему установлен фильтр before_action
, который должен перенаправить вас со страницы входа в систему, если вы Вы уже вошли в систему. Таким образом, экран входа в систему даже не должен быть доступен в это время. Конечно, если я приостановлю тест с помощью отладчика после рендеринга страницы входа в систему и перезагрузлю страницу (visit current_path
), фильтр включится и перенаправит на соответствующую страницу. Все последующие запросы на экран входа в систему также перенаправляются.
Итак, мои вопросы:
Есть ли принципиальное различие в том, как выполняются системные тесты в автономном режиме по сравнению с не -headless Chrome браузеры?
Это, похоже, не проблема состояния гонки, поскольку перенаправление при нажатии кнопки происходит вовремя. Это местоположение , на которое перенаправляется страница, это проблема. Кнопка Back
прекрасно работает, когда вы действительно используете приложение, поэтому она кажется проблемой только в системных тестах. Любые идеи относительно того, почему это может происходить, приветствуются.