diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
commit | 48aff82709769b098321c738f3444b9bdaa694c6 (patch) | |
tree | e00c7c43e2d9b603a5a6af576b1685e400410dee /spec/features/merge_request | |
parent | 879f5329ee916a948223f8f43d77fba4da6cd028 (diff) |
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.0-rc42
Diffstat (limited to 'spec/features/merge_request')
16 files changed, 134 insertions, 89 deletions
diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb index 40f6482c948..c8fc23bebf9 100644 --- a/spec/features/merge_request/batch_comments_spec.rb +++ b/spec/features/merge_request/batch_comments_spec.rb @@ -41,7 +41,6 @@ RSpec.describe 'Merge request > Batch comments', :js do write_comment page.within('.review-bar-content') do - click_button 'Finish review' click_button 'Submit review' end @@ -64,18 +63,6 @@ RSpec.describe 'Merge request > Batch comments', :js do expect(page).to have_selector('.note:not(.draft-note)', text: 'Line is wrong') end - it 'discards review' do - write_comment - - click_button 'Discard review' - - click_button 'Delete all pending comments' - - wait_for_requests - - expect(page).not_to have_selector('.draft-note-component') - end - it 'deletes draft note' do write_comment @@ -149,7 +136,6 @@ RSpec.describe 'Merge request > Batch comments', :js do write_reply_to_discussion(resolve: true) page.within('.review-bar-content') do - click_button 'Finish review' click_button 'Submit review' end @@ -192,7 +178,6 @@ RSpec.describe 'Merge request > Batch comments', :js do write_reply_to_discussion(button_text: 'Start a review', unresolve: true) page.within('.review-bar-content') do - click_button 'Finish review' click_button 'Submit review' end diff --git a/spec/features/merge_request/maintainer_edits_fork_spec.rb b/spec/features/merge_request/maintainer_edits_fork_spec.rb index 0e65cb358da..a98bfd1c8a4 100644 --- a/spec/features/merge_request/maintainer_edits_fork_spec.rb +++ b/spec/features/merge_request/maintainer_edits_fork_spec.rb @@ -26,7 +26,12 @@ RSpec.describe 'a maintainer edits files on a source-branch of an MR from a fork visit project_merge_request_path(target_project, merge_request) click_link 'Changes' wait_for_requests - first('.js-file-title').find('.js-edit-blob').click + + page.within(first('.js-file-title')) do + find('.js-diff-more-actions').click + find('.js-edit-blob').click + end + wait_for_requests end diff --git a/spec/features/merge_request/user_comments_on_diff_spec.rb b/spec/features/merge_request/user_comments_on_diff_spec.rb index 3a199951b56..ad1ad067935 100644 --- a/spec/features/merge_request/user_comments_on_diff_spec.rb +++ b/spec/features/merge_request/user_comments_on_diff_spec.rb @@ -34,7 +34,8 @@ RSpec.describe 'User comments on a diff', :js do page.within('.diff-files-holder > div:nth-child(3)') do expect(page).to have_content('Line is wrong') - find('.js-btn-vue-toggle-comments').click + find('.js-diff-more-actions').click + click_button 'Hide comments on this file' expect(page).not_to have_content('Line is wrong') end @@ -67,7 +68,8 @@ RSpec.describe 'User comments on a diff', :js do # Hide the comment. page.within('.diff-files-holder > div:nth-child(3)') do - find('.js-btn-vue-toggle-comments').click + find('.js-diff-more-actions').click + click_button 'Hide comments on this file' expect(page).not_to have_content('Line is wrong') end @@ -80,7 +82,8 @@ RSpec.describe 'User comments on a diff', :js do # Show the comment. page.within('.diff-files-holder > div:nth-child(3)') do - find('.js-btn-vue-toggle-comments').click + find('.js-diff-more-actions').click + click_button 'Show comments on this file' end # Now both the comments should be shown. diff --git a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb index affd6f6b7b5..7d55a72c2b1 100644 --- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb +++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js do let(:sidebar_assignee_dropdown_item) { sidebar_assignee_block.find(".dropdown-menu li[data-user-id=\"#{assignee.id}\"]") } let(:sidebar_assignee_dropdown_tooltip) { sidebar_assignee_dropdown_item.find('a')['data-title'] || '' } - context 'when invite_members_version_a experiment is not enabled' do + context 'when user is an owner' do before do stub_const('Autocomplete::UsersFinder::LIMIT', users_find_limit) @@ -52,12 +52,6 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js do it "shows assignee tooltip '#{expected_tooltip}" do expect(sidebar_assignee_dropdown_tooltip).to eql(expected_tooltip) end - - it 'does not show invite link' do - page.within '.dropdown-menu-user' do - expect(page).not_to have_link('Invite Members') - end - end end end @@ -74,48 +68,15 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js do end end - context 'when invite_members_version_a experiment is enabled' do + context 'with invite members experiment considerations' do let_it_be(:user) { create(:user) } before do - stub_experiment_for_user(invite_members_version_a: true) sign_in(user) end - context 'when user can not see invite members' do - before do - project.add_developer(user) - visit project_merge_request_path(project, merge_request) - - find('.block.assignee .edit-link').click - - wait_for_requests - end - - it 'does not see link to invite members' do - page.within '.dropdown-menu-user' do - expect(page).not_to have_link('Invite Members') - end - end - end - - context 'when user can see invite members' do - before do - project.add_maintainer(user) - visit project_merge_request_path(project, merge_request) - - find('.block.assignee .edit-link').click - - wait_for_requests - end - - it 'sees link to invite members' do - page.within '.dropdown-menu-user' do - expect(page).to have_link('Invite Members', href: project_project_members_path(project)) - expect(page).to have_selector('[data-track-event="click_invite_members"]') - expect(page).to have_selector("[data-track-label='edit_assignee']") - end - end + include_examples 'issuable invite members experiments' do + let(:issuable_path) { project_merge_request_path(project, merge_request) } end end end diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb index 397ca70f4a1..817b4e0b48e 100644 --- a/spec/features/merge_request/user_edits_mr_spec.rb +++ b/spec/features/merge_request/user_edits_mr_spec.rb @@ -21,24 +21,6 @@ RSpec.describe 'Merge request > User edits MR' do it_behaves_like 'an editable merge request' end - context 'when merge_request_reviewers is turned on' do - before do - stub_feature_flags(merge_request_reviewers: true) - end - - context 'non-fork merge request' do - include_context 'merge request edit context' - it_behaves_like 'an editable merge request with reviewers' - end - - context 'for a forked project' do - let(:source_project) { fork_project(target_project, nil, repository: true) } - - include_context 'merge request edit context' - it_behaves_like 'an editable merge request with reviewers' - end - end - context 'when merge_request_reviewers is turned off' do before do stub_feature_flags(merge_request_reviewers: false) diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb index 0340d9ccc3d..0cdc87de761 100644 --- a/spec/features/merge_request/user_expands_diff_spec.rb +++ b/spec/features/merge_request/user_expands_diff_spec.rb @@ -7,6 +7,7 @@ RSpec.describe 'User expands diff', :js do let(:merge_request) { create(:merge_request, source_branch: 'expand-collapse-files', source_project: project, target_project: project) } before do + stub_feature_flags(increased_diff_limits: false) visit(diffs_project_merge_request_path(project, merge_request)) wait_for_requests diff --git a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb new file mode 100644 index 00000000000..f5bca7cf015 --- /dev/null +++ b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Merge request > User marks merge request as draft', :js do + let(:user) { create(:user) } + let(:project) { create(:project, :public, :repository) } + let(:merge_request) { create(:merge_request, source_project: project) } + + before do + project.add_maintainer(user) + + sign_in(user) + + visit project_merge_request_path(project, merge_request) + end + + it 'toggles draft status' do + click_link 'Mark as draft' + + expect(page).to have_content("Draft: #{merge_request.title}") + + page.within('.detail-page-header-actions') do + click_link 'Mark as ready' + end + + expect(page).to have_content(merge_request.title) + end +end diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb index 3dc49fb4dea..444d5371e7a 100644 --- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb @@ -47,7 +47,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do it_behaves_like 'Merge when pipeline succeeds activator' end - context 'when enabled after pipeline status changed' do + context 'when enabled after pipeline status changed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/258667' do before do pipeline.run! diff --git a/spec/features/merge_request/user_reopens_merge_request_spec.rb b/spec/features/merge_request/user_reopens_merge_request_spec.rb index 7866ece84ac..4a05a3be59a 100644 --- a/spec/features/merge_request/user_reopens_merge_request_spec.rb +++ b/spec/features/merge_request/user_reopens_merge_request_spec.rb @@ -15,7 +15,11 @@ RSpec.describe 'User reopens a merge requests', :js do end it 'reopens a merge request' do - click_button('Reopen merge request', match: :first) + find('.js-issuable-close-dropdown .dropdown-toggle').click + + click_link('Reopen merge request', match: :first) + + wait_for_requests page.within('.status-box') do expect(page).to have_content('Open') diff --git a/spec/features/merge_request/user_resolves_wip_mr_spec.rb b/spec/features/merge_request/user_resolves_wip_mr_spec.rb index a9d4c4df507..b67167252e1 100644 --- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb +++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb @@ -35,7 +35,9 @@ RSpec.describe 'Merge request > User resolves Work in Progress', :js do expect(page.find('.ci-widget-content')).to have_content("Pipeline ##{pipeline.id}") expect(page).to have_content "This merge request is still a work in progress." - click_button('Mark as ready') + page.within('.mr-state-widget') do + click_button('Mark as ready') + end wait_for_requests diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb index 7a3a14e61e3..a7713ed9964 100644 --- a/spec/features/merge_request/user_sees_diff_spec.rb +++ b/spec/features/merge_request/user_sees_diff_spec.rb @@ -63,7 +63,7 @@ RSpec.describe 'Merge request > User sees diff', :js do visit diffs_project_merge_request_path(project, merge_request) # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax - expect(page).to have_selector("[id=\"#{changelog_id}\"] a.js-edit-blob") + expect(page).to have_selector("[id=\"#{changelog_id}\"] .js-edit-blob", visible: false) end end @@ -73,6 +73,7 @@ RSpec.describe 'Merge request > User sees diff', :js do visit diffs_project_merge_request_path(project, merge_request) # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax + find("[id=\"#{changelog_id}\"] .js-diff-more-actions").click find("[id=\"#{changelog_id}\"] .js-edit-blob").click expect(page).to have_selector('.js-fork-suggestion-button', count: 1) diff --git a/spec/features/merge_request/user_sees_page_metadata_spec.rb b/spec/features/merge_request/user_sees_page_metadata_spec.rb new file mode 100644 index 00000000000..7b3e07152a0 --- /dev/null +++ b/spec/features/merge_request/user_sees_page_metadata_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Merge request > User sees page metadata' do + let(:merge_request) { create(:merge_request, description: '**Lorem** _ipsum_ dolor sit [amet](https://example.com)') } + let(:project) { merge_request.target_project } + let(:user) { project.creator } + + before do + project.add_maintainer(user) + sign_in(user) + visit project_merge_request_path(project, merge_request) + end + + it_behaves_like 'page meta description', 'Lorem ipsum dolor sit amet' +end diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb index 8e15ba6cf8d..107fc002ebd 100644 --- a/spec/features/merge_request/user_sees_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_spec.rb @@ -50,7 +50,7 @@ RSpec.describe 'Merge request > User sees pipelines', :js do wait_for_requests - expect(page.find('.js-run-mr-pipeline')).to have_text('Run Pipeline') + expect(page.find('[data-testid="run_pipeline_button"]')).to have_text('Run Pipeline') end end @@ -66,7 +66,7 @@ RSpec.describe 'Merge request > User sees pipelines', :js do wait_for_requests - expect(page.find('.js-run-mr-pipeline')).to have_text('Run Pipeline') + expect(page.find('[data-testid="run_pipeline_button"]')).to have_text('Run Pipeline') end end end diff --git a/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb b/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb new file mode 100644 index 00000000000..93807512d9c --- /dev/null +++ b/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Merge request > User sees suggest pipeline', :js do + let(:merge_request) { create(:merge_request) } + let(:project) { merge_request.source_project } + let(:user) { project.creator } + + before do + stub_application_setting(auto_devops_enabled: false) + stub_experiment(suggest_pipeline: true) + stub_experiment_for_user(suggest_pipeline: true) + project.add_maintainer(user) + sign_in(user) + visit project_merge_request_path(project, merge_request) + end + + it 'shows the suggest pipeline widget and then allows dismissal correctly' do + expect(page).to have_content('Are you adding technical debt or code vulnerabilities?') + + page.within '.mr-pipeline-suggest' do + find('[data-testid="close"]').click + end + + wait_for_requests + + expect(page).not_to have_content('Are you adding technical debt or code vulnerabilities?') + + # Reload so we know the user callout was registered + visit page.current_url + + expect(page).not_to have_content('Are you adding technical debt or code vulnerabilities?') + end +end diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb index 39495832547..9268190c7e0 100644 --- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb +++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb @@ -119,7 +119,8 @@ RSpec.describe 'User comments on a diff', :js do it 'can add and remove suggestions from a batch' do files.each_with_index do |file, index| page.within("[id='#{file[:hash]}']") do - find("button[title='Show full file']").click + find('.js-diff-more-actions').click + click_button 'Show full file' wait_for_requests click_diff_line(find("[id='#{file[:line_code]}']")) @@ -130,7 +131,9 @@ RSpec.describe 'User comments on a diff', :js do wait_for_requests end end + end + files.each_with_index do |file, index| page.within("[id='#{file[:hash]}']") do expect(page).not_to have_content('Applied') @@ -247,7 +250,7 @@ RSpec.describe 'User comments on a diff', :js do end context 'multiple suggestions in a single note' do - it 'suggestions are presented' do + it 'suggestions are presented', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/258989' do click_diff_line(find("[id='#{sample_compare.changes[1][:line_code]}']")) page.within('.js-discussion-note-form') do diff --git a/spec/features/merge_request/user_views_open_merge_request_spec.rb b/spec/features/merge_request/user_views_open_merge_request_spec.rb index 448844ae57d..e8998f9457a 100644 --- a/spec/features/merge_request/user_views_open_merge_request_spec.rb +++ b/spec/features/merge_request/user_views_open_merge_request_spec.rb @@ -22,7 +22,24 @@ RSpec.describe 'User views an open merge request' do # returns the whole document, not the node's actual parent element expect(find(:xpath, "#{node.path}/..").text).to eq(merge_request.description[2..-1]) - expect(page).to have_content(merge_request.title).and have_content(merge_request.description) + expect(page).to have_content(merge_request.title) + end + + it 'has reviewers in sidebar' do + expect(page).to have_css('.reviewer') + end + end + + context 'when merge_request_reviewers is turned off' do + let(:project) { create(:project, :public, :repository) } + + before do + stub_feature_flags(merge_request_reviewers: false) + visit(merge_request_path(merge_request)) + end + + it 'has reviewers in sidebar' do + expect(page).not_to have_css('.reviewer') end end |