diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 60db3e1bc46..8ca4c172707 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -83,6 +83,7 @@ RSpec.configure do |config| config.include Devise::Test::IntegrationHelpers, type: :feature config.include LoginHelpers, type: :feature config.include SearchHelpers, type: :feature + config.include WaitHelpers, type: :feature config.include EmailHelpers, :mailer, type: :mailer config.include Warden::Test::Helpers, type: :request config.include Gitlab::Routing, type: :routing diff --git a/spec/support/helpers/wait_for_requests.rb b/spec/support/helpers/wait_for_requests.rb index c7f878b7371..45b9faa0fea 100644 --- a/spec/support/helpers/wait_for_requests.rb +++ b/spec/support/helpers/wait_for_requests.rb @@ -50,20 +50,6 @@ module WaitForRequests finished_all_vue_resource_requests? end - # Waits until the passed block returns true - def wait_for(condition_name, max_wait_time: Capybara.default_max_wait_time, polling_interval: 0.01) - wait_until = Time.now + max_wait_time.seconds - loop do - break if yield - - if Time.now > wait_until - raise "Condition not met: #{condition_name}" - else - sleep(polling_interval) - end - end - end - def finished_all_vue_resource_requests? Capybara.page.evaluate_script('window.activeVueResources || 0').zero? end diff --git a/spec/support/helpers/wait_helpers.rb b/spec/support/helpers/wait_helpers.rb new file mode 100644 index 00000000000..7e8e25798e8 --- /dev/null +++ b/spec/support/helpers/wait_helpers.rb @@ -0,0 +1,20 @@ +module WaitHelpers + extend self + + # Waits until the passed block returns true + def wait_for(condition_name, max_wait_time: Capybara.default_max_wait_time, polling_interval: 0.01, reload: false) + wait_until = Time.now + max_wait_time.seconds + loop do + result = yield + break if result + + page.refresh if reload + + if Time.now > wait_until + raise "Condition not met: #{condition_name}" + else + sleep(polling_interval) + end + end + end +end