Sto tentando di eseguire i test delle funzionalità di Ruby on Rails sul browser firefox autonomo del selenio. Sembra che sto avendo problemi con il networking perché l'istanza del selenio non può collegare all'URL avviato da Capybara.Il browser del selenio Dockerizzato non può accedere all'URL del test Capybara
Ecco il mio campione docker-compose.yml
di file:
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 mi metto finestra mobile-comporre con supporto di rete abilitata:
docker-compose --x-networking up
Lo script di test viene eseguito un comando rspec come questo
rspec ./spec/features/login_spec.rb:43
Per i test docker ho abilitato il driver remoto per 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 infine io chiamo il test come questo:
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 coda tronchi container del browser e vedo che il selenio riceve i comandi da Capybara. Il problema è che non può connettersi all'URL fornito, che posso confermare con lo screenshot.
Firefox non può stabilire una connessione al server my-app: 56555
Per capire meglio il problema, ho iniziato l'applicazione rotaie e ho cercato di accedervi dal contenitore selenio . Ho notato che posso accedere all'app dal contenitore del selenio solo se avvio l'app per i binari con un binding IP.
rails s Puma -b 0.0.0.0
Questo sembra un problema di rete, ma non riesco a capire una soluzione.
Come posso fare in modo che il contenitore di selenio acceda all'app per rails che esegue test di funzionalità Rspec con Capybara?
capybara (2.6.0)
selenium-webdriver (2.48.1)
Grazie per il vostro aiuto.
I binari filo server esegue l'applicazione di prova in lega a Capybara.server_host (127.0.0.1 per impostazione predefinita) - si può provare a cambiare che a qualunque IP dell'interfaccia del contenitore finestra mobile può parlare di nuovo al vostro macchina - forse 0.0.0.0 –
@TomWalpole Ti stai riferendo a 'Capybara.app_host'? Analizzo l'IP assegnato per il container che esegue le guide e lo passo all'app_host. Tuttavia, non posso accedervi dal contenitore del selenio. – artsince
No - Capybara.app_host viene utilizzato per creare gli indirizzi che il browser deve visitare, Capybara.server_host imposta l'ip sull'app di test per le connessioni dal browser –