X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b046d1f162990361418a8e926aead5b307402a42..35ba053c83b7ad18e1a336d50d3a8d5a53adce9f:/apps/workbench/test/integration_helper.rb diff --git a/apps/workbench/test/integration_helper.rb b/apps/workbench/test/integration_helper.rb index f0c811aac2..0c66e59c8c 100644 --- a/apps/workbench/test/integration_helper.rb +++ b/apps/workbench/test/integration_helper.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' require 'capybara/rails' require 'capybara/poltergeist' @@ -25,6 +29,9 @@ end def selenium_opts { port: available_port('selenium'), + desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox( + acceptInsecureCerts: true, + ), } end @@ -71,16 +78,24 @@ Capybara.register_driver :selenium_with_download do |app| end module WaitForAjax + # FIXME: Huge side effect here + # The following line changes the global default Capybara wait time, affecting + # every test which follows this one. This should be removed and the failing tests + # should have their individual wait times increased, if appropriate, using + # the using_wait_time(N) construct to temporarily change the wait time. + # Note: the below is especially bad because there are places that increase wait + # times using a multiplier e.g. using_wait_time(3 * Capybara.default_max_wait_time) Capybara.default_max_wait_time = 10 def wait_for_ajax - Timeout.timeout(Capybara.default_max_wait_time) do - loop until finished_all_ajax_requests? + timeout = 10 + count = 0 + while page.evaluate_script("jQuery.active").to_i > 0 + count += 1 + raise "AJAX request took more than #{timeout} seconds" if count > timeout * 10 + sleep(0.1) end end - def finished_all_ajax_requests? - page.evaluate_script('jQuery.active').zero? - end end module AssertDomEvent @@ -88,14 +103,14 @@ module AssertDomEvent # DOM element. def assert_triggers_dom_event events, target='body' magic = 'received-dom-event-' + rand(2**30).to_s(36) - page.evaluate_script <