El navegador de selenio dockerizado no puede acceder a la URL de prueba de Capybara
Estoy tratando de ejecutar las pruebas de características de Ruby on Rails en el navegador firefox independiente de selenio dockerizado. Parece que tengo problemas con las redes porque la instancia de selenio no se puede conectar a la url iniciada por Capybara.
Aquí está mi muestradocker-compose.yml
archivo:
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"
Y comienzo Docker-compose con la red habilitada:
docker-compose --x-networking up
El script de prueba ejecuta un comando rspec como este
rspec ./spec/features/login_spec.rb:43
Para las pruebas de Docker, he habilitado el controlador remoto para 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
Y finalmente llamo a la prueba así:
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"
...
Puedo seguir los registros del contenedor del navegador y veo que el selenio recibe comandos de Capybara. El problema es que no se puede conectar a la url proporcionada, lo que puedo confirmar con la captura de pantalla.
Firefox no puede establecer una conexión con el servidor en mi aplicación: 56555
Para comprender mejor el problema, inicié la aplicación de rieles e intenté acceder a ella desde el contenedor de selenio. Noto que solo puedo acceder a la aplicación desde el contenedor de selenio si inicio la aplicación rails con un enlace ip.
rails s Puma -b 0.0.0.0
Esto parece un problema de red, pero no puedo encontrar una solución.
¿Cómo puedo hacer que el contenedor de selenio acceda a la aplicación de rieles que ejecuta pruebas de características Rspec con Capybara?
capybara (2.6.0)
selenium-webdriver (2.48.1)
Gracias por tu ayuda.