From f9407a4e83093ab4f2f9b93563c3b1777a521213 Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Tue, 29 Oct 2019 23:17:55 +1000 Subject: [PATCH 1/8] adding css selectors --- app/helpers/form_helper.rb | 4 ++-- .../projects/project_members/_new_project_member.html.haml | 2 +- app/views/shared/empty_states/_merge_requests.html.haml | 2 +- .../issuable/form/_metadata_merge_request_assignee.html.haml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/helpers/form_helper.rb b/app/helpers/form_helper.rb index bdb0a881b080..ba3b56c56397 100644 --- a/app/helpers/form_helper.rb +++ b/app/helpers/form_helper.rb @@ -21,10 +21,10 @@ module FormHelper def assignees_dropdown_options(issuable_type) dropdown_data = { - toggle_class: 'js-user-search js-assignee-search js-multiselect js-save-user-data', + toggle_class: 'js-user-search js-assignee-search js-multiselect js-save-user-data qa-assignee-search', title: 'Select assignee', filter: true, - dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-assignee', + dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-assignee qa-dropdown-menu-assignee', placeholder: _('Search users'), data: { first_user: current_user&.username, 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 149b0d6cddd7..010028a510ec 100644 --- a/app/views/projects/project_members/_new_project_member.html.haml +++ b/app/views/projects/project_members/_new_project_member.html.haml @@ -7,7 +7,7 @@ .form-group = label_tag :access_level, _("Choose a role permission"), class: "label-bold" .select-wrapper - = select_tag :access_level, options_for_select(ProjectMember.access_level_roles, @project_member.access_level), class: "form-control project-access-select select-control" + = select_tag :access_level, options_for_select(ProjectMember.access_level_roles, @project_member.access_level), class: "form-control project-access-select select-control", data: { qa_selector: "project_access_level" } = icon('chevron-down') .form-text.text-muted.append-bottom-10 - permissions_docs_path = help_page_path('user/permissions') diff --git a/app/views/shared/empty_states/_merge_requests.html.haml b/app/views/shared/empty_states/_merge_requests.html.haml index be5b1c6b6cee..99426272b7bf 100644 --- a/app/views/shared/empty_states/_merge_requests.html.haml +++ b/app/views/shared/empty_states/_merge_requests.html.haml @@ -42,4 +42,4 @@ - if project_select_button = render 'shared/new_project_item_select', path: 'merge_requests/new', label: _('New merge request'), type: :merge_requests, with_feature_enabled: 'merge_requests' - else - = link_to _('New merge request'), button_path, class: 'btn btn-success', title: _('New merge request'), id: 'new_merge_request_link' + = link_to _('New merge request'), button_path, class: 'btn btn-success', 'data-qa-selector':'new_merge_request_link', title: _('New merge request'), id: 'new_merge_request_link' diff --git a/app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml b/app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml index 60c34094108d..94c8503f2612 100644 --- a/app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml +++ b/app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml @@ -3,6 +3,6 @@ .issuable-form-select-holder = form.hidden_field :assignee_id - = dropdown_tag(user_dropdown_label(issuable.assignee_id, "Assignee"), options: { toggle_class: "js-dropdown-keep-input js-user-search js-issuable-form-dropdown js-assignee-search", title: "Select assignee", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable dropdown-menu-assignee js-filter-submit", + = dropdown_tag(user_dropdown_label(issuable.assignee_id, "Assignee"), options: { toggle_class: "js-dropdown-keep-input js-user-search js-issuable-form-dropdown js-assignee-search qa-assignee-search", title: "Select assignee", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable dropdown-menu-assignee js-filter-submit qa-dropdown-menu-assignee", placeholder: "Search assignee", data: { first_user: current_user.try(:username), null_user: true, current_user: true, project_id: issuable.project.try(:id), selected: issuable.assignee_id, field_name: "#{issuable.class.model_name.param_key}[assignee_id]", default_label: "Assignee"} }) = link_to 'Assign to me', '#', class: "assign-to-me-link qa-assign-to-me-link #{'hide' if issuable.assignee_id == current_user.id}" -- GitLab From b51ff0b18a806b05e053f7d26238b6c4ec1c0601 Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Wed, 30 Oct 2019 13:22:50 +1000 Subject: [PATCH 2/8] adding page objects --- qa/qa/page/component/note.rb | 8 +++++++ qa/qa/page/merge_request/new.rb | 20 +++++++++++++++++ qa/qa/page/merge_request/show.rb | 30 ++++++++++++++++++++++++-- qa/qa/page/project/settings/members.rb | 8 ++++++- 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/qa/qa/page/component/note.rb b/qa/qa/page/component/note.rb index c85fa690d6cd..83df06e53b36 100644 --- a/qa/qa/page/component/note.rb +++ b/qa/qa/page/component/note.rb @@ -36,6 +36,14 @@ module QA base.view 'app/assets/javascripts/diffs/components/diff_file_header.vue' do element :toggle_comments_button end + + base.view 'app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue' do + element :apply_btn + end + + base.view 'app/assets/javascripts/vue_shared/components/markdown/header.vue' do + element :suggestion_btn + end end def start_discussion(text) diff --git a/qa/qa/page/merge_request/new.rb b/qa/qa/page/merge_request/new.rb index f877ba76b38d..aceeb4a83eef 100644 --- a/qa/qa/page/merge_request/new.rb +++ b/qa/qa/page/merge_request/new.rb @@ -8,6 +8,10 @@ module QA element :issuable_create_button end + view 'app/views/shared/empty_states/_merge_requests.html.haml' do + element :new_merge_request_link + end + view 'app/views/shared/issuable/form/_title.html.haml' do element :issuable_form_title end @@ -32,10 +36,19 @@ module QA element :assign_to_me_link end + view 'app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml' do + element :assignee_search + element :dropdown_menu_assignee + end + def create_merge_request click_element :issuable_create_button end + def open_merge_request + click_element :new_merge_request_link + end + def fill_title(title) fill_element :issuable_form_title, title end @@ -57,6 +70,13 @@ module QA click_link label.title end + def select_assignee(assignee) + click_element :assignee_search + within_element(:dropdown_menu_assignee) do + click_on assignee + end + end + def assign_to_me click_element :assign_to_me_link end diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb index 14b8c420b161..a6fb56db2741 100644 --- a/qa/qa/page/merge_request/show.rb +++ b/qa/qa/page/merge_request/show.rb @@ -4,8 +4,7 @@ module QA module Page module MergeRequest class Show < Page::Base - include Page::Component::Note - + include Page::Component::Note view 'app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue' do element :dropdown_toggle element :download_email_patches @@ -60,6 +59,12 @@ module QA element :edit_button end + view 'app/assets/javascripts/sidebar/components/assignees/assignee_title.vue' do + element :assignee_edit_link + element :assignee_title + end + + def click_discussions_tab click_element :notes_tab end @@ -178,6 +183,27 @@ module QA fill_element :reply_input, text end + def insert_suggestion_to_diff(text) + wait(interval: 5) do + has_text?("No newline at end of file") + end + all_elements(:new_diff_line).first.hover + click_element :diff_comment + click_element :suggestion_btn + send_keys_to_element :reply_input, text + click_element :reply_comment_button + end + + def assign(user) + click_element(:assignee_edit_link) + select_user(user.username) + click_body + end + + def click_apply + click_element :apply_btn + end + def edit! click_element :edit_button end diff --git a/qa/qa/page/project/settings/members.rb b/qa/qa/page/project/settings/members.rb index 2ef018fd983a..16c5ffdcd962 100644 --- a/qa/qa/page/project/settings/members.rb +++ b/qa/qa/page/project/settings/members.rb @@ -7,9 +7,9 @@ module QA class Members < Page::Base include Page::Component::UsersSelect include QA::Page::Component::Select2 - view 'app/views/projects/project_members/_new_project_member.html.haml' do element :member_select_input + element :project_access_level element :add_member_button end @@ -47,6 +47,12 @@ module QA click_element :add_member_button end + def add_member_with_access_level(username, access_level) + select_user :member_select_input, username + select_element :project_access_level, "#{access_level.titleize}" + click_element :add_member_button + end + def remove_group(group_name) click_element :invite_group_tab page.accept_alert do -- GitLab From 424fcdae59ccf8877b54930473003580b155228c Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Wed, 30 Oct 2019 13:23:03 +1000 Subject: [PATCH 3/8] adding tests --- .../project/add_project_member_spec.rb | 17 +++-- .../apply_merge_request_suggestion_spec.rb | 61 ++++++++++++++++ .../assign_merge_request_spec.rb | 71 +++++++++++++++++++ 3 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb 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 index 07298b8a9be7..8d3618090cee 100644 --- 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 @@ -3,23 +3,28 @@ module QA context 'Manage' do describe 'Add project member' do - it 'user adds project member' do + before do Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.perform(&:sign_in_using_credentials) - user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) + @dev_user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) - project = Resource::Project.fabricate_via_api! do |resource| + @project = Resource::Project.fabricate_via_api! do |resource| resource.name = 'add-member-project' end - project.visit! + @project.visit! + end + it 'developer-user adds into project member' do Page::Project::Menu.perform(&:go_to_members_settings) Page::Project::Settings::Members.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName - page.add_member(user.username) + page.add_member_with_access_level(@dev_user.username, "developer") + + expect(page).to have_content(@dev_user.username) + expect(page).to have_content("Developer") end - expect(page).to have_content(/@#{user.username}(\n| )?Given access/) + expect(page).to have_content(/@#{@dev_user.username}(\n| )?Given access/) end end end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb new file mode 100644 index 000000000000..c72cde37b70d --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +module QA + context 'Create' do + describe 'Merge request creation' do + before do + Runtime::Browser.visit(:gitlab, Page::Main::Login) + Page::Main::Login.perform(&:sign_in_using_credentials) + + @dev_user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) + + @project = Resource::Project.fabricate_via_api! do |project| + project.name = 'project-insert-suggestion-change' + end + @project.add_member(@dev_user, Resource::Members::AccessLevel::DEVELOPER) + + @merge_request = Resource::MergeRequest.fabricate_via_api! do |merge_request| + merge_request.project = @project + merge_request.title = 'This is a merge request insert change' + merge_request.description = 'I will suggest to change here!' + end + end + + it 'root user, suggest a change using the "Insert suggestion", developer-user accecpt suggestion' do + @merge_request.visit! + + Page::MergeRequest::Show.perform do |show| + show.click_diffs_tab + show.insert_suggestion_to_diff('suggestion!') + expect(show).to have_button('Apply suggestion') + end + + Page::Main::Login.perform do |login| + login.sign_out_and_sign_in_as user: @dev_user + end + + @merge_request.visit! + + Page::MergeRequest::Show.perform do |show| + show.click_diffs_tab + show.click_apply + expect(show).to have_content('Applied') + end + + Page::Main::Menu.perform(&:sign_out) + Page::Main::Login.perform(&:sign_in_using_credentials) + + @merge_request.visit! + + Page::MergeRequest::Show.perform(&:merge!) + + expect(page).to have_content('The changes were merged') + + Page::MergeRequest::Show.perform(&:view_plain_diff) + + expect(page.text).to start_with('diff --git a/added_file.txt b/added_file.txt') + expect(page).to have_content('+File Added') + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb new file mode 100644 index 000000000000..51a1a38da93d --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +module QA + context 'Create' do + describe 'Create a new merge request' do + let(:key_title) { "key for ssh tests #{Time.now.to_f}" } + first_branch = 'first-mr-branch' + file_first_branch = 'first-mr.txt' + commit_message_of_first_branch = "Add #{file_first_branch}" + + before do + Runtime::Browser.visit(:gitlab, Page::Main::Login) + Page::Main::Login.perform(&:sign_in_using_credentials) + + project = Resource::Project.fabricate! do |proj| + proj.name = 'project-qa-test' + proj.description = 'project for qa test' + proj.initialize_with_readme = true + end + + dev_user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) + project.add_member(dev_user, Resource::Members::AccessLevel::DEVELOPER) + + Page::Main::Login.perform do |login| + login.sign_out_and_sign_in_as user: dev_user + end + + Resource::SSHKey.fabricate! do |resource| + resource.title = key_title + end + + Git::Repository.perform do |repository| + repository.uri = project.repository_http_location.uri + repository.username = dev_user.username + repository.password = dev_user.password + repository.try_add_credentials_to_netrc + + repository.act do + clone + configure_identity(dev_user.username, dev_user.email) + checkout(first_branch, new_branch: true) + commit_file(file_first_branch, 'File 1 content', commit_message_of_first_branch) + push_changes(first_branch) + end + end + project.visit! + + @merge_request_title = 'developer-user create a MR' + @merge_request_description = 'Assign to root-user, please review!' + @root_user = 'Administrator' + end + + it 'developer-user create merge request and assign to root-user' do + Page::Project::Show.perform(&:new_merge_request) + + Page::MergeRequest::New.perform do |merge_request| + merge_request.fill_title(@merge_request_title) + merge_request.fill_description(@merge_request_description) + merge_request.select_assignee(@root_user) + merge_request.create_merge_request + end + + Page::MergeRequest::Show.perform do |merge_request| + expect(merge_request).to have_title(@merge_request_title) + expect(merge_request).to have_description(@merge_request_description) + expect(merge_request).to have_assignee(@root_user) + end + end + end + end +end -- GitLab From ff92031e1e71978b71061094de06c10ce9917306 Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Thu, 31 Oct 2019 23:03:33 +1000 Subject: [PATCH 4/8] update tests --- qa/qa/resource/repository/push.rb | 1 + .../apply_merge_request_suggestion_spec.rb | 11 ++++++-- .../assign_merge_request_spec.rb | 25 ++++++++----------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/qa/qa/resource/repository/push.rb b/qa/qa/resource/repository/push.rb index 68674248be25..d33848f69f6f 100644 --- a/qa/qa/resource/repository/push.rb +++ b/qa/qa/resource/repository/push.rb @@ -23,6 +23,7 @@ module QA @use_lfs = false @tag_name = nil @gpg_key_id = nil + @user = nil end def remote_branch diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb index c72cde37b70d..54216ae751e5 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/apply_merge_request_suggestion_spec.rb @@ -50,11 +50,18 @@ module QA Page::MergeRequest::Show.perform(&:merge!) expect(page).to have_content('The changes were merged') - + Page::MergeRequest::Show.perform(&:view_plain_diff) expect(page.text).to start_with('diff --git a/added_file.txt b/added_file.txt') - expect(page).to have_content('+File Added') + expect(page).to have_content('+File Addedsuggestion!') + + @project.visit! + + Page::Project::Menu.perform(&:click_repository) + + expect(page).to have_content('added_file.txt') + expect(page).to have_content('file.txt') end end end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb index 51a1a38da93d..ac5dca145f25 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb @@ -6,6 +6,7 @@ module QA let(:key_title) { "key for ssh tests #{Time.now.to_f}" } first_branch = 'first-mr-branch' file_first_branch = 'first-mr.txt' + file_content_first_branch = 'hello world!' commit_message_of_first_branch = "Add #{file_first_branch}" before do @@ -28,21 +29,17 @@ module QA Resource::SSHKey.fabricate! do |resource| resource.title = key_title end - - Git::Repository.perform do |repository| - repository.uri = project.repository_http_location.uri - repository.username = dev_user.username - repository.password = dev_user.password - repository.try_add_credentials_to_netrc - - repository.act do - clone - configure_identity(dev_user.username, dev_user.email) - checkout(first_branch, new_branch: true) - commit_file(file_first_branch, 'File 1 content', commit_message_of_first_branch) - push_changes(first_branch) - end + + Resource::Repository::Push.fabricate! do |push| + push.user = dev_user + push.new_branch = true + push.branch_name = first_branch + push.repository_http_uri = project.repository_http_location.uri + push.file_name = file_first_branch + push.file_content = file_content_first_branch + push.commit_message = commit_message_of_first_branch end + project.visit! @merge_request_title = 'developer-user create a MR' -- GitLab From 7f7f668cdd77ee5b01d31890b2a91e477a063985 Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Tue, 5 Nov 2019 22:33:09 +1000 Subject: [PATCH 5/8] update selectors based on feedback --- .../javascripts/vue_shared/components/markdown/header.vue | 1 + .../vue_shared/components/markdown/suggestion_diff_header.vue | 1 + app/helpers/form_helper.rb | 4 ++-- app/views/shared/empty_states/_merge_requests.html.haml | 2 +- .../issuable/form/_metadata_merge_request_assignee.html.haml | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index 4d27d1c91793..1a2e79140b3f 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -125,6 +125,7 @@ export default { :tag-content="lineContent" icon="doc-code" class="qa-suggestion-btn js-suggestion-btn" + data-qa-selector="qa_suggestion_button" @click="handleSuggestDismissed" /> Date: Tue, 5 Nov 2019 22:33:50 +1000 Subject: [PATCH 6/8] updated page objects based on feedback --- qa/qa/page/component/note.rb | 4 ++-- qa/qa/page/merge_request/new.rb | 8 ++++---- qa/qa/page/merge_request/show.rb | 2 +- qa/qa/page/project/settings/members.rb | 9 ++------- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/qa/qa/page/component/note.rb b/qa/qa/page/component/note.rb index 83df06e53b36..867389a07777 100644 --- a/qa/qa/page/component/note.rb +++ b/qa/qa/page/component/note.rb @@ -38,11 +38,11 @@ module QA end base.view 'app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue' do - element :apply_btn + element :apply_button end base.view 'app/assets/javascripts/vue_shared/components/markdown/header.vue' do - element :suggestion_btn + element :suggestion_button end end diff --git a/qa/qa/page/merge_request/new.rb b/qa/qa/page/merge_request/new.rb index aceeb4a83eef..de1e1d6aa98e 100644 --- a/qa/qa/page/merge_request/new.rb +++ b/qa/qa/page/merge_request/new.rb @@ -37,8 +37,8 @@ module QA end view 'app/views/shared/issuable/form/_metadata_merge_request_assignee.html.haml' do - element :assignee_search - element :dropdown_menu_assignee + element :assignee_search_toggle + element :assignee_select_dropdown end def create_merge_request @@ -71,8 +71,8 @@ module QA end def select_assignee(assignee) - click_element :assignee_search - within_element(:dropdown_menu_assignee) do + click_element :assignee_search_toggle + within_element(:assignee_select_dropdown) do click_on assignee end end diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb index a6fb56db2741..f9bc43bc321a 100644 --- a/qa/qa/page/merge_request/show.rb +++ b/qa/qa/page/merge_request/show.rb @@ -184,7 +184,7 @@ module QA end def insert_suggestion_to_diff(text) - wait(interval: 5) do + wait(interval: 5, reload: false) do has_text?("No newline at end of file") end all_elements(:new_diff_line).first.hover diff --git a/qa/qa/page/project/settings/members.rb b/qa/qa/page/project/settings/members.rb index 16c5ffdcd962..d8d0f8eed8ab 100644 --- a/qa/qa/page/project/settings/members.rb +++ b/qa/qa/page/project/settings/members.rb @@ -42,14 +42,9 @@ module QA click_element :invite_group_button end - def add_member(username) + def add_member(username, access_level = nil) select_user :member_select_input, username - click_element :add_member_button - end - - def add_member_with_access_level(username, access_level) - select_user :member_select_input, username - select_element :project_access_level, "#{access_level.titleize}" + select_element :project_access_level, "#{access_level.titleize}" if access_level click_element :add_member_button end -- GitLab From d23a7db701651810d15bebe363ad7310b1dd83ed Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Tue, 5 Nov 2019 22:34:03 +1000 Subject: [PATCH 7/8] update resource based on feedback --- qa/qa/resource/merge_request.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb index fe7eeeed37a6..d08574c168a0 100644 --- a/qa/qa/resource/merge_request.rb +++ b/qa/qa/resource/merge_request.rb @@ -71,7 +71,8 @@ module QA new.fill_title(@title) new.fill_description(@description) new.choose_milestone(@milestone) if @milestone - new.assign_to_me if @assignee == 'me' + new.assign_to_me if @assignee == 'me' + new.select_assignee(@assignee) unless @assginee.nil? labels.each do |label| new.select_label(label) end -- GitLab From b1d521472103e6d26ebe4e52383eb8942e3c9c6e Mon Sep 17 00:00:00 2001 From: Harris Lee Date: Tue, 5 Nov 2019 23:05:20 +1000 Subject: [PATCH 8/8] update tests based on feedback --- .../project/add_project_member_spec.rb | 4 +- .../assign_merge_request_spec.rb | 53 ++++++++++--------- 2 files changed, 29 insertions(+), 28 deletions(-) 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 index 8d3618090cee..dc2427795f13 100644 --- 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 @@ -15,10 +15,10 @@ module QA @project.visit! end - it 'developer-user adds into project member' do + it 'adds a user as a developer' do Page::Project::Menu.perform(&:go_to_members_settings) Page::Project::Settings::Members.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName - page.add_member_with_access_level(@dev_user.username, "developer") + page.add_member(@dev_user.username, "developer") expect(page).to have_content(@dev_user.username) expect(page).to have_content("Developer") diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb index ac5dca145f25..5f656aeb1e1b 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/assign_merge_request_spec.rb @@ -4,29 +4,33 @@ module QA context 'Create' do describe 'Create a new merge request' do let(:key_title) { "key for ssh tests #{Time.now.to_f}" } - first_branch = 'first-mr-branch' - file_first_branch = 'first-mr.txt' - file_content_first_branch = 'hello world!' - commit_message_of_first_branch = "Add #{file_first_branch}" - - before do - Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.perform(&:sign_in_using_credentials) - - project = Resource::Project.fabricate! do |proj| + let(:first_branch) { "first-mr-branch" } + let(:file_first_branch) { "first-mr.txt" } + let(:file_content_first_branch) { "hello world!" } + let(:commit_message_of_first_branch) { "Add #{file_first_branch}" } + let(:dev_user) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) } + let(:merge_request_title) {"developer-user create a MR"} + let(:merge_request_description) { "Assign to root-user, please review!" } + let(:root_user) { 'root' } + let(:project) do + Resource::Project.fabricate! do |proj| proj.name = 'project-qa-test' proj.description = 'project for qa test' proj.initialize_with_readme = true end + end - dev_user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) + before do + Runtime::Browser.visit(:gitlab, Page::Main::Login) + Page::Main::Login.perform(&:sign_in_using_credentials) + project.add_member(dev_user, Resource::Members::AccessLevel::DEVELOPER) Page::Main::Login.perform do |login| login.sign_out_and_sign_in_as user: dev_user end - Resource::SSHKey.fabricate! do |resource| + key = Resource::SSHKey.fabricate! do |resource| resource.title = key_title end @@ -34,33 +38,30 @@ module QA push.user = dev_user push.new_branch = true push.branch_name = first_branch - push.repository_http_uri = project.repository_http_location.uri + push.ssh_key = key +        push.repository_ssh_uri = project.repository_ssh_location.uri push.file_name = file_first_branch push.file_content = file_content_first_branch push.commit_message = commit_message_of_first_branch end - project.visit! - - @merge_request_title = 'developer-user create a MR' - @merge_request_description = 'Assign to root-user, please review!' - @root_user = 'Administrator' + project.visit! end it 'developer-user create merge request and assign to root-user' do Page::Project::Show.perform(&:new_merge_request) - Page::MergeRequest::New.perform do |merge_request| - merge_request.fill_title(@merge_request_title) - merge_request.fill_description(@merge_request_description) - merge_request.select_assignee(@root_user) - merge_request.create_merge_request + Resource::MergeRequest.fabricate_via_browser_ui! do |merge_request| + merge_request.title = merge_request_title + merge_request.description = merge_request_description + merge_request.project = project + merge_request.assignee = root_user end Page::MergeRequest::Show.perform do |merge_request| - expect(merge_request).to have_title(@merge_request_title) - expect(merge_request).to have_description(@merge_request_description) - expect(merge_request).to have_assignee(@root_user) + expect(merge_request).to have_title(merge_request_title) + expect(merge_request).to have_description(merge_request_description) + expect(merge_request).to have_assignee(root_user) end end end -- GitLab