diff options
Diffstat (limited to 'qa/qa/page/base.rb')
-rw-r--r-- | qa/qa/page/base.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index 22b0021ea77..4ccf9e2f168 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -16,6 +16,10 @@ module QA def_delegators :evaluator, :view, :views + def initialize + @retry_later_backoff = QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME + end + def assert_no_element(name) assert_no_selector(element_selector_css(name)) end @@ -259,6 +263,19 @@ module QA visit find_element(name)['href'] end + def wait_if_retry_later + return if @retry_later_backoff > QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME * 5 + + if has_css?('body', text: 'Retry later', wait: 0) + QA::Runtime::Logger.warn("`Retry later` error occurred. Sleeping for #{@retry_later_backoff} seconds...") + sleep @retry_later_backoff + refresh + @retry_later_backoff += QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME + + wait_if_retry_later + end + end + def self.path raise NotImplementedError end |