From 74d959bfbf9d54e01c0f3822fbce882132e7b828 Mon Sep 17 00:00:00 2001 From: Sanad Liaquat <sliaquat@gitlab.com> Date: Fri, 3 Jul 2020 10:40:32 +0000 Subject: [PATCH] Move qa selector to dropdown_class Also stablize choose_access_level_role method by ensuring it gives the same output on retry. --- app/helpers/dropdowns_helper.rb | 5 ++++- .../projects/protected_tags/_create_protected_tag.html.haml | 3 ++- .../protected_tags/ee/_create_protected_tag.html.haml | 3 ++- qa/qa/page/project/settings/protected_tags.rb | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/helpers/dropdowns_helper.rb b/app/helpers/dropdowns_helper.rb index 64c5fae7d969..772a5f79a4dc 100644 --- a/app/helpers/dropdowns_helper.rb +++ b/app/helpers/dropdowns_helper.rb @@ -15,7 +15,10 @@ def dropdown_tag(toggle_text, options: {}, &block) dropdown_output = dropdown_toggle_link(toggle_text, data_attr, options) end - dropdown_output << content_tag(:div, class: "dropdown-menu dropdown-select #{options[:dropdown_class] if options.key?(:dropdown_class)}") do + content_tag_options = { class: "dropdown-menu dropdown-select #{options[:dropdown_class] if options.key?(:dropdown_class)}" } + content_tag_options[:data] = { qa_selector: "#{options[:dropdown_qa_selector]}" } if options[:dropdown_qa_selector] + + dropdown_output << content_tag(:div, content_tag_options) do output = [] if options.key?(:title) diff --git a/app/views/projects/protected_tags/_create_protected_tag.html.haml b/app/views/projects/protected_tags/_create_protected_tag.html.haml index 7a7390efe511..d19a6401fc82 100644 --- a/app/views/projects/protected_tags/_create_protected_tag.html.haml +++ b/app/views/projects/protected_tags/_create_protected_tag.html.haml @@ -1,8 +1,9 @@ - content_for :create_access_levels do - .create_access_levels-container{ data: { qa_selector: 'access_levels_content' } } + .create_access_levels-container = dropdown_tag('Select', options: { toggle_class: 'js-allowed-to-create wide', dropdown_class: 'dropdown-menu-selectable capitalize-header', + dropdown_qa_selector: 'access_levels_content', data: { field_name: 'protected_tag[create_access_levels_attributes][0][access_level]', input_id: 'create_access_levels_attributes', qa_selector: 'access_levels_dropdown' }}) = render 'projects/protected_tags/shared/create_protected_tag' diff --git a/ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml b/ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml index 5c2ee1641525..ebc712dcaa82 100644 --- a/ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml +++ b/ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml @@ -1,8 +1,9 @@ - content_for :create_access_levels do - .create_access_levels-container{ data: { qa_selector: 'access_levels_content' } } + .create_access_levels-container = dropdown_tag('Select', options: { toggle_class: 'js-allowed-to-create js-multiselect wide', dropdown_class: 'dropdown-menu-user dropdown-menu-selectable capitalize-header', filter: true, + dropdown_qa_selector: 'access_levels_content', data: { input_id: 'create_access_levels_attributes', default_label: 'Select', qa_selector: 'access_levels_dropdown' } }) .form-text.text-muted Only groups that diff --git a/qa/qa/page/project/settings/protected_tags.rb b/qa/qa/page/project/settings/protected_tags.rb index 0b9765dd9eaa..bf8f349cfd58 100644 --- a/qa/qa/page/project/settings/protected_tags.rb +++ b/qa/qa/page/project/settings/protected_tags.rb @@ -26,6 +26,8 @@ def set_tag(tag_name) end def choose_access_level_role(role) + return if find_element(:access_levels_dropdown).text == role + click_element :access_levels_dropdown within_element(:access_levels_content) do click_on role -- GitLab