diff options
Diffstat (limited to 'qa/qa/page/component/issuable/sidebar.rb')
-rw-r--r-- | qa/qa/page/component/issuable/sidebar.rb | 78 |
1 files changed, 45 insertions, 33 deletions
diff --git a/qa/qa/page/component/issuable/sidebar.rb b/qa/qa/page/component/issuable/sidebar.rb index 971e7634f6d..77962570aed 100644 --- a/qa/qa/page/component/issuable/sidebar.rb +++ b/qa/qa/page/component/issuable/sidebar.rb @@ -22,20 +22,16 @@ module QA element :labels_block end - base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_value.vue' do - element :selected_label_content + base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue' do + element :dropdown_input_field end - base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents.vue' do + base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue' do element :labels_dropdown_content end - base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_title.vue' do - element :labels_edit_button - end - - base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue' do - element :dropdown_input_field + base.view 'app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_value.vue' do + element :selected_label_content end base.view 'app/views/shared/issuable/_sidebar.html.haml' do @@ -53,7 +49,7 @@ module QA end def assign_milestone(milestone) - within_element(:milestone_block) do + wait_milestone_block_finish_loading do click_element(:edit_link) click_on(milestone.title) end @@ -70,14 +66,14 @@ module QA end def has_assignee?(username) - within_element(:assignee_block) do - has_text?(username, wait: 1) + wait_assignees_block_finish_loading do + has_text?(username) end end def has_no_assignee?(username) - within_element(:assignee_block) do - has_no_text?(username, wait: 1) + wait_assignees_block_finish_loading do + has_no_text?(username) end end @@ -88,8 +84,14 @@ module QA end def has_label?(label) - within_element(:labels_block) do - !!has_element?(:selected_label_content, label_name: label) + wait_labels_block_finish_loading do + has_element?(:selected_label_content, label_name: label) + end + end + + def has_no_label?(label) + wait_labels_block_finish_loading do + has_no_element?(:selected_label_content, label_name: label) end end @@ -103,33 +105,34 @@ module QA find_element(:more_assignees_link) end - def select_labels_and_refresh(labels) - Support::Retrier.retry_until do - click_element(:labels_edit_button) - has_element?(:labels_dropdown_content, text: labels.first) - end + def select_labels(labels) + within_element(:labels_block) do + click_element(:edit_link) - labels.each do |label| - within_element(:labels_dropdown_content) do - send_keys_to_element(:dropdown_input_field, [label, :enter]) + labels.each do |label| + within_element(:labels_dropdown_content) do + fill_element(:dropdown_input_field, label) + click_button(text: label) + end end end - click_element(:labels_edit_button) - - labels.each do |label| - has_element?(:labels_block, text: label, wait: 0) - end - - refresh - - wait_for_requests + click_element(:title) # to blur dropdown end def toggle_more_assignees_link click_element(:more_assignees_link) end + # When the labels_widget feature flag is enabled, wait until the labels widget appears + def wait_for_labels_widget_feature_flag + Support::Retrier.retry_until(max_duration: 60, reload_page: page, retry_on_exception: true, sleep_interval: 5) do + within_element(:labels_block) do + find_element(:edit_link) + end + end + end + private def wait_assignees_block_finish_loading @@ -141,6 +144,15 @@ module QA end end + def wait_labels_block_finish_loading + within_element(:labels_block) do + wait_until(reload: false, max_duration: 10, sleep_interval: 1) do + finished_loading_block? + yield + end + end + end + def wait_milestone_block_finish_loading within_element(:milestone_block) do wait_until(reload: false, max_duration: 10, sleep_interval: 1) do |