Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
commit71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch)
tree6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /spec/support/shared_examples/features
parenta7253423e3403b8c08f8a161e5937e1488f5f407 (diff)
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'spec/support/shared_examples/features')
-rw-r--r--spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb11
-rw-r--r--spec/support/shared_examples/features/incident_details_routing_shared_examples.rb28
-rw-r--r--spec/support/shared_examples/features/issuable_invite_members_shared_examples.rb6
-rw-r--r--spec/support/shared_examples/features/reportable_note_shared_examples.rb8
-rw-r--r--spec/support/shared_examples/features/runners_shared_examples.rb16
-rw-r--r--spec/support/shared_examples/features/sidebar/sidebar_labels_shared_examples.rb2
-rw-r--r--spec/support/shared_examples/features/sidebar_shared_examples.rb20
-rw-r--r--spec/support/shared_examples/features/work_items_shared_examples.rb141
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