diff options
author | Dan Davison <ddavison@gitlab.com> | 2019-02-12 08:27:34 +0000 |
---|---|---|
committer | Dan Davison <ddavison@gitlab.com> | 2019-02-12 08:27:34 +0000 |
commit | a9c4eaf992e67d9d6e7c10a8685c93ec864d086a (patch) | |
tree | 0489859b185aee3431bae9fd6d54e22932076fa9 /qa | |
parent | 91f74f455ed606d78c4d0b8844dce819266f80c6 (diff) | |
parent | c06002302bb639677f6092571a05b49802e2faa5 (diff) | |
download | gitlab-ce-a9c4eaf992e67d9d6e7c10a8685c93ec864d086a.tar.gz |
Merge branch 'qa-nightly-72-stablize-select-kind' into 'master'
Stablize select_kind using retry_on_exception
Closes gitlab-org/quality/nightly#72
See merge request gitlab-org/gitlab-ce!25027
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa/page/base.rb | 17 | ||||
-rw-r--r-- | qa/qa/page/group/show.rb | 16 | ||||
-rw-r--r-- | qa/qa/page/main/menu.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/main/sign_up.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/project/web_ide/edit.rb | 2 |
5 files changed, 28 insertions, 11 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index 69a8e691ceb..01ac161d26d 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -24,7 +24,7 @@ module QA end end - def with_retry(max_attempts: 3, reload: false) + def retry_until(max_attempts: 3, reload: false) attempts = 0 while attempts < max_attempts @@ -39,6 +39,21 @@ module QA false end + def retry_on_exception(max_attempts: 3, reload: false, sleep_interval: 0.0) + attempts = 0 + + begin + yield + rescue StandardError + sleep sleep_interval + refresh if reload + attempts += 1 + + retry if attempts < max_attempts + raise + end + end + def scroll_to(selector, text: nil) page.execute_script <<~JS var elements = Array.from(document.querySelectorAll('#{selector}')); diff --git a/qa/qa/page/group/show.rb b/qa/qa/page/group/show.rb index 6dd9ff997a4..9d6bd338027 100644 --- a/qa/qa/page/group/show.rb +++ b/qa/qa/page/group/show.rb @@ -45,15 +45,17 @@ module QA private def select_kind(kind) - within_element(:new_project_or_subgroup_dropdown) do - # May need to click again because it is possible to click the button quicker than the JS is bound - wait(reload: false) do - click_element :new_project_or_subgroup_dropdown_toggle + retry_on_exception(sleep_interval: 1.0) do + within_element(:new_project_or_subgroup_dropdown) do + # May need to click again because it is possible to click the button quicker than the JS is bound + wait(reload: false) do + click_element :new_project_or_subgroup_dropdown_toggle - has_element?(kind) - end + has_element?(kind) + end - click_element kind + click_element kind + end end end end diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb index 616d50f47fc..55500e831c6 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/main/menu.rb @@ -57,7 +57,7 @@ module QA end def go_to_profile_settings - with_retry(reload: false) do + retry_until(reload: false) do within_user_menu do click_link 'Settings' end diff --git a/qa/qa/page/main/sign_up.rb b/qa/qa/page/main/sign_up.rb index 9ca498012eb..46a105003d0 100644 --- a/qa/qa/page/main/sign_up.rb +++ b/qa/qa/page/main/sign_up.rb @@ -23,7 +23,7 @@ module QA check_element :new_user_accept_terms if has_element?(:new_user_accept_terms) - signed_in = with_retry do + signed_in = retry_until do click_element :new_user_register_button Page::Main::Menu.act { has_personal_area? } diff --git a/qa/qa/page/project/web_ide/edit.rb b/qa/qa/page/project/web_ide/edit.rb index a3e126b51da..2b6c01888d5 100644 --- a/qa/qa/page/project/web_ide/edit.rb +++ b/qa/qa/page/project/web_ide/edit.rb @@ -80,7 +80,7 @@ module QA # Retry the attempt to click :commit_button just in case part of the # animation is still in process even when the buttons have the # expected visibility. - commit_success_msg_shown = with_retry do + commit_success_msg_shown = retry_until do click_element :commit_button wait(reload: false) do |