diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-20 16:49:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-20 16:49:51 +0300 |
commit | 71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch) | |
tree | 6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /spec/support/shared_examples/features | |
parent | a7253423e3403b8c08f8a161e5937e1488f5f407 (diff) |
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'spec/support/shared_examples/features')
8 files changed, 224 insertions, 8 deletions
diff --git a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb index 7f31ea8f9be..96e57980c68 100644 --- a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb +++ b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb @@ -2,6 +2,7 @@ RSpec.shared_examples 'a creatable merge request' do include WaitForRequests + include ListboxHelpers it 'creates new merge request', :js do find('.js-assignee-search').click @@ -64,14 +65,16 @@ RSpec.shared_examples 'a creatable merge request' do visit project_new_merge_request_path(source_project) first('.js-target-project').click - find('.dropdown-target-project li', text: target_project.full_path).click + select_listbox_item(target_project.full_path) wait_for_requests first('.js-target-branch').click - within('.js-target-branch-dropdown .dropdown-content') do - expect(page).to have_content('a-brand-new-branch-to-test') - end + find('.gl-listbox-search-input').set('a-brand-new-branch-to-test') + + wait_for_requests + + expect_listbox_item('a-brand-new-branch-to-test') end end diff --git a/spec/support/shared_examples/features/incident_details_routing_shared_examples.rb b/spec/support/shared_examples/features/incident_details_routing_shared_examples.rb new file mode 100644 index 00000000000..dab125caa60 --- /dev/null +++ b/spec/support/shared_examples/features/incident_details_routing_shared_examples.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'for each incident details route' do |example, tab_text:| + before do + sign_in(user) + visit incident_path + end + + context 'for /-/issues/:id route' do + let(:incident_path) { project_issue_path(project, incident) } + + before do + page.within('[data-testid="incident-tabs"]') { click_link tab_text } + end + + it_behaves_like example + end + + context 'for /-/issues/incident/:id route' do + let(:incident_path) { incident_project_issues_path(project, incident) } + + before do + page.within('[data-testid="incident-tabs"]') { click_link tab_text } + end + + it_behaves_like example + end +end diff --git a/spec/support/shared_examples/features/issuable_invite_members_shared_examples.rb b/spec/support/shared_examples/features/issuable_invite_members_shared_examples.rb index 149486320ae..b6f7094e422 100644 --- a/spec/support/shared_examples/features/issuable_invite_members_shared_examples.rb +++ b/spec/support/shared_examples/features/issuable_invite_members_shared_examples.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true RSpec.shared_examples 'issuable invite members' do + include Spec::Support::Helpers::Features::InviteMembersModalHelper + context 'when a privileged user can invite' do before do project.add_maintainer(user) @@ -21,7 +23,9 @@ RSpec.shared_examples 'issuable invite members' do click_link 'Invite Members' - expect(page).to have_content("You're inviting members to the") + page.within invite_modal_selector do + expect(page).to have_content("You're inviting members to the #{project.name} project") + end end end diff --git a/spec/support/shared_examples/features/reportable_note_shared_examples.rb b/spec/support/shared_examples/features/reportable_note_shared_examples.rb index 9d859403465..bb3fab5b23e 100644 --- a/spec/support/shared_examples/features/reportable_note_shared_examples.rb +++ b/spec/support/shared_examples/features/reportable_note_shared_examples.rb @@ -20,7 +20,7 @@ RSpec.shared_examples 'reportable note' do |type| dropdown = comment.find(more_actions_selector) open_dropdown(dropdown) - expect(dropdown).to have_link('Report abuse to administrator', href: abuse_report_path) + expect(dropdown).to have_button('Report abuse to administrator') if type == 'issue' || type == 'merge_request' expect(dropdown).to have_button('Delete comment') @@ -33,10 +33,14 @@ RSpec.shared_examples 'reportable note' do |type| dropdown = comment.find(more_actions_selector) open_dropdown(dropdown) - dropdown.click_link('Report abuse to administrator') + dropdown.click_button('Report abuse to administrator') + + choose "They're posting spam." + click_button "Next" expect(find('#user_name')['value']).to match(note.author.username) expect(find('#abuse_report_reported_from_url')['value']).to match(noteable_note_url(note)) + expect(find('#abuse_report_category', visible: false)['value']).to match('spam') end def open_dropdown(dropdown) diff --git a/spec/support/shared_examples/features/runners_shared_examples.rb b/spec/support/shared_examples/features/runners_shared_examples.rb index 20078243cfb..63a0832117d 100644 --- a/spec/support/shared_examples/features/runners_shared_examples.rb +++ b/spec/support/shared_examples/features/runners_shared_examples.rb @@ -178,6 +178,22 @@ RSpec.shared_examples 'filters by tag' do end end +RSpec.shared_examples 'shows runner jobs tab' do + context 'when clicking on jobs tab' do + before do + click_on("#{s_('Runners|Jobs')} #{job_count}") + + wait_for_requests + end + + it 'shows job in list' do + within "[data-testid='job-row-#{job.id}']" do + expect(page).to have_link("##{job.id}") + end + end + end +end + RSpec.shared_examples 'submits edit runner form' do it 'breadcrumb contains runner id and token' do page.within '[data-testid="breadcrumb-links"]' do diff --git a/spec/support/shared_examples/features/sidebar/sidebar_labels_shared_examples.rb b/spec/support/shared_examples/features/sidebar/sidebar_labels_shared_examples.rb index 95b306fdaaa..a332fdec963 100644 --- a/spec/support/shared_examples/features/sidebar/sidebar_labels_shared_examples.rb +++ b/spec/support/shared_examples/features/sidebar/sidebar_labels_shared_examples.rb @@ -95,7 +95,7 @@ RSpec.shared_examples 'labels sidebar widget' do end end - it 'creates new label' do + it 'creates new label', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/391240' do page.within(labels_widget) do fill_in 'Name new label', with: 'wontfix' page.find('.suggest-colors a', match: :first).click diff --git a/spec/support/shared_examples/features/sidebar_shared_examples.rb b/spec/support/shared_examples/features/sidebar_shared_examples.rb index 77334db6a36..c2c50e8762f 100644 --- a/spec/support/shared_examples/features/sidebar_shared_examples.rb +++ b/spec/support/shared_examples/features/sidebar_shared_examples.rb @@ -42,6 +42,26 @@ RSpec.shared_examples 'issue boards sidebar' do end end + context 'editing issue title' do + it 'edits issue title' do + page.within('[data-testid="sidebar-title"]') do + click_button 'Edit' + + wait_for_requests + + find('input').set('Test title') + + click_button 'Save changes' + + wait_for_requests + + expect(page).to have_content('Test title') + end + + expect(first_card).to have_content('Test title') + end + end + context 'editing issue milestone', :js do it_behaves_like 'milestone sidebar widget' end diff --git a/spec/support/shared_examples/features/work_items_shared_examples.rb b/spec/support/shared_examples/features/work_items_shared_examples.rb new file mode 100644 index 00000000000..4f3d957ad71 --- /dev/null +++ b/spec/support/shared_examples/features/work_items_shared_examples.rb @@ -0,0 +1,141 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'work items status' do + let(:state_selector) { '[data-testid="work-item-state-select"]' } + + it 'successfully shows and changes the status of the work item' do + expect(find(state_selector)).to have_content 'Open' + + find(state_selector).select("Closed") + + wait_for_requests + + expect(find(state_selector)).to have_content 'Closed' + expect(work_item.reload.state).to eq('closed') + end +end + +RSpec.shared_examples 'work items comments' do + let(:form_selector) { '[data-testid="work-item-add-comment"]' } + + it 'successfully creates and shows comments' do + click_button 'Add a comment' + + find(form_selector).fill_in(with: "Test comment") + click_button "Comment" + + wait_for_requests + + expect(page).to have_content "Test comment" + end +end + +RSpec.shared_examples 'work items assignees' do + it 'successfully assigns the current user by searching' do + # The button is only when the mouse is over the input + find('[data-testid="work-item-assignees-input"]').fill_in(with: user.username) + wait_for_requests + + # submit and simulate blur to save + send_keys(:enter) + find("body").click + + wait_for_requests + + expect(work_item.assignees).to include(user) + end +end + +RSpec.shared_examples 'work items labels' do + it 'successfully assigns a label' do + label = create(:label, project: work_item.project, title: "testing-label") + + find('[data-testid="work-item-labels-input"]').fill_in(with: label.title) + wait_for_requests + + # submit and simulate blur to save + send_keys(:enter) + find("body").click + + wait_for_requests + + expect(work_item.labels).to include(label) + end +end + +RSpec.shared_examples 'work items description' do + it 'shows GFM autocomplete', :aggregate_failures do + click_button "Edit description" + + find('[aria-label="Description"]').send_keys("@#{user.username}") + + wait_for_requests + + page.within('.atwho-container') do + expect(page).to have_text(user.name) + end + end + + it 'autocompletes available quick actions', :aggregate_failures do + click_button "Edit description" + + find('[aria-label="Description"]').send_keys("/") + + wait_for_requests + + page.within('.atwho-container') do + expect(page).to have_text("title") + expect(page).to have_text("shrug") + expect(page).to have_text("tableflip") + expect(page).to have_text("close") + expect(page).to have_text("cc") + end + end + + context 'on conflict' do + let_it_be(:other_user) { create(:user) } + let(:expected_warning) { 'Someone edited the description at the same time you did.' } + + before do + project.add_developer(other_user) + end + + it 'shows conflict message when description changes', :aggregate_failures do + click_button "Edit description" + + wait_for_requests + + ::WorkItems::UpdateService.new( + container: work_item.project, + current_user: other_user, + params: { description: "oh no!" } + ).execute(work_item) + + wait_for_requests + + find('[aria-label="Description"]').send_keys("oh yeah!") + + expect(page.find('[data-testid="work-item-description-conflicts"]')).to have_text(expected_warning) + + click_button "Save and overwrite" + + expect(page.find('[data-testid="work-item-description"]')).to have_text("oh yeah!") + end + end +end + +RSpec.shared_examples 'work items invite members' do + include Spec::Support::Helpers::Features::InviteMembersModalHelper + + it 'successfully assigns the current user by searching' do + # The button is only when the mouse is over the input + find('[data-testid="work-item-assignees-input"]').fill_in(with: 'Invite members') + wait_for_requests + + click_button('Invite members') + + page.within invite_modal_selector do + expect(page).to have_content("You're inviting members to the #{work_item.project.name} project") + end + end +end |