diff options
author | Mark Lapierre <mlapierre@gitlab.com> | 2018-09-13 17:51:34 -0400 |
---|---|---|
committer | Mark Lapierre <mlapierre@gitlab.com> | 2018-10-10 15:17:22 -0400 |
commit | 5944ff572cfb220edf9e3730a448f7142d944959 (patch) | |
tree | e035e3c950774e58d32b8b30e3d644ce892b5bb5 /qa | |
parent | 8f13e0710cb457a17fceeb4e87c2efdd2df8ae19 (diff) | |
download | gitlab-ce-5944ff572cfb220edf9e3730a448f7142d944959.tar.gz |
Add test to add a new project member
Adds a new QA test and the required page objects and related changes
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/component/users_select.rb | 14 | ||||
-rw-r--r-- | qa/qa/page/project/menu.rb | 9 | ||||
-rw-r--r-- | qa/qa/page/project/settings/members.rb | 27 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb | 27 |
5 files changed, 79 insertions, 0 deletions
@@ -180,6 +180,7 @@ module QA autoload :SecretVariables, 'qa/page/project/settings/secret_variables' autoload :Runners, 'qa/page/project/settings/runners' autoload :MergeRequest, 'qa/page/project/settings/merge_request' + autoload :Members, 'qa/page/project/settings/members' end module Issue @@ -267,6 +268,7 @@ module QA autoload :GroupsFilter, 'qa/page/component/groups_filter' autoload :Select2, 'qa/page/component/select2' autoload :DropdownFilter, 'qa/page/component/dropdown_filter' + autoload :UsersSelect, 'qa/page/component/users_select' module Issuable autoload :Common, 'qa/page/component/issuable/common' diff --git a/qa/qa/page/component/users_select.rb b/qa/qa/page/component/users_select.rb new file mode 100644 index 00000000000..f88d6450a33 --- /dev/null +++ b/qa/qa/page/component/users_select.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module QA + module Page + module Component + module UsersSelect + def select_user(element, username) + find("#{element_selector_css(element)} input").set(username) + find('.ajax-users-dropdown .user-username', text: "@#{username}").click + end + end + end + end +end diff --git a/qa/qa/page/project/menu.rb b/qa/qa/page/project/menu.rb index d9f01c50f19..63c719e5fe1 100644 --- a/qa/qa/page/project/menu.rb +++ b/qa/qa/page/project/menu.rb @@ -9,6 +9,7 @@ module QA element :settings_link, 'link_to edit_project_path' element :repository_link, "title: _('Repository')" element :link_pipelines + element :link_members_settings element :pipelines_settings_link, "title: _('CI / CD')" element :operations_kubernetes_link, "title: _('Kubernetes')" element :operations_environments_link @@ -51,6 +52,14 @@ module QA end end + def click_members_settings + hover_settings do + within_submenu do + click_element :link_members_settings + end + end + end + def click_operations_kubernetes hover_operations do within_submenu do diff --git a/qa/qa/page/project/settings/members.rb b/qa/qa/page/project/settings/members.rb new file mode 100644 index 00000000000..7fed93ca83f --- /dev/null +++ b/qa/qa/page/project/settings/members.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + module Settings + class Members < Page::Base + include Page::Component::UsersSelect + + view 'app/views/projects/project_members/_new_project_member.html.haml' do + element :member_select_input + element :add_member_button + end + + view 'app/views/projects/project_members/_team.html.haml' do + element :members_list + end + + def add_member(username) + select_user :member_select_input, username + click_element :add_member_button + end + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb new file mode 100644 index 00000000000..b276c7ee579 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module QA + context :manage do + describe 'Add project member' do + it 'user adds project member' do + Runtime::Browser.visit(:gitlab, Page::Main::Login) + + user = Factory::Resource::User.fabricate! + + Page::Main::Menu.perform { |main| main.sign_out } + Page::Main::Login.act { sign_in_using_credentials } + + Factory::Resource::Project.fabricate! do |resource| + resource.name = 'add-member-project' + end + + Page::Project::Menu.act { click_members_settings } + Page::Project::Settings::Members.perform do |page| + page.add_member(user.username) + end + + expect(page).to have_content("#{user.name} @#{user.username} Given access") + end + end + end +end |