summaryrefslogtreecommitdiff
path: root/qa/qa/page/base.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/page/base.rb')
-rw-r--r--qa/qa/page/base.rb29
1 files changed, 15 insertions, 14 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index b1f27131207..05e38aba77d 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -18,22 +18,13 @@ module QA
page.refresh
end
- def wait(max: 60, time: 0.1, reload: true)
- start = Time.now
-
- while Time.now - start < max
- result = yield
- return result if result
-
- sleep(time)
-
- refresh if reload
+ def wait(max: 60, interval: 0.1, reload: true)
+ QA::Support::Waiter.wait(max: max, interval: interval) do
+ yield || (reload && refresh && false)
end
-
- false
end
- def with_retry(max_attempts: 3, reload: false)
+ def retry_until(max_attempts: 3, reload: false)
attempts = 0
while attempts < max_attempts
@@ -48,6 +39,12 @@ module QA
false
end
+ def retry_on_exception(max_attempts: 3, reload: false, sleep_interval: 0.5)
+ QA::Support::Retrier.retry_on_exception(max_attempts: max_attempts, reload_page: (reload && self), sleep_interval: sleep_interval) do
+ yield
+ end
+ end
+
def scroll_to(selector, text: nil)
page.execute_script <<~JS
var elements = Array.from(document.querySelectorAll('#{selector}'));
@@ -73,7 +70,7 @@ module QA
xhr.send();
JS
- return false unless wait(time: 0.5, max: 60, reload: false) do
+ return false unless wait(interval: 0.5, max: 60, reload: false) do
page.evaluate_script('xhr.readyState == XMLHttpRequest.DONE')
end
@@ -156,6 +153,10 @@ module QA
click_link text
end
+ def click_body
+ find('body').click
+ end
+
def self.path
raise NotImplementedError
end