diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
commit | 859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (patch) | |
tree | d7f2700abe6b4ffcb2dcfc80631b2d87d0609239 /spec/features/merge_request | |
parent | 446d496a6d000c73a304be52587cd9bbc7493136 (diff) |
Add latest changes from gitlab-org/gitlab@13-9-stable-eev13.9.0-rc42
Diffstat (limited to 'spec/features/merge_request')
14 files changed, 234 insertions, 197 deletions
diff --git a/spec/features/merge_request/user_accepts_merge_request_spec.rb b/spec/features/merge_request/user_accepts_merge_request_spec.rb index 3d18aef9327..d4b185a82e9 100644 --- a/spec/features/merge_request/user_accepts_merge_request_spec.rb +++ b/spec/features/merge_request/user_accepts_merge_request_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline do - let(:merge_request) { create(:merge_request, :with_diffs, :simple, source_project: project) } + let(:merge_request) { create(:merge_request, :simple, source_project: project) } let(:project) { create(:project, :public, :repository) } let(:user) { create(:user) } diff --git a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb index 2b94c072c8b..ab3ef7c1ac0 100644 --- a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb +++ b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User closes/reopens a merge request', :js do +RSpec.describe 'User closes/reopens a merge request', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500' do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } @@ -12,9 +12,15 @@ RSpec.describe 'User closes/reopens a merge request', :js do end describe 'when open' do - context 'when clicking the top `Close merge request` link', :aggregate_failures do - let(:open_merge_request) { create(:merge_request, source_project: project, target_project: project) } + let(:open_merge_request) { create(:merge_request, source_project: project, target_project: project) } + + it_behaves_like 'page with comment and close button', 'Close merge request' do + def setup + visit merge_request_path(open_merge_request) + end + end + context 'when clicking the top `Close merge request` link', :aggregate_failures do before do visit merge_request_path(open_merge_request) end @@ -34,9 +40,8 @@ RSpec.describe 'User closes/reopens a merge request', :js do end context 'when clicking the bottom `Close merge request` button', :aggregate_failures do - let(:open_merge_request) { create(:merge_request, source_project: project, target_project: project) } - before do + stub_feature_flags(remove_comment_close_reopen: false) visit merge_request_path(open_merge_request) end @@ -55,10 +60,23 @@ RSpec.describe 'User closes/reopens a merge request', :js do end end - describe 'when closed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500' do - context 'when clicking the top `Reopen merge request` link', :aggregate_failures do - let(:closed_merge_request) { create(:merge_request, source_project: project, target_project: project, state: 'closed') } + describe 'when closed' do + let(:closed_merge_request) { create(:merge_request, source_project: project, target_project: project, state: 'closed') } + it_behaves_like 'page with comment and close button', 'Close merge request' do + def setup + visit merge_request_path(closed_merge_request) + + within '.detail-page-header' do + click_button 'Toggle dropdown' + click_link 'Reopen merge request' + end + + wait_for_requests + end + end + + context 'when clicking the top `Reopen merge request` link', :aggregate_failures do before do visit merge_request_path(closed_merge_request) end @@ -78,9 +96,8 @@ RSpec.describe 'User closes/reopens a merge request', :js do end context 'when clicking the bottom `Reopen merge request` button', :aggregate_failures do - let(:closed_merge_request) { create(:merge_request, source_project: project, target_project: project, state: 'closed') } - before do + stub_feature_flags(remove_comment_close_reopen: false) visit merge_request_path(closed_merge_request) end diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb index 817b4e0b48e..2c949ed84f4 100644 --- a/spec/features/merge_request/user_edits_mr_spec.rb +++ b/spec/features/merge_request/user_edits_mr_spec.rb @@ -20,14 +20,4 @@ RSpec.describe 'Merge request > User edits MR' do include_context 'merge request edit context' it_behaves_like 'an editable merge request' end - - context 'when merge_request_reviewers is turned off' do - before do - stub_feature_flags(merge_request_reviewers: false) - end - - it 'does not render reviewers dropdown' do - expect(page).not_to have_selector('.js-reviewer-search') - end - end end diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb index 9ed5b67fa0e..3cdb22000f6 100644 --- a/spec/features/merge_request/user_manages_subscription_spec.rb +++ b/spec/features/merge_request/user_manages_subscription_spec.rb @@ -15,7 +15,7 @@ RSpec.describe 'User manages subscription', :js do end it 'toggles subscription' do - page.within('.js-issuable-subscribe-button') do + page.within('[data-testid="subscription-toggle"]') do wait_for_requests expect(page).to have_css 'button:not(.is-checked)' diff --git a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb index ea3e90a4508..8438c0af553 100644 --- a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb @@ -57,7 +57,7 @@ RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js do wait_for_requests expect(page).to have_css('button[disabled="disabled"]', text: 'Merge') - expect(page).to have_content('Please retry the job or push a new commit to fix the failure') + expect(page).to have_content('The pipeline for this merge request did not complete. Push a new commit to fix the failure, or check the troubleshooting documentation to see other possible actions.') end end @@ -70,7 +70,7 @@ RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js do wait_for_requests expect(page).not_to have_button 'Merge' - expect(page).to have_content('Please retry the job or push a new commit to fix the failure') + expect(page).to have_content('The pipeline for this merge request did not complete. Push a new commit to fix the failure, or check the troubleshooting documentation to see other possible actions.') 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 5e99383e4a1..63b463a2c5f 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 @@ -68,7 +68,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do wait_for_requests - expect(page).to have_content 'Merge when pipeline succeeds', wait: 0 + expect(page).to have_content 'Merge when pipeline succeeds' end it_behaves_like 'Merge when pipeline succeeds activator' @@ -145,7 +145,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do before do merge_request.update!( merge_user: merge_request.author, - merge_error: 'Something went wrong.' + merge_error: 'Something went wrong' ) refresh end @@ -155,7 +155,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do wait_for_requests page.within('.mr-section-container') do - expect(page).to have_content('Merge failed: Something went wrong. Please try again.') + expect(page).to have_content('Something went wrong. Try again.') end end end @@ -174,7 +174,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do wait_for_requests page.within('.mr-section-container') do - expect(page).to have_content('Merge failed: Something went wrong. Please try again.') + expect(page).to have_content('Something went wrong. Try again.') end end end diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb index 489582521b5..e629bc0dc53 100644 --- a/spec/features/merge_request/user_posts_notes_spec.rb +++ b/spec/features/merge_request/user_posts_notes_spec.rb @@ -161,7 +161,7 @@ RSpec.describe 'Merge request > User posts notes', :js do fill_in 'note[note]', with: 'Some new content' accept_confirm do - find('.btn-cancel').click + find('[data-testid="cancel"]').click end end expect(find('.js-note-text').text).to eq '' diff --git a/spec/features/merge_request/user_reverts_merge_request_spec.rb b/spec/features/merge_request/user_reverts_merge_request_spec.rb index 5e9611de460..9cbba6c470f 100644 --- a/spec/features/merge_request/user_reverts_merge_request_spec.rb +++ b/spec/features/merge_request/user_reverts_merge_request_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'User reverts a merge request', :js do - let(:merge_request) { create(:merge_request, :with_diffs, :simple, source_project: project) } + let(:merge_request) { create(:merge_request, :simple, source_project: project) } let(:project) { create(:project, :public, :repository) } let(:user) { create(:user) } @@ -17,46 +17,28 @@ RSpec.describe 'User reverts a merge request', :js do wait_for_requests - visit(merge_request_path(merge_request)) + # do not reload the page by visiting, let javascript update the page as it will validate we have loaded the modal + # code correctly on page update that adds the `revert` button end it 'reverts a merge request', :sidekiq_might_not_need_inline do - find("a[href='#modal-revert-commit']").click + revert_commit - page.within('#modal-revert-commit') do - uncheck('create_merge_request') - click_button('Revert') - end + wait_for_requests expect(page).to have_content('The merge request has been successfully reverted.') - - wait_for_requests end it 'does not revert a merge request that was previously reverted', :sidekiq_might_not_need_inline do - find("a[href='#modal-revert-commit']").click - - page.within('#modal-revert-commit') do - uncheck('create_merge_request') - click_button('Revert') - end - - find("a[href='#modal-revert-commit']").click + revert_commit - page.within('#modal-revert-commit') do - uncheck('create_merge_request') - click_button('Revert') - end + revert_commit expect(page).to have_content('Sorry, we cannot revert this merge request automatically.') end it 'reverts a merge request in a new merge request', :sidekiq_might_not_need_inline do - find("a[href='#modal-revert-commit']").click - - page.within('#modal-revert-commit') do - click_button('Revert') - end + revert_commit(create_merge_request: true) expect(page).to have_content('The merge request has been successfully reverted. You can now submit a merge request to get this change into the original branch.') end @@ -68,4 +50,13 @@ RSpec.describe 'User reverts a merge request', :js do expect(page).not_to have_link('Revert') end + + def revert_commit(create_merge_request: false) + click_button('Revert') + + page.within('[data-testid="modal-commit"]') do + uncheck('create_merge_request') unless create_merge_request + click_button('Revert') + end + end end diff --git a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb index 7f4249336fe..78c1b2a718e 100644 --- a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb +++ b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb @@ -32,7 +32,7 @@ RSpec.describe 'Merge request > User cherry-picks', :js do it 'does not show a Cherry-pick button' do visit project_merge_request_path(project, merge_request) - expect(page).not_to have_link 'Cherry-pick' + expect(page).not_to have_button 'Cherry-pick' end end @@ -40,7 +40,7 @@ RSpec.describe 'Merge request > User cherry-picks', :js do it 'shows a Cherry-pick button' do visit project_merge_request_path(project, merge_request) - expect(page).to have_link 'Cherry-pick' + expect(page).to have_button 'Cherry-pick' end it 'hides the cherry pick button for an archived project' do @@ -48,7 +48,7 @@ RSpec.describe 'Merge request > User cherry-picks', :js do visit project_merge_request_path(project, merge_request) - expect(page).not_to have_link 'Cherry-pick' + expect(page).not_to have_button 'Cherry-pick' end end @@ -56,18 +56,12 @@ RSpec.describe 'Merge request > User cherry-picks', :js do before do visit project_merge_request_path(project, merge_request) - click_link('Cherry-pick') + click_button('Cherry-pick') end it 'shows the cherry-pick modal' do expect(page).to have_content('Cherry-pick this merge request') end - - it 'closes the cherry-pick modal with escape keypress' do - find('#modal-cherry-pick-commit').send_keys(:escape) - - expect(page).not_to have_content('Start a new merge request with these changes') - end end end end diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb index d9743f6f330..708ce53b4fe 100644 --- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb @@ -160,7 +160,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', it 'merges the merge request' do expect(page).to have_content('Merged by') - expect(page).to have_link('Revert') + expect(page).to have_button('Revert') end end @@ -357,7 +357,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', it 'merges the merge request' do expect(page).to have_content('Merged by') - expect(page).to have_link('Revert') + expect(page).to have_button('Revert') end end diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb index c2b2ada47be..0854a8b9fb7 100644 --- a/spec/features/merge_request/user_sees_merge_widget_spec.rb +++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb @@ -77,15 +77,26 @@ RSpec.describe 'Merge request > User sees merge widget', :js do end it 'allows me to merge, see cherry-pick modal and load branches list', :sidekiq_might_not_need_inline do + modal_selector = '[data-testid="modal-commit"]' + wait_for_requests click_button 'Merge' wait_for_requests - click_link 'Cherry-pick' - page.find('.js-project-refs-dropdown').click - wait_for_requests - expect(page.all('.js-cherry-pick-form .dropdown-content li').size).to be > 1 + click_button 'Cherry-pick' + + page.within(modal_selector) do + click_button 'master' + end + + page.within("#{modal_selector} .dropdown-menu") do + find('[data-testid="dropdown-search-box"]').set('') + + wait_for_requests + + expect(page.all('[data-testid="dropdown-item"]').size).to be > 1 + end end end @@ -319,7 +330,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do wait_for_requests page.within('.mr-section-container') do - expect(page).to have_content('Merge failed: Something went wrong') + expect(page).to have_content('Something went wrong.') end end end @@ -340,7 +351,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do wait_for_requests page.within('.mr-section-container') do - expect(page).to have_content('Merge failed: Something went wrong') + expect(page).to have_content('Something went wrong.') end end end @@ -377,7 +388,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do click_button 'Merge' page.within('.mr-widget-body') do - expect(page).to have_content('Conflicts detected during merge') + expect(page).to have_content('An error occurred while merging') end end end diff --git a/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb b/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb index 04d8c52df61..1ef6d2a1068 100644 --- a/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb +++ b/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb @@ -9,152 +9,166 @@ RSpec.describe 'Merge request < User sees mini pipeline graph', :js do let(:pipeline) { create(:ci_empty_pipeline, project: project, ref: 'master', status: 'running', sha: project.commit.id) } let(:build) { create(:ci_build, pipeline: pipeline, stage: 'test') } - before do - build.run - build.trace.set('hello') - sign_in(user) - visit_merge_request - end - - def visit_merge_request(format: :html, serializer: nil) - visit project_merge_request_path(project, merge_request, format: format, serializer: serializer) - end - - it 'displays a mini pipeline graph' do - expect(page).to have_selector('.mr-widget-pipeline-graph') - end - - context 'as json' do - let(:artifacts_file1) { fixture_file_upload(File.join('spec/fixtures/banana_sample.gif'), 'image/gif') } - let(:artifacts_file2) { fixture_file_upload(File.join('spec/fixtures/dk.png'), 'image/png') } - + shared_examples 'mini pipeline renders' do |ci_mini_pipeline_gl_dropdown_enabled| before do - job = create(:ci_build, :success, :trace_artifact, pipeline: pipeline) - create(:ci_job_artifact, :archive, file: artifacts_file1, job: job) - create(:ci_build, :manual, pipeline: pipeline, when: 'manual') + build.run + build.trace.set('hello') + sign_in(user) + stub_feature_flags(ci_mini_pipeline_gl_dropdown: ci_mini_pipeline_gl_dropdown_enabled) + visit_merge_request end - # TODO: https://gitlab.com/gitlab-org/gitlab-foss/issues/48034 - xit 'avoids repeated database queries' do - before = ActiveRecord::QueryRecorder.new { visit_merge_request(format: :json, serializer: 'widget') } - - job = create(:ci_build, :success, :trace_artifact, pipeline: pipeline) - create(:ci_job_artifact, :archive, file: artifacts_file2, job: job) - create(:ci_build, :manual, pipeline: pipeline, when: 'manual') - - after = ActiveRecord::QueryRecorder.new { visit_merge_request(format: :json, serializer: 'widget') } + let_it_be(:dropdown_toggle_selector) do + if ci_mini_pipeline_gl_dropdown_enabled + '[data-testid="mini-pipeline-graph-dropdown"] .dropdown-toggle' + else + '[data-testid="mini-pipeline-graph-dropdown-toggle"]' + end + end - expect(before.count).to eq(after.count) - expect(before.cached_count).to eq(after.cached_count) + def visit_merge_request(format: :html, serializer: nil) + visit project_merge_request_path(project, merge_request, format: format, serializer: serializer) end - end - describe 'build list toggle' do - let(:toggle) do - find('.mini-pipeline-graph-dropdown-toggle') - first('.mini-pipeline-graph-dropdown-toggle') + it 'displays a mini pipeline graph' do + expect(page).to have_selector('.mr-widget-pipeline-graph') end - # Status icon button styles should update as described in - # https://gitlab.com/gitlab-org/gitlab-foss/issues/42769 - it 'has unique styles for default, :hover, :active, and :focus states' do - find('.mini-pipeline-graph-dropdown-toggle') - default_background_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('background-color');") - default_foreground_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible svg').css('fill');") - default_box_shadow = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('box-shadow');") + context 'as json' do + let(:artifacts_file1) { fixture_file_upload(File.join('spec/fixtures/banana_sample.gif'), 'image/gif') } + let(:artifacts_file2) { fixture_file_upload(File.join('spec/fixtures/dk.png'), 'image/png') } - toggle.hover + before do + job = create(:ci_build, :success, :trace_artifact, pipeline: pipeline) + create(:ci_job_artifact, :archive, file: artifacts_file1, job: job) + create(:ci_build, :manual, pipeline: pipeline, when: 'manual') + end - find('.mini-pipeline-graph-dropdown-toggle') - hover_background_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('background-color');") - hover_foreground_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible svg').css('fill');") - hover_box_shadow = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('box-shadow');") + # TODO: https://gitlab.com/gitlab-org/gitlab-foss/issues/48034 + xit 'avoids repeated database queries' do + before = ActiveRecord::QueryRecorder.new { visit_merge_request(format: :json, serializer: 'widget') } - page.driver.browser.action.click_and_hold(toggle.native).perform + job = create(:ci_build, :success, :trace_artifact, pipeline: pipeline) + create(:ci_job_artifact, :archive, file: artifacts_file2, job: job) + create(:ci_build, :manual, pipeline: pipeline, when: 'manual') - find('.mini-pipeline-graph-dropdown-toggle') - active_background_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('background-color');") - active_foreground_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible svg').css('fill');") - active_box_shadow = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('box-shadow');") + after = ActiveRecord::QueryRecorder.new { visit_merge_request(format: :json, serializer: 'widget') } - page.driver.browser.action.release(toggle.native) - .move_by(100, 100) - .perform + expect(before.count).to eq(after.count) + expect(before.cached_count).to eq(after.cached_count) + end + end - find('.mini-pipeline-graph-dropdown-toggle') - focus_background_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('background-color');") - focus_foreground_color = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible svg').css('fill');") - focus_box_shadow = evaluate_script("$('.mini-pipeline-graph-dropdown-toggle:visible').css('box-shadow');") + describe 'build list toggle' do + let(:toggle) do + find(dropdown_toggle_selector) + first(dropdown_toggle_selector) + end - expect(default_background_color).not_to eq(hover_background_color) - expect(hover_background_color).not_to eq(active_background_color) - expect(default_background_color).not_to eq(active_background_color) + # Status icon button styles should update as described in + # https://gitlab.com/gitlab-org/gitlab-foss/issues/42769 + it 'has unique styles for default, :hover, :active, and :focus states' do + default_background_color, default_foreground_color, default_box_shadow = get_toggle_colors(dropdown_toggle_selector) - expect(default_foreground_color).not_to eq(hover_foreground_color) - expect(hover_foreground_color).not_to eq(active_foreground_color) - expect(default_foreground_color).not_to eq(active_foreground_color) + toggle.hover + hover_background_color, hover_foreground_color, hover_box_shadow = get_toggle_colors(dropdown_toggle_selector) - expect(focus_background_color).to eq(hover_background_color) - expect(focus_foreground_color).to eq(hover_foreground_color) + page.driver.browser.action.click_and_hold(toggle.native).perform + active_background_color, active_foreground_color, active_box_shadow = get_toggle_colors(dropdown_toggle_selector) + page.driver.browser.action.release(toggle.native).perform - expect(default_box_shadow).to eq('none') - expect(hover_box_shadow).to eq('none') - expect(active_box_shadow).not_to eq('none') - expect(focus_box_shadow).not_to eq('none') - end + page.driver.browser.action.click(toggle.native).move_by(100, 100).perform + focus_background_color, focus_foreground_color, focus_box_shadow = get_toggle_colors(dropdown_toggle_selector) - it 'shows tooltip when hovered' do - toggle.hover + expect(default_background_color).not_to eq(hover_background_color) + expect(hover_background_color).not_to eq(active_background_color) + expect(default_background_color).not_to eq(active_background_color) - expect(page).to have_selector('.tooltip') - end - end + expect(default_foreground_color).not_to eq(hover_foreground_color) + expect(hover_foreground_color).not_to eq(active_foreground_color) + expect(default_foreground_color).not_to eq(active_foreground_color) - describe 'builds list menu' do - let(:toggle) do - find('.mini-pipeline-graph-dropdown-toggle') - first('.mini-pipeline-graph-dropdown-toggle') - end + expect(focus_background_color).to eq(hover_background_color) + expect(focus_foreground_color).to eq(hover_foreground_color) - before do - toggle.click - wait_for_requests - end + expect(default_box_shadow).to eq('none') + expect(hover_box_shadow).to eq('none') + expect(active_box_shadow).not_to eq('none') + expect(focus_box_shadow).not_to eq('none') + end + + it 'shows tooltip when hovered' do + toggle.hover - it 'pens when toggle is clicked' do - expect(toggle.find(:xpath, '..')).to have_selector('.mini-pipeline-graph-dropdown-menu') + expect(page).to have_selector('.tooltip') + end end - it 'closes when toggle is clicked again' do - toggle.click + describe 'builds list menu' do + let(:toggle) do + find(dropdown_toggle_selector) + first(dropdown_toggle_selector) + end - expect(toggle.find(:xpath, '..')).not_to have_selector('.mini-pipeline-graph-dropdown-menu') - end + before do + toggle.click + wait_for_requests + end - it 'closes when clicking somewhere else' do - find('body').click + it 'pens when toggle is clicked' do + expect(toggle.find(:xpath, '..')).to have_selector('.mini-pipeline-graph-dropdown-menu') + end - expect(toggle.find(:xpath, '..')).not_to have_selector('.mini-pipeline-graph-dropdown-menu') - end + it 'closes when toggle is clicked again' do + toggle.click - describe 'build list build item' do - let(:build_item) do - find('.mini-pipeline-graph-dropdown-item') - first('.mini-pipeline-graph-dropdown-item') + expect(toggle.find(:xpath, '..')).not_to have_selector('.mini-pipeline-graph-dropdown-menu') end - it 'visits the build page when clicked' do - build_item.click - find('.build-page') + it 'closes when clicking somewhere else' do + find('body').click - expect(current_path).to eql(project_job_path(project, build)) + expect(toggle.find(:xpath, '..')).not_to have_selector('.mini-pipeline-graph-dropdown-menu') end - it 'shows tooltip when hovered' do - build_item.hover + describe 'build list build item' do + let(:build_item) do + find('.mini-pipeline-graph-dropdown-item') + first('.mini-pipeline-graph-dropdown-item') + end - expect(page).to have_selector('.tooltip') + it 'visits the build page when clicked' do + build_item.click + find('.build-page') + + expect(current_path).to eql(project_job_path(project, build)) + end + + it 'shows tooltip when hovered' do + build_item.hover + + expect(page).to have_selector('.tooltip') + end end end end + + context 'with ci_mini_pipeline_gl_dropdown disabled' do + it_behaves_like "mini pipeline renders", false + end + + context 'with ci_mini_pipeline_gl_dropdown enabled' do + it_behaves_like "mini pipeline renders", true + end + + private + + def get_toggle_colors(selector) + find(selector) + [ + evaluate_script("$('#{selector}:visible').css('background-color');"), + evaluate_script("$('#{selector}:visible svg').css('fill');"), + evaluate_script("$('#{selector}:visible').css('box-shadow');") + ] + 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 a2ec34335ec..bbeb91bbd19 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 @@ -73,6 +73,23 @@ RSpec.describe 'User comments on a diff', :js do end end + it 'allows suggestions in replies' do + click_diff_line(find("[id='#{sample_compare.changes[1][:line_code]}']")) + + page.within('.js-discussion-note-form') do + fill_in('note_note', with: "```suggestion\n# change to a comment\n```") + click_button('Add comment now') + end + + wait_for_requests + + click_button 'Reply...' + + find('.js-suggestion-btn').click + + expect(find('.js-vue-issue-note-form').value).to include("url = https://github.com/gitlabhq/gitlab-shell.git") + end + it 'suggestion is appliable' do click_diff_line(find("[id='#{sample_compare.changes[1][:line_code]}']")) 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 e8998f9457a..9bda48a3ec5 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 @@ -30,19 +30,6 @@ RSpec.describe 'User views an open merge request' do 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 - context 'when a merge request has repository', :js do let(:project) { create(:project, :public, :repository) } @@ -107,5 +94,21 @@ RSpec.describe 'User views an open merge request' do end end end + + context 'when the assignee\'s availability set' do + before do + merge_request.author.create_status(availability: 'busy') + merge_request.assignees << merge_request.author + + visit(merge_request_path(merge_request)) + end + + it 'exposes the availability in the data-availability attribute' do + assignees_data = find_all("input[name='merge_request[assignee_ids][]']", visible: false) + + expect(assignees_data.size).to eq(1) + expect(assignees_data.first['data-availability']).to eq('busy') + end + end end end |