Dockerized браузер селена не может получить доступ к URL-адресу теста Capybara
Я пытаюсь запустить функциональные тесты Ruby on Rails в автономном браузере Firefox с докритизированным селеном. Похоже, у меня проблемы с сетью, потому что экземпляр selenium не может подключиться к URL, запущенному Capybara.
Вот мой образецdocker-compose.yml
файл:
ff:
image: selenium/standalone-firefox:2.48.2
container_name: firefox-browser
web:
build: .
container_name: my-app
volumes:
- ".:/home/ubuntu/my-app"
command: /bin/bash -l scripts/docker-start-tests.sh
ports:
- "3000:3000"
И я начинаю docker-compose с включенной поддержкой сети:
docker-compose --x-networking up
Тестовый скрипт запускает команду rspec, например:
rspec ./spec/features/login_spec.rb:43
Для тестов докера я включил удаленный драйвер для Capybara:
Capybara.register_driver :docker_firefox do |app|
Capybara::Selenium::Driver.new(app, {
browser: :remote,
url: "#{ENV['FF_URL']}/wd/hub",
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox
})
end
И, наконец, я называю тест следующим образом:
unless ENV['FF_URL'].nil?
Capybara.current_driver = :docker_firefox
Capybara.javascript_driver = :docker_firefox
Capybara.app_host = "http://my-app:56555"
Capybara.server_port = "56555"
# Capybara.server_host = "my-app"
end
visit root_path
save_and_open_screenshot
click_link "Sign in"
...
Я могу следить за журналами контейнеров браузера и вижу, что селен получает команды от Капибары. Проблема в том, что он не может подключиться к предоставленной ссылке, что я могу подтвердить с помощью скриншота.
Firefox не может установить соединение с сервером в my-app: 56555
Чтобы лучше понять проблему, я запустил приложение rails и попытался получить к нему доступ из контейнера с селеном. Я заметил, что я могу получить доступ к приложению только из контейнера селена, если я запускаю приложение rails с привязкой ip.
rails s Puma -b 0.0.0.0
Это похоже на проблему с сетью, но я не могу найти решение.
Как я могу получить доступ к контейнеру селена в приложении rails, на котором выполняются функциональные тесты Rspec с Capybara?
capybara (2.6.0)
selenium-webdriver (2.48.1)
Спасибо за вашу помощь.