diff options
author | Rémy Coutable <remy@rymai.me> | 2018-03-29 11:47:54 +0200 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2018-04-23 12:20:30 +0200 |
commit | 023d4f6f2f3d88d0966fe01e6ef921fd03a309fe (patch) | |
tree | 6aabb650fe2ba200222c57f1a4ac66ff0a9143e8 /spec/support/helpers/capybara_helpers.rb | |
parent | eb1cb7bed6951bdda54abd55e86fd793e6954a56 (diff) | |
download | gitlab-ce-023d4f6f2f3d88d0966fe01e6ef921fd03a309fe.tar.gz |
Move spec helpers/matchers/shared examples/contexts to their relevant folder
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'spec/support/helpers/capybara_helpers.rb')
-rw-r--r-- | spec/support/helpers/capybara_helpers.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/support/helpers/capybara_helpers.rb b/spec/support/helpers/capybara_helpers.rb new file mode 100644 index 00000000000..bcc2df44708 --- /dev/null +++ b/spec/support/helpers/capybara_helpers.rb @@ -0,0 +1,43 @@ +module CapybaraHelpers + # Execute a block a certain number of times before considering it a failure + # + # The given block is called, and if it raises a `Capybara::ExpectationNotMet` + # error, we wait `interval` seconds and then try again, until `retries` is + # met. + # + # This allows for better handling of timing-sensitive expectations in a + # sketchy CI environment, for example. + # + # interval - Delay between retries in seconds (default: 0.5) + # retries - Number of times to execute before failing (default: 5) + def allowing_for_delay(interval: 0.5, retries: 5) + tries = 0 + + begin + sleep interval + + yield + rescue Capybara::ExpectationNotMet => ex + if tries <= retries + tries += 1 + sleep interval + retry + else + raise ex + end + end + end + + # Refresh the page. Calling `visit current_url` doesn't seem to work consistently. + # + def refresh + url = current_url + visit 'about:blank' + visit url + end + + # Simulate a browser restart by clearing the session cookie. + def clear_browser_session + page.driver.browser.manage.delete_cookie('_gitlab_session') + end +end |