From ee664acb356f8123f4f6b00b73c1e1cf0866c7fb Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 20 Oct 2022 09:40:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-5-stable-ee --- spec/support/capybara_slow_finder.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 spec/support/capybara_slow_finder.rb (limited to 'spec/support/capybara_slow_finder.rb') diff --git a/spec/support/capybara_slow_finder.rb b/spec/support/capybara_slow_finder.rb new file mode 100644 index 00000000000..975ddd52c1f --- /dev/null +++ b/spec/support/capybara_slow_finder.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Capybara + MESSAGE = <<~MSG + Timeout (%{timeout}s) reached while running a waiting Capybara finder. + Consider using a non-waiting finder. + + See https://www.cloudbees.com/blog/faster-rails-tests + MSG + + module Node + class Base + # Inspired by https://github.com/ngauthier/capybara-slow_finder_errors + module SlowFinder + def synchronize(seconds = nil, errors: nil) + start_time = Gitlab::Metrics::System.monotonic_time + + super + rescue Capybara::ElementNotFound => e + seconds ||= Capybara.default_max_wait_time + + raise e unless seconds > 0 && Gitlab::Metrics::System.monotonic_time - start_time > seconds + + message = format(MESSAGE, timeout: seconds) + raise e, "#{$!}\n\n#{message}", e.backtrace + end + end + + prepend SlowFinder + end + end +end -- cgit v1.2.1