Dockerized Selenium-Browser kann nicht auf die Capybara-Test-URL zugreifen

Ich versuche, Ruby on Rails-Funktionstests in einem angedockten Selen-Standalone-Firefox-Browser auszuführen. Anscheinend habe ich Probleme mit dem Netzwerk, da die Selenium-Instanz keine Verbindung zu der von Capybara gestarteten URL herstellen kann.

Hier ist mein Beispieldocker-compose.yml Datei

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"

Und ich starte Docker-Compose mit aktiviertem Netzwerk:

docker-compose --x-networking up

Das Testskript führt einen rspec-Befehl wie diesen aus

rspec ./spec/features/login_spec.rb:43

Für Docker-Tests habe ich den Remote-Treiber für Capybara aktiviert:

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

Und zum Schluss rufe ich den Test so auf:

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"
...

Ich kann Browser-Container-Protokolle abschließen und sehe, dass Selen Befehle von Capybara erhält. Das Problem ist, dass es keine Verbindung zu der angegebenen URL herstellen kann, was ich mit dem Screenshot bestätigen kann.

Firefox kann unter my-app keine Verbindung zum Server herstellen: 56555

Um das Problem besser zu verstehen, habe ich die Rails-App gestartet und versucht, vom Selen-Container darauf zuzugreifen. Ich stelle fest, dass ich vom Selen-Container aus nur dann auf die App zugreifen kann, wenn ich die Rails-App mit einer IP-Bindung starte.

rails s Puma -b 0.0.0.0

Dies sieht nach einem Netzwerkproblem aus, aber ich kann keine Lösung finden.

Wie kann ich den Selen-Container auf die Rails-App zugreifen lassen, in der Rspec-Funktionstests mit Capybara ausgeführt werden?

capybara (2.6.0)
selenium-webdriver (2.48.1)

Danke für Ihre Hilfe

Antworten auf die Frage(2)

Ihre Antwort auf die Frage