diff --git a/.travis.yml b/.travis.yml index 3afb132f..59d3c1e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -95,21 +95,11 @@ before_script: awesome & fi - if [[ $CAPYBARA_REMOTE = true ]]; then - docker-compose up -d - - TIMEOUT=20 - - until wget --spider http://localhost:4444 > /dev/null 2>&1 || [ $TIMEOUT -eq 0 ]; do - echo "Waiting for selenium server, $((TIMEOUT--)) remaining attempts..."; - sleep 1; - done - - TIMEOUT=20 - - until wget --spider http://localhost:4445 > /dev/null 2>&1 || [ $TIMEOUT -eq 0 ]; do - echo "Waiting for selenium server, $((TIMEOUT--)) remaining attempts..."; - sleep 1; - done + if [[ $CAPYBARA_FF = true ]]; then + docker-compose up -d selenium_firefox; + else + docker-compose up -d selenium_chrome; + fi; fi script: "bundle exec rake travis" diff --git a/docker-compose.yml b/docker-compose.yml index 7083a4d3..c1bdd3c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,4 @@ ---- version: "3" - services: selenium_chrome: network_mode: "host" diff --git a/spec/selenium_spec_chrome_remote.rb b/spec/selenium_spec_chrome_remote.rb index c3c4210f..1c9b085b 100644 --- a/spec/selenium_spec_chrome_remote.rb +++ b/spec/selenium_spec_chrome_remote.rb @@ -14,11 +14,20 @@ def selenium_port end def ensure_selenium_running! - TCPSocket.open(selenium_host, selenium_port) -rescue - raise 'Selenium is not running. ' \ - "You can run a selenium server easily with: \n" \ - ' $ docker-compose up -d selenium_chrome' + timer = Capybara::Helpers.timer(expire_in: 20) + begin + TCPSocket.open(selenium_host, selenium_port) + rescue + if timer.expired? + raise 'Selenium is not running. ' \ + "You can run a selenium server easily with: \n" \ + ' $ docker-compose up -d selenium_chrome' + else + puts "Waiting for Selenium docker instance..." + sleep 1 + retry + end + end end Capybara.register_driver :selenium_chrome_remote do |app| diff --git a/spec/selenium_spec_firefox_remote.rb b/spec/selenium_spec_firefox_remote.rb index d5d5f7e1..08a71557 100644 --- a/spec/selenium_spec_firefox_remote.rb +++ b/spec/selenium_spec_firefox_remote.rb @@ -14,11 +14,20 @@ def selenium_port end def ensure_selenium_running! - TCPSocket.open(selenium_host, selenium_port) -rescue - raise 'Selenium is not running. ' \ - "You can run a selenium server easily with: \n" \ - ' $ docker-compose up -d selenium_firefox' + timer = Capybara::Helpers.timer(expire_in: 20) + begin + TCPSocket.open(selenium_host, selenium_port) + rescue + if timer.expired? + raise 'Selenium is not running. ' \ + "You can run a selenium server easily with: \n" \ + ' $ docker-compose up -d selenium_firefox' + else + puts "Waiting for Selenium docker instance..." + sleep 1 + retry + end + end end Capybara.register_driver :selenium_firefox_remote do |app|