diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-14 12:07:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-14 12:07:42 +0000 |
commit | cacc3815006ab7d3828ebe8903f95154b27a6e21 (patch) | |
tree | 5adc693664d1ca383d19f8f165b37eea2318387f /qa | |
parent | ce684df4733d86a49126792721f549612a778590 (diff) | |
download | gitlab-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.rb | 90 | ||||
-rw-r--r-- | qa/qa/page/component/members/invite_members_modal.rb | 92 | ||||
-rw-r--r-- | qa/qa/page/component/members/members_filter.rb | 27 | ||||
-rw-r--r-- | qa/qa/page/component/members/members_table.rb | 99 | ||||
-rw-r--r-- | qa/qa/page/component/members/remove_group_modal.rb | 38 | ||||
-rw-r--r-- | qa/qa/page/component/members/remove_member_modal.rb | 38 | ||||
-rw-r--r-- | qa/qa/page/component/members_filter.rb | 25 | ||||
-rw-r--r-- | qa/qa/page/group/members.rb | 92 | ||||
-rw-r--r-- | qa/qa/page/project/members.rb | 45 |
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 |