Системные тесты запускаются с использованием Capybara. Капибара использует драйверы для завершения тестирования. Драйверы Capybara могут быть определены как:
Драйвер является частью Capybara, которая фактически управляет веб-страницей как серией элементов DOM - Rails 5 Test Prescribs - Noel Rappin.
Capybara по умолчанию использует драйвер rack_test, более быструю, но JavaScript незнакомую версию. , в то время как Системные тесты Rails используют по умолчанию, более медленную, но Javascript осведомленную версию, селен - думаю, что этот код устанавливает Rails по умолчанию.
Я хотел бы узнать причины по умолчанию и, если бы я все еще мог использовать rack_test
. Я нашел цитату из оригинального PR:
Я выбрал драйвер Selenium по умолчанию, потому что цель добавления системного тестирования в Rails состоит в том, чтобы начальная установка была абсолютно нулевой. Capybara делает это с помощью Rack Test по умолчанию, но это не очень полезная демонстрация достоинств тестирования системы, поскольку она не поддерживает тестирование JavaScript. Комментарий в PR от кодов Эйлин
Так что нет никаких технических причин выбирать Selenium vs Rack. Selenium был выбран, так как он был более полнофункциональным по умолчанию.
Тест в стойке ограничен и описан следующим образом:
Если вам не нужен полноценный браузер - если вы просто хотите установить HTML вместо того, чтобы просто выполнить Javascript ... То, что делает тест в стойке, - это в основном фальсификация связи между реальным браузером и фальшивым браузером, который Capybara может использовать для анализа ответа, вообще не делая веб-запрос. Вы можете сделать утверждение о том, что страница содержит.
Rails conf 2018 - Сэм Фиппен
Если ваш системный тест не использует Javascript, вы можете рассмотрите использование rack_test
вместо этого. Однако это компромисс - стойка будет быстрее, потому что она не знает о Javascript, но не может заменить сложность физического браузера.