Skip to content
代码片段 群组 项目
提交 c0bc7179 编辑于 作者: Anastasia McDonald's avatar Anastasia McDonald
浏览文件

Merge branch 'qa/agnostic_dropdown' into 'master'

Adds agnostic dropdown helper for QA tests

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/103936



Merged-by: default avatarAnastasia McDonald <amcdonald@gitlab.com>
Approved-by: default avatarAnastasia McDonald <amcdonald@gitlab.com>
Co-authored-by: default avatarSean Gregory <sgregory@gitlab.com>
No related branches found
No related tags found
无相关合并请求
......@@ -7,7 +7,7 @@ module Admin
module Settings
class Templates < QA::Page::Base
include ::QA::Page::Settings::Common
include ::QA::Page::Component::Select2
include ::QA::Page::Component::Dropdown
view 'ee/app/views/admin/application_settings/_custom_templates_form.html.haml' do
element :custom_project_template_container
......@@ -29,7 +29,14 @@ def choose_custom_project_template(path)
within_element(:custom_project_template_container) do
clear_current_selection_if_present
expand_select_list
unless use_select2?
search_and_select(path)
click_element(:save_changes_button)
return # rubocop:disable Cop/AvoidReturnFromBlocks
end
end
search_and_select(path)
click_element(:save_changes_button)
end
......
......@@ -12,7 +12,7 @@ def self.prepended(base)
super
base.class_eval do
prepend ::QA::Page::Component::Select2
prepend ::QA::Page::Component::Dropdown
prepend ::QA::Page::Settings::Common
view 'ee/app/views/groups/_custom_project_templates_setting.html.haml' do
......@@ -57,7 +57,16 @@ def choose_custom_project_template(path)
within_element(:custom_project_templates_container) do
clear_current_selection_if_present
expand_select_list
unless use_select2?
search_and_select(path)
click_element(:save_changes_button)
return # rubocop:disable Cop/AvoidReturnFromBlocks
end
end
# TODO: Remove the following two lines and the use_select2?
# check above once ff vue_group_select is default.
search_and_select(path)
click_element(:save_changes_button)
end
......
# frozen_string_literal: true
module QA
module Page
module Component
module Dropdown
include Select2
def select_item(item_text)
return super if use_select2?
find('li.gl-new-dropdown-item', text: item_text, match: :prefer_exact).click
end
def has_item?(item_text)
return super if use_select2?
has_css?('li.gl-new-dropdown-item', text: item_text, match: :prefer_exact)
end
def current_selection
return super if use_select2?
expand_select_list unless dropdown_open?
find('span.gl-new-dropdown-button-text').text
end
def clear_current_selection_if_present
return super if use_select2?
expand_select_list unless dropdown_open?
if has_css?('button[data-testid="listbox-reset-button"]')
find('button[data-testid="listbox-reset-button"]').click
elsif dropdown_open?
expand_select_list
end
end
def search_item(item_text)
return super if use_select2?
find('div.gl-search-box-by-type input[type="Search"]').set(item_text)
wait_for_search_to_complete
end
def search_and_select(item_text)
return super if use_select2?
QA::Runtime::Logger.info "Searching and selecting: #{item_text}"
search_item(item_text)
unless has_item?(item_text)
raise QA::Page::Base::ElementNotFound, %(Couldn't find option named "#{item_text}")
end
select_item(item_text)
end
def search_and_select_exact(item_text)
return super if use_select2?
QA::Runtime::Logger.info "Searching and selecting: #{item_text}"
search_item(item_text)
unless has_item?(item_text)
raise QA::Page::Base::ElementNotFound, %(Couldn't find option named "#{item_text}")
end
find('li.gl-new-dropdown-item span:nth-child(2)', text: item_text, exact_text: true).click
end
def expand_select_list
return super if use_select2?
find('svg.dropdown-chevron').click
end
def wait_for_search_to_complete
return super if use_select2?
Support::WaitForRequests.wait_for_requests
has_css?('div[data-testid="listbox-search-loader"]', wait: 1)
has_no_css?('div[data-testid="listbox-search-loader"]')
end
def dropdown_open?
return super if use_select2?
has_css?('ul.gl-new-dropdown-contents', wait: 1)
end
private
# rubocop:disable Gitlab/PredicateMemoization
def use_select2?
@use_select2 ||= has_css?('.select2-container', wait: 1)
end
# rubocop:enable Gitlab/PredicateMemoization
end
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册