summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-14 12:07:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-14 12:07:42 +0000
commitcacc3815006ab7d3828ebe8903f95154b27a6e21 (patch)
tree5adc693664d1ca383d19f8f165b37eea2318387f /qa
parentce684df4733d86a49126792721f549612a778590 (diff)
downloadgitlab-ce-cacc3815006ab7d3828ebe8903f95154b27a6e21.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/page/component/invite_members_modal.rb90
-rw-r--r--qa/qa/page/component/members/invite_members_modal.rb92
-rw-r--r--qa/qa/page/component/members/members_filter.rb27
-rw-r--r--qa/qa/page/component/members/members_table.rb99
-rw-r--r--qa/qa/page/component/members/remove_group_modal.rb38
-rw-r--r--qa/qa/page/component/members/remove_member_modal.rb38
-rw-r--r--qa/qa/page/component/members_filter.rb25
-rw-r--r--qa/qa/page/group/members.rb92
-rw-r--r--qa/qa/page/project/members.rb45
9 files changed, 298 insertions, 248 deletions
diff --git a/qa/qa/page/component/invite_members_modal.rb b/qa/qa/page/component/invite_members_modal.rb
deleted file mode 100644
index eb791594d22..00000000000
--- a/qa/qa/page/component/invite_members_modal.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Page
- module Component
- module InviteMembersModal
- extend QA::Page::PageConcern
-
- def self.included(base)
- super
-
- base.view 'app/assets/javascripts/invite_members/components/invite_modal_base.vue' do
- element :invite_button
- element :access_level_dropdown
- element :invite_members_modal_content
- end
-
- base.view 'app/assets/javascripts/invite_members/components/group_select.vue' do
- element :group_select_dropdown_search_field
- element :group_select_dropdown_item
- end
-
- base.view 'app/assets/javascripts/invite_members/components/members_token_select.vue' do
- element :members_token_select_input
- end
-
- base.view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do
- element :invite_a_group_button
- end
-
- base.view 'app/assets/javascripts/invite_members/constants.js' do
- element :invite_members_button
- end
- end
-
- def open_invite_members_modal
- click_element :invite_members_button
- end
-
- def open_invite_group_modal
- click_element :invite_a_group_button
- end
-
- def add_member(username, access_level = 'Developer', refresh_page: true)
- open_invite_members_modal
-
- within_element(:invite_members_modal_content) do
- fill_element(:members_token_select_input, username)
- Support::WaitForRequests.wait_for_requests
- click_button(username, match: :prefer_exact)
- set_access_level(access_level)
- end
-
- send_invite(refresh_page)
- end
-
- def invite_group(group_name, access_level = 'Guest', refresh_page: true)
- open_invite_group_modal
-
- within_element(:invite_members_modal_content) do
- click_button 'Select a group'
-
- Support::Waiter.wait_until { has_element?(:group_select_dropdown_item) }
-
- fill_element :group_select_dropdown_search_field, group_name
- Support::WaitForRequests.wait_for_requests
- click_button group_name
-
- set_access_level(access_level)
- end
-
- 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
-
- def set_access_level(access_level)
- # 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
- end
- end
- end
-end
diff --git a/qa/qa/page/component/members/invite_members_modal.rb b/qa/qa/page/component/members/invite_members_modal.rb
new file mode 100644
index 00000000000..0220bb1e4fc
--- /dev/null
+++ b/qa/qa/page/component/members/invite_members_modal.rb
@@ -0,0 +1,92 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Members
+ module InviteMembersModal
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/assets/javascripts/invite_members/components/invite_modal_base.vue' do
+ element :invite_button
+ element :access_level_dropdown
+ element :invite_members_modal_content
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/group_select.vue' do
+ element :group_select_dropdown_search_field
+ element :group_select_dropdown_item
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/members_token_select.vue' do
+ element :members_token_select_input
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do
+ element :invite_a_group_button
+ end
+
+ base.view 'app/assets/javascripts/invite_members/constants.js' do
+ element :invite_members_button
+ end
+ end
+
+ def open_invite_members_modal
+ click_element :invite_members_button
+ end
+
+ def open_invite_group_modal
+ click_element :invite_a_group_button
+ end
+
+ def add_member(username, access_level = 'Developer', refresh_page: true)
+ open_invite_members_modal
+
+ within_element(:invite_members_modal_content) do
+ fill_element(:members_token_select_input, username)
+ Support::WaitForRequests.wait_for_requests
+ click_button(username, match: :prefer_exact)
+ set_access_level(access_level)
+ end
+
+ send_invite(refresh_page)
+ end
+
+ def invite_group(group_name, access_level = 'Guest', refresh_page: true)
+ open_invite_group_modal
+
+ within_element(:invite_members_modal_content) do
+ click_button 'Select a group'
+
+ Support::Waiter.wait_until { has_element?(:group_select_dropdown_item) }
+
+ fill_element :group_select_dropdown_search_field, group_name
+ Support::WaitForRequests.wait_for_requests
+ click_button group_name
+
+ set_access_level(access_level)
+ end
+
+ 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
+
+ def set_access_level(access_level)
+ # 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
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/members/members_filter.rb b/qa/qa/page/component/members/members_filter.rb
new file mode 100644
index 00000000000..8803211ea86
--- /dev/null
+++ b/qa/qa/page/component/members/members_filter.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Members
+ module MembersFilter
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue' do
+ element :search_bar_input
+ element :search_button
+ end
+ end
+
+ def search_member(username)
+ fill_element :search_bar_input, username
+ click_element :search_button
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/members/members_table.rb b/qa/qa/page/component/members/members_table.rb
new file mode 100644
index 00000000000..46010a0f9ab
--- /dev/null
+++ b/qa/qa/page/component/members/members_table.rb
@@ -0,0 +1,99 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Members
+ module MembersTable
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.class_eval do
+ include MembersFilter
+ include RemoveMemberModal
+ include RemoveGroupModal
+ end
+
+ base.view 'app/assets/javascripts/members/components/table/members_table.vue' do
+ element :member_row
+ end
+
+ base.view 'app/assets/javascripts/members/components/table/role_dropdown.vue' do
+ element :access_level_dropdown
+ element :access_level_link
+ end
+
+ base.view 'app/assets/javascripts/members/components/action_dropdowns/user_action_dropdown.vue' do
+ element :user_action_dropdown
+ end
+
+ base.view 'app/assets/javascripts/members/components/action_dropdowns/remove_member_dropdown_item.vue' do
+ element :delete_member_dropdown_item
+ end
+
+ base.view 'app/assets/javascripts/members/components/action_buttons/approve_access_request_button.vue' do
+ element :approve_access_request_button
+ end
+
+ base.view 'app/assets/javascripts/members/components/members_tabs.vue' do
+ element :groups_list_tab
+ end
+
+ base.view 'app/assets/javascripts/members/components/action_buttons/remove_group_link_button.vue' do
+ element :remove_group_link_button
+ end
+ end
+
+ def update_access_level(username, access_level)
+ search_member(username)
+
+ within_element(:member_row, text: username) do
+ click_element :access_level_dropdown
+ click_element :access_level_link, text: access_level
+ end
+ end
+
+ def remove_member(username)
+ within_element(:member_row, text: username) do
+ click_element :user_action_dropdown
+ click_element :delete_member_dropdown_item
+ end
+
+ confirm_remove_member
+ end
+
+ def approve_access_request(username)
+ within_element(:member_row, text: username) do
+ click_element :approve_access_request_button
+ end
+ end
+
+ def deny_access_request(username)
+ within_element(:member_row, text: username) do
+ click_element :delete_member_button
+ end
+
+ confirm_remove_member
+ end
+
+ def remove_group(group_name)
+ click_element :groups_list_tab
+
+ within_element(:member_row, text: group_name) do
+ click_element :remove_group_link_button
+ end
+
+ confirm_remove_group
+ end
+
+ def has_group?(group_name)
+ click_element :groups_list_tab
+ has_element?(:member_row, text: group_name)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/members/remove_group_modal.rb b/qa/qa/page/component/members/remove_group_modal.rb
new file mode 100644
index 00000000000..03c51757b62
--- /dev/null
+++ b/qa/qa/page/component/members/remove_group_modal.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Members
+ module RemoveGroupModal
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/assets/javascripts/members/components/modals/remove_group_link_modal.vue' do
+ element :remove_group_link_modal_content
+ element :remove_group_button
+ end
+ end
+
+ def confirm_remove_group
+ within_element(:remove_group_link_modal_content) do
+ wait_for_enabled_remove_group_button
+
+ click_element :remove_group_button
+ end
+ end
+
+ private
+
+ def wait_for_enabled_remove_group_button
+ retry_until(sleep_interval: 1, message: 'Waiting for remove group button to be enabled') do
+ has_element?(:remove_group_button, disabled: false, wait: 3)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/members/remove_member_modal.rb b/qa/qa/page/component/members/remove_member_modal.rb
new file mode 100644
index 00000000000..b7b81040ba7
--- /dev/null
+++ b/qa/qa/page/component/members/remove_member_modal.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Members
+ module RemoveMemberModal
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/assets/javascripts/members/components/modals/remove_member_modal.vue' do
+ element :remove_member_modal
+ element :remove_member_button
+ end
+ end
+
+ def confirm_remove_member
+ within_element(:remove_member_modal) do
+ wait_for_enabled_remove_member_button
+
+ click_element :remove_member_button
+ end
+ end
+
+ private
+
+ def wait_for_enabled_remove_member_button
+ retry_until(sleep_interval: 1, message: 'Waiting for remove member button to be enabled') do
+ has_element?(:remove_member_button, disabled: false, wait: 3)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/members_filter.rb b/qa/qa/page/component/members_filter.rb
deleted file mode 100644
index fce4560d255..00000000000
--- a/qa/qa/page/component/members_filter.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Page
- module Component
- module MembersFilter
- extend QA::Page::PageConcern
-
- def self.included(base)
- super
-
- base.view 'app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue' do
- element :search_bar_input
- element :search_button
- end
- end
-
- def search_member(username)
- fill_element :search_bar_input, username
- click_element :search_button
- end
- end
- end
- end
-end
diff --git a/qa/qa/page/group/members.rb b/qa/qa/page/group/members.rb
index 376f65ee8ac..7756d3d7f08 100644
--- a/qa/qa/page/group/members.rb
+++ b/qa/qa/page/group/members.rb
@@ -4,96 +4,8 @@ module QA
module Page
module Group
class Members < Page::Base
- include Page::Component::InviteMembersModal
- include Page::Component::MembersFilter
-
- view 'app/assets/javascripts/members/components/modals/remove_member_modal.vue' do
- element :remove_member_modal
- element :remove_member_button
- end
-
- view 'app/assets/javascripts/pages/groups/group_members/index.js' do
- element :member_row
- element :groups_list
- element :group_row
- end
-
- view 'app/assets/javascripts/members/components/table/role_dropdown.vue' do
- element :access_level_dropdown
- element :access_level_link
- end
-
- view 'app/assets/javascripts/members/components/action_dropdowns/user_action_dropdown.vue' do
- element :user_action_dropdown
- end
-
- view 'app/assets/javascripts/members/components/action_dropdowns/remove_member_dropdown_item.vue' do
- element :delete_member_dropdown_item
- end
-
- view 'app/assets/javascripts/members/components/action_buttons/approve_access_request_button.vue' do
- element :approve_access_request_button
- end
-
- view 'app/assets/javascripts/members/components/members_tabs.vue' do
- element :groups_list_tab
- end
-
- def update_access_level(username, access_level)
- search_member(username)
-
- within_element(:member_row, text: username) do
- click_element :access_level_dropdown
- click_element :access_level_link, text: access_level
- end
- end
-
- def remove_member(username)
- within_element(:member_row, text: username) do
- click_element :user_action_dropdown
- click_element :delete_member_dropdown_item
- end
-
- confirm_remove_member
- end
-
- def deny_access_request(username)
- within_element(:member_row, text: username) do
- click_element :delete_member_button
- end
-
- confirm_remove_member
- end
-
- def approve_access_request(username)
- within_element(:member_row, text: username) do
- click_element :approve_access_request_button
- end
- end
-
- def has_existing_group_share?(group_name)
- click_element :groups_list_tab
-
- within_element(:groups_list) do
- has_element?(:group_row, text: group_name)
- end
- end
-
- private
-
- def confirm_remove_member
- within_element(:remove_member_modal) do
- wait_for_enabled_remove_member_button
-
- click_element :remove_member_button
- end
- end
-
- def wait_for_enabled_remove_member_button
- retry_until(sleep_interval: 1, message: 'Waiting for remove member button to be enabled') do
- has_element?(:remove_member_button, disabled: false, wait: 3)
- end
- end
+ include Page::Component::Members::InviteMembersModal
+ include Page::Component::Members::MembersTable
end
end
end
diff --git a/qa/qa/page/project/members.rb b/qa/qa/page/project/members.rb
index 4692f3621b8..463e3ca6fca 100644
--- a/qa/qa/page/project/members.rb
+++ b/qa/qa/page/project/members.rb
@@ -4,49 +4,8 @@ module QA
module Page
module Project
class Members < Page::Base
- include QA::Page::Component::InviteMembersModal
- include QA::Page::Component::MembersFilter
-
- view 'app/assets/javascripts/members/components/members_tabs.vue' do
- element :groups_list_tab
- end
-
- view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do
- element :invite_a_group_button
- end
-
- view 'app/assets/javascripts/invite_members/constants.js' do
- element :invite_members_button
- end
-
- view 'app/assets/javascripts/pages/projects/project_members/index.js' do
- element :group_row
- end
-
- view 'app/assets/javascripts/members/components/action_buttons/remove_group_link_button.vue' do
- element :delete_group_access_link
- end
-
- view 'app/assets/javascripts/members/components/modals/remove_group_link_modal.vue' do
- element :remove_group_link_modal_content
- end
-
- def remove_group(group_name)
- click_element :groups_list_tab
-
- within_element(:group_row, text: group_name) do
- click_element :delete_group_access_link
- end
-
- within_element(:remove_group_link_modal_content) do
- click_button 'Remove group'
- end
- end
-
- def has_group?(group_name)
- click_element :groups_list_tab
- has_element?(:group_row, text: group_name)
- end
+ include Page::Component::Members::InviteMembersModal
+ include Page::Component::Members::MembersTable
end
end
end