O navegador de selênio encaixado não pode acessar o URL de teste da Capivara
Estou tentando executar os testes de recursos do Ruby on Rails no navegador firefox de dockerized selenium autônomo. Parece que estou tendo problemas com a rede porque a instância do selênio não pode se conectar ao URL iniciado pela Capivara.
Aqui está minha amostradocker-compose.yml
Arquivo:
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"
E começo o docker-compondo com a rede ativada:
docker-compose --x-networking up
O script de teste executa um comando rspec como este
rspec ./spec/features/login_spec.rb:43
Para testes do docker, habilitei o driver 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
E finalmente chamo o teste assim:
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"
...
Posso ajustar os logs do contêiner do navegador e vejo que o selênio recebe comandos da Capybara. O problema é que ele não pode se conectar ao URL fornecido, o que posso confirmar com a captura de tela.
O Firefox não pode estabelecer uma conexão com o servidor no meu aplicativo: 56555
Para entender melhor o problema, iniciei o aplicativo rails e tentei acessá-lo a partir do contêiner de selênio. Percebo que só posso acessar o aplicativo a partir do contêiner de selênio se eu iniciar o aplicativo rails com uma ligação IP.
rails s Puma -b 0.0.0.0
Parece um problema de rede, mas não consigo descobrir uma solução.
Como posso fazer com que o contêiner de selênio acesse o aplicativo Rails executando testes de recurso Rspec com Capybara?
capybara (2.6.0)
selenium-webdriver (2.48.1)
Obrigado pela ajuda.