summaryrefslogtreecommitdiff
path: root/qa/qa/page/component
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/page/component')
-rw-r--r--qa/qa/page/component/content_editor.rb5
-rw-r--r--qa/qa/page/component/dropdown.rb14
-rw-r--r--qa/qa/page/component/groups_filter.rb45
-rw-r--r--qa/qa/page/component/invite_members_modal.rb20
-rw-r--r--qa/qa/page/component/wiki_page_form.rb10
5 files changed, 50 insertions, 44 deletions
diff --git a/qa/qa/page/component/content_editor.rb b/qa/qa/page/component/content_editor.rb
index e9fc575ae39..a9abda42610 100644
--- a/qa/qa/page/component/content_editor.rb
+++ b/qa/qa/page/component/content_editor.rb
@@ -15,7 +15,6 @@ module QA
base.view 'app/assets/javascripts/content_editor/components/toolbar_text_style_dropdown.vue' do
element :text_style_dropdown
- element :text_style_menu_item
end
base.view 'app/assets/javascripts/content_editor/components/toolbar_image_button.vue' do
@@ -33,9 +32,7 @@ module QA
# wait for text style option to become active after typing
has_active_element?(:text_style_dropdown, wait: 1)
click_element(:text_style_dropdown)
- within_element(:text_style_dropdown) do
- click_element(:text_style_menu_item, text_style: heading)
- end
+ find_element(:text_style_dropdown).find('li', text: heading).click
end
end
diff --git a/qa/qa/page/component/dropdown.rb b/qa/qa/page/component/dropdown.rb
index e6204fb5332..c3e0fefee0d 100644
--- a/qa/qa/page/component/dropdown.rb
+++ b/qa/qa/page/component/dropdown.rb
@@ -25,6 +25,12 @@ module QA
find('span.gl-dropdown-button-text').text
end
+ def all_items
+ raise NotImplementedError if use_select2?
+
+ find_all("li.gl-dropdown-item").map(&:text)
+ end
+
def clear_current_selection_if_present
return super if use_select2?
@@ -40,7 +46,12 @@ module QA
def search_item(item_text)
return super if use_select2?
- find('div.gl-search-box-by-type input[type="Search"]').set(item_text)
+ find('div.gl-listbox-search input[type="Search"]').set(item_text)
+ wait_for_search_to_complete
+ end
+
+ def send_keys_to_search(item_text)
+ find('div.gl-listbox-search input[type="Search"]').send_keys(item_text)
wait_for_search_to_complete
end
@@ -103,6 +114,7 @@ module QA
def use_select2?
@use_select2 ||= has_css?('.select2-container', wait: 1)
end
+
# rubocop:enable Gitlab/PredicateMemoization
end
end
diff --git a/qa/qa/page/component/groups_filter.rb b/qa/qa/page/component/groups_filter.rb
index ec59d010718..ea91ced8679 100644
--- a/qa/qa/page/component/groups_filter.rb
+++ b/qa/qa/page/component/groups_filter.rb
@@ -24,36 +24,29 @@ module QA
private
+ # Check if a group exists in private or public tab
+ # @param name [String] group name
+ # @return [Boolean] whether a group with given name exists
def has_filtered_group?(name)
- # Filter and submit to reload the page and only retrieve the filtered results
- find_element(:groups_filter_field).set(name).send_keys(:return)
-
- # Since we submitted after filtering, the presence of
- # groups_list_tree_container means we have the complete filtered list
- # of groups
- has_element?(:groups_list_tree_container, wait: QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME)
- # If there are no groups we'll know immediately because we filtered the list
- if page.has_text?('No groups or projects matched your search',
-wait: 0) || page.has_text?('No groups matched your search', wait: 0)
- return false unless has_element?(:public_groups_tab)
-
- # Try for public groups
- click_element(:public_groups_tab)
- # Filter and submit to reload the page and only retrieve the filtered results
- find_element(:groups_filter_field).set(name).send_keys(:return)
-
- # Since we submitted after filtering, the presence of
- # groups_list_tree_container means we have the complete filtered list
- # of groups
- has_element?(:groups_list_tree_container, wait: QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME)
-
- return false if page.has_text?('No groups or projects matched your search',
-wait: 0) || page.has_text?('No groups matched your search', wait: 0)
- end
+ filter_group(name)
+ return true if page.has_link?(name, wait: 0) # element containing link to group
+
+ return false unless has_element?(:public_groups_tab, wait: 0)
- # The name will be present as filter input so we check for a link, not text
+ # Check public groups
+ click_element(:public_groups_tab)
+ filter_group(name)
page.has_link?(name, wait: 0)
end
+
+ # Filter by group name
+ # @param name [String] group name
+ # @return [Boolean] whether the filter returned any group
+ def filter_group(name)
+ fill_element(:groups_filter_field, name).send_keys(:return)
+ finished_loading?
+ has_element?(:groups_list_tree_container, wait: 1)
+ end
end
end
end
diff --git a/qa/qa/page/component/invite_members_modal.rb b/qa/qa/page/component/invite_members_modal.rb
index 295b5134bd5..eb791594d22 100644
--- a/qa/qa/page/component/invite_members_modal.rb
+++ b/qa/qa/page/component/invite_members_modal.rb
@@ -41,7 +41,7 @@ module QA
click_element :invite_a_group_button
end
- def add_member(username, access_level = 'Developer')
+ def add_member(username, access_level = 'Developer', refresh_page: true)
open_invite_members_modal
within_element(:invite_members_modal_content) do
@@ -51,10 +51,10 @@ module QA
set_access_level(access_level)
end
- send_invite
+ send_invite(refresh_page)
end
- def invite_group(group_name, access_level = 'Guest')
+ def invite_group(group_name, access_level = 'Guest', refresh_page: true)
open_invite_group_modal
within_element(:invite_members_modal_content) do
@@ -69,7 +69,13 @@ module QA
set_access_level(access_level)
end
- send_invite
+ send_invite(refresh_page)
+ end
+
+ def send_invite(refresh = false)
+ click_element :invite_button
+ Support::WaitForRequests.wait_for_requests
+ page.refresh if refresh
end
private
@@ -78,12 +84,6 @@ module QA
# Guest option is selected by default, skipping these steps if desired option is 'Guest'
select_element(:access_level_dropdown, access_level) unless access_level == 'Guest'
end
-
- def send_invite
- click_element :invite_button
- Support::WaitForRequests.wait_for_requests
- page.refresh
- end
end
end
end
diff --git a/qa/qa/page/component/wiki_page_form.rb b/qa/qa/page/component/wiki_page_form.rb
index 7a7329e6110..9143a25d9ab 100644
--- a/qa/qa/page/component/wiki_page_form.rb
+++ b/qa/qa/page/component/wiki_page_form.rb
@@ -17,7 +17,10 @@ module QA
base.view 'app/assets/javascripts/vue_shared/components/markdown/markdown_editor.vue' do
element :markdown_editor_form_field
- element :editing_mode_button
+ end
+
+ base.view 'app/assets/javascripts/vue_shared/components/markdown/editor_mode_dropdown.vue' do
+ element :editing_mode_switcher
end
base.view 'app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue' do
@@ -55,8 +58,9 @@ module QA
end
def use_new_editor
- within_element(:editing_mode_button) do
- find('label', text: 'Rich text').click
+ click_element(:editing_mode_switcher)
+ within_element(:editing_mode_switcher) do
+ find('button', text: 'Rich text').click
end
wait_until(reload: false) do