Тест на капибару завершается неудачей только при использовании безголового Chrome (проходит с обезглавленным Chrome) - PullRequest
1 голос
/ 07 января 2020

У меня есть некоторые системные тесты, использующие 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), фильтр включится и перенаправит на соответствующую страницу. Все последующие запросы на экран входа в систему также перенаправляются.

Итак, мои вопросы:

  1. Есть ли принципиальное различие в том, как выполняются системные тесты в автономном режиме по сравнению с не -headless Chrome браузеры?

  2. Это, похоже, не проблема состояния гонки, поскольку перенаправление при нажатии кнопки происходит вовремя. Это местоположение , на которое перенаправляется страница, это проблема. Кнопка Back прекрасно работает, когда вы действительно используете приложение, поэтому она кажется проблемой только в системных тестах. Любые идеи относительно того, почему это может происходить, приветствуются.

...