X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8d7f3c9ae0648719781174946ea89c3505aabd22..8d61948fecccfc60db2f18ba4daf7c01ddf3d3c8:/apps/workbench/test/integration_helper.rb?ds=sidebyside diff --git a/apps/workbench/test/integration_helper.rb b/apps/workbench/test/integration_helper.rb index c0e930aa95..f0c811aac2 100644 --- a/apps/workbench/test/integration_helper.rb +++ b/apps/workbench/test/integration_helper.rb @@ -5,10 +5,20 @@ require 'uri' require 'yaml' def available_port for_what - Addrinfo.tcp("0.0.0.0", 0).listen do |srv| - port = srv.connect_address.ip_port - STDERR.puts "Using port #{port} for #{for_what}" - return port + begin + Addrinfo.tcp("0.0.0.0", 0).listen do |srv| + port = srv.connect_address.ip_port + # Selenium needs an additional locking port, check if it's available + # and retry if necessary. + if for_what == 'selenium' + locking_port = port - 1 + Addrinfo.tcp("0.0.0.0", locking_port).listen.close + end + STDERR.puts "Using port #{port} for #{for_what}" + return port + end + rescue Errno::EADDRINUSE, Errno::EACCES + retry end end @@ -34,6 +44,11 @@ Capybara.register_driver :poltergeist_debug do |app| Capybara::Poltergeist::Driver.new app, poltergeist_opts.merge(inspector: true) end +Capybara.register_driver :poltergeist_with_fake_websocket do |app| + js = File.expand_path '../support/fake_websocket.js', __FILE__ + Capybara::Poltergeist::Driver.new app, poltergeist_opts.merge(extensions: [js]) +end + Capybara.register_driver :poltergeist_without_file_api do |app| js = File.expand_path '../support/remove_file_api.js', __FILE__ Capybara::Poltergeist::Driver.new app, poltergeist_opts.merge(extensions: [js]) @@ -56,7 +71,7 @@ Capybara.register_driver :selenium_with_download do |app| end module WaitForAjax - Capybara.default_max_wait_time = 5 + Capybara.default_max_wait_time = 10 def wait_for_ajax Timeout.timeout(Capybara.default_max_wait_time) do loop until finished_all_ajax_requests? @@ -86,8 +101,10 @@ end module HeadlessHelper class HeadlessSingleton + @display = ENV['ARVADOS_TEST_HEADLESS_DISPLAY'] || rand(400)+100 + STDERR.puts "Using display :#{@display} for headless tests" def self.get - @headless ||= Headless.new reuse: false + @headless ||= Headless.new reuse: false, display: @display end end @@ -124,6 +141,20 @@ module HeadlessHelper end end +module KeepWebConfig + def getport service + File.read(File.expand_path("../../../../tmp/#{service}.port", __FILE__)) + end + + def use_keep_web_config + @kwport = getport 'keep-web-ssl' + @kwdport = getport 'keep-web-dl-ssl' + Rails.configuration.keep_web_url = "https://localhost:#{@kwport}/c=%{uuid_or_pdh}" + Rails.configuration.keep_web_download_url = "https://localhost:#{@kwdport}/c=%{uuid_or_pdh}" + CollectionsController.any_instance.expects(:file_enumerator).never + end +end + class ActionDispatch::IntegrationTest # Make the Capybara DSL available in all integration tests include Capybara::DSL