diff options
-rw-r--r-- | GITLAB_SHELL_VERSION | 2 | ||||
-rw-r--r-- | app/views/layouts/nav/sidebar/_project.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/project_members/_new_project_member.html.haml | 4 | ||||
-rw-r--r-- | app/views/projects/project_members/_team.html.haml | 2 | ||||
-rw-r--r-- | doc/administration/gitaly/index.md | 6 | ||||
-rw-r--r-- | doc/ci/yaml/README.md | 4 | ||||
-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 |
11 files changed, 88 insertions, 11 deletions
diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index d127a0ff9f1..9da0a092a0d 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -8.3.3 +8.4.0
\ No newline at end of file diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml index 48025f9bd20..3625224fbcd 100644 --- a/app/views/layouts/nav/sidebar/_project.html.haml +++ b/app/views/layouts/nav/sidebar/_project.html.haml @@ -309,7 +309,7 @@ %span = _('General') = nav_link(controller: :project_members) do - = link_to project_project_members_path(@project), title: _('Members') do + = link_to project_project_members_path(@project), title: _('Members'), class: 'qa-link-members-settings' do %span = _('Members') - if can_edit diff --git a/app/views/projects/project_members/_new_project_member.html.haml b/app/views/projects/project_members/_new_project_member.html.haml index 517fd249f6e..5e21442bb60 100644 --- a/app/views/projects/project_members/_new_project_member.html.haml +++ b/app/views/projects/project_members/_new_project_member.html.haml @@ -3,7 +3,7 @@ = form_for @project_member, as: :project_member, url: project_project_members_path(@project), html: { class: 'users-project-form' } do |f| .form-group = label_tag :user_ids, "Select members to invite", class: "label-bold" - = users_select_tag(:user_ids, multiple: true, class: "input-clamp", scope: :all, email_user: true, placeholder: "Search for members to update or invite") + = users_select_tag(:user_ids, multiple: true, class: "input-clamp qa-member-select-input", scope: :all, email_user: true, placeholder: "Search for members to update or invite") .form-group = label_tag :access_level, "Choose a role permission", class: "label-bold" .select-wrapper @@ -17,5 +17,5 @@ = label_tag :expires_at, 'Access expiration date', class: 'label-bold' = text_field_tag :expires_at, nil, class: 'form-control js-access-expiration-date', placeholder: 'Expiration date' %i.clear-icon.js-clear-input - = f.submit "Add to project", class: "btn btn-success" + = f.submit "Add to project", class: "btn btn-success qa-add-member-button" = link_to "Import", import_project_project_members_path(@project), class: "btn btn-default", title: "Import members from another project" diff --git a/app/views/projects/project_members/_team.html.haml b/app/views/projects/project_members/_team.html.haml index 0c5a187f208..9682f8ac922 100644 --- a/app/views/projects/project_members/_team.html.haml +++ b/app/views/projects/project_members/_team.html.haml @@ -14,5 +14,5 @@ %button.member-search-btn{ type: "submit", "aria-label" => "Submit search" } = icon("search") = render 'shared/members/sort_dropdown' - %ul.content-list.members-list + %ul.content-list.members-list.qa-members-list = render partial: 'shared/members/member', collection: members, as: :member diff --git a/doc/administration/gitaly/index.md b/doc/administration/gitaly/index.md index b5e2b5448f7..e1b2a0a24eb 100644 --- a/doc/administration/gitaly/index.md +++ b/doc/administration/gitaly/index.md @@ -25,15 +25,13 @@ gitaly['prometheus_listen_addr'] = 'localhost:9236' ``` To change a Gitaly setting in installations from source you can edit -`/home/git/gitaly/config.toml`. +`/home/git/gitaly/config.toml`. Changes will be applied when you run +`service gitlab restart`. ```toml prometheus_listen_addr = "localhost:9236" ``` -Changes to `/home/git/gitaly/config.toml` are applied when you run `service -gitlab restart`. - ## Client-side GRPC logs Gitaly uses the [gRPC](https://grpc.io/) RPC framework. The Ruby gRPC diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index f0738252640..24d60a0cdcc 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -415,7 +415,7 @@ Four keys are now available: `refs`, `kubernetes` and `variables` and `changes`. Refs strategy equals to simplified only/except configuration, whereas kubernetes strategy accepts only `active` keyword. -### `variables` +### `only:variables` `variables` keyword is used to define variables expressions. In other words you can use predefined variables / project / group or @@ -460,7 +460,7 @@ end-to-end: Learn more about variables expressions on [a separate page][variables-expressions]. -### `changes` +### `only:changes` Using `changes` keyword with `only` or `except` makes it possible to define if a job should be created based on files modified by a git push event. @@ -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 |