[селеноид] [капибара] [рельсы] Можем ли мы использовать селеноид в приложении Rack? - PullRequest
0 голосов
/ 27 марта 2019

В Rails, когда мы используем капибару с селеном, по умолчанию они запускают сервер стойки для нашего приложения rails, и мы можем протестировать его без запуска самого приложения.

Итак, позвольте мне объяснить, что это значит:

поэтому, когда мы конфигурируем capybara rspec и selenium для rails, вам не нужно отдельно запускать ваш rails-сервер, когда мы запускаем спецификацию и когда мы просматриваем любой URL нашего приложения в спецификациях, то он работает.это происходит потому, что он создает сервер в стойке в фоновом режиме.

Теперь я использую Selenoid вместо селен, но сервер в стойке не работает.Так что же, selenoid работает только с удаленным URL-адресом и не создает никакого приложения в стойке?

Дайте мне знать, если есть какая-либо другая информация.требуется.

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2019

Selenoid является заменой сетки селена и управляет экземплярами браузера, которые вы используете для тестирования.Это не имеет ничего общего с запуском тестируемого приложения.

Проблема, с которой вы сталкиваетесь, заключается в том, что Capybara запускает приложение на машине, на которой вы выполняете тесты, но при использовании selenoid браузеры работают на других машинах (контейнерах).Это означает, что когда Capybara запускает приложение и сообщает браузеру посетить https://localhost:<some port>/some/path, ссылка localhost больше не подходит для браузеров, работающих на других машинах.Чтобы исправить это, вам нужно установить Capybara.app_host на URL, где выполняются тесты, как видно из машин / контейнеров, на которых запускаются экземпляры браузера.В зависимости от того, как именно сконфигурирована ваша контейнерная сеть, вам также потребуется либо исправить порт, используемый Capybara для запуска приложения, либо указать параметр Capybara.always_include_port.

Capybara.app_host = "http://local_machine_as_seen_from_containers" 
Capybara.always_include_port = true

или

Capybara.server_port = 1234 # some port number
Capybara.app_host = "http://local_machine_as_seen_from_containers:#{Capybara.server_port}"
...