summaryrefslogtreecommitdiff
path: root/spec/features
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
commit05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2 (patch)
tree11d0f2a6ec31c7793c184106cedc2ded3d9a2cc5 /spec/features
parentec73467c23693d0db63a797d10194da9e72a74af (diff)
downloadgitlab-ce-05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2.tar.gz
Add latest changes from gitlab-org/gitlab@15-8-stable-eev15.8.0-rc42
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/abuse_report_spec.rb152
-rw-r--r--spec/features/admin/admin_broadcast_messages_spec.rb98
-rw-r--r--spec/features/admin/admin_groups_spec.rb18
-rw-r--r--spec/features/admin/admin_projects_spec.rb7
-rw-r--r--spec/features/admin/admin_sees_background_migrations_spec.rb31
-rw-r--r--spec/features/admin/admin_users_spec.rb6
-rw-r--r--spec/features/admin/dashboard_spec.rb3
-rw-r--r--spec/features/admin/users/users_spec.rb6
-rw-r--r--spec/features/callouts/registration_enabled_spec.rb2
-rw-r--r--spec/features/commit_spec.rb4
-rw-r--r--spec/features/dashboard/activity_spec.rb2
-rw-r--r--spec/features/dashboard/groups_list_spec.rb2
-rw-r--r--spec/features/dashboard/issuables_counter_spec.rb27
-rw-r--r--spec/features/dashboard/issues_spec.rb2
-rw-r--r--spec/features/dashboard/merge_requests_spec.rb4
-rw-r--r--spec/features/dashboard/milestones_spec.rb2
-rw-r--r--spec/features/dashboard/navbar_spec.rb16
-rw-r--r--spec/features/dashboard/projects_spec.rb2
-rw-r--r--spec/features/dashboard/snippets_spec.rb2
-rw-r--r--spec/features/dashboard/todos/todos_spec.rb55
-rw-r--r--spec/features/dashboard/user_filters_projects_spec.rb2
-rw-r--r--spec/features/error_tracking/user_sees_error_index_spec.rb2
-rw-r--r--spec/features/global_search_spec.rb4
-rw-r--r--spec/features/groups/import_export/connect_instance_spec.rb6
-rw-r--r--spec/features/groups/import_export/migration_history_spec.rb4
-rw-r--r--spec/features/groups/labels/sort_labels_spec.rb20
-rw-r--r--spec/features/groups/members/manage_members_spec.rb5
-rw-r--r--spec/features/groups/members/sort_members_spec.rb4
-rw-r--r--spec/features/groups/merge_requests_spec.rb2
-rw-r--r--spec/features/groups/milestones_sorting_spec.rb14
-rw-r--r--spec/features/groups/navbar_spec.rb2
-rw-r--r--spec/features/groups/new_group_page_spec.rb2
-rw-r--r--spec/features/incidents/user_views_incident_spec.rb2
-rw-r--r--spec/features/issues/group_label_sidebar_spec.rb2
-rw-r--r--spec/features/issues/issue_header_spec.rb12
-rw-r--r--spec/features/issues/user_creates_issue_spec.rb5
-rw-r--r--spec/features/issues/user_edits_issue_spec.rb7
-rw-r--r--spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb2
-rw-r--r--spec/features/jira_connect/branches_spec.rb12
-rw-r--r--spec/features/markdown/observability_spec.rb74
-rw-r--r--spec/features/markdown/sandboxed_mermaid_spec.rb2
-rw-r--r--spec/features/merge_request/admin_views_hidden_merge_request_spec.rb27
-rw-r--r--spec/features/merge_request/batch_comments_spec.rb2
-rw-r--r--spec/features/merge_request/close_reopen_report_toggle_spec.rb22
-rw-r--r--spec/features/merge_request/maintainer_edits_fork_spec.rb2
-rw-r--r--spec/features/merge_request/merge_request_discussion_lock_spec.rb2
-rw-r--r--spec/features/merge_request/user_accepts_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb2
-rw-r--r--spec/features/merge_request/user_approves_spec.rb2
-rw-r--r--spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb2
-rw-r--r--spec/features/merge_request/user_assigns_themselves_spec.rb2
-rw-r--r--spec/features/merge_request/user_awards_emoji_spec.rb2
-rw-r--r--spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb2
-rw-r--r--spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_commit_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_creates_image_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_creates_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_creates_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_customizes_merge_commit_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_assignees_sidebar_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb2
-rw-r--r--spec/features/merge_request/user_expands_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb2
-rw-r--r--spec/features/merge_request/user_locks_discussion_spec.rb2
-rw-r--r--spec/features/merge_request/user_manages_subscription_spec.rb2
-rw-r--r--spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_immediately_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb2
-rw-r--r--spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_opens_context_commits_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_posts_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_posts_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_rebases_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_conflicts_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb3
-rw-r--r--spec/features/merge_request/user_resolves_wip_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_reverts_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_reviews_image_spec.rb2
-rw-r--r--spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_breadcrumb_links_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb7
-rw-r--r--spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_closing_issues_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_deleted_target_branch_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_discussions_navigation_spec.rb27
-rw-r--r--spec/features/merge_request/user_sees_discussions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_widget_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb3
-rw-r--r--spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb3
-rw-r--r--spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_page_metadata_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_pipelines_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_system_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_versions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_wip_help_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_squashes_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_suggests_changes_on_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_toggles_whitespace_changes_spec.rb2
-rw-r--r--spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_uses_quick_actions_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_auto_expanding_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_commit_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_file_by_file_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_open_merge_request_spec.rb2
-rw-r--r--spec/features/merge_requests/admin_views_hidden_merge_requests_spec.rb27
-rw-r--r--spec/features/merge_requests/filters_generic_behavior_spec.rb2
-rw-r--r--spec/features/merge_requests/rss_spec.rb2
-rw-r--r--spec/features/merge_requests/user_exports_as_csv_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_approvals_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_assignees_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_deployments_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_draft_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_labels_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_milestones_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_target_branch_spec.rb2
-rw-r--r--spec/features/merge_requests/user_lists_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_mass_updates_spec.rb2
-rw-r--r--spec/features/merge_requests/user_sees_empty_state_spec.rb2
-rw-r--r--spec/features/merge_requests/user_sorts_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_all_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_closed_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_merged_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_open_merge_requests_spec.rb2
-rw-r--r--spec/features/milestone_spec.rb8
-rw-r--r--spec/features/nav/new_nav_toggle_spec.rb14
-rw-r--r--spec/features/oauth_registration_spec.rb17
-rw-r--r--spec/features/profiles/chat_names_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_preferences_page_spec.rb10
-rw-r--r--spec/features/project_variables_spec.rb5
-rw-r--r--spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb12
-rw-r--r--spec/features/projects/commit/cherry_pick_spec.rb4
-rw-r--r--spec/features/projects/diffs/diff_show_spec.rb2
-rw-r--r--spec/features/projects/environments/environment_spec.rb10
-rw-r--r--spec/features/projects/files/template_type_dropdown_spec.rb143
-rw-r--r--spec/features/projects/files/undo_template_spec.rb19
-rw-r--r--spec/features/projects/fork_spec.rb15
-rw-r--r--spec/features/projects/import_export/export_file_spec.rb4
-rw-r--r--spec/features/projects/issues/design_management/user_uploads_designs_spec.rb2
-rw-r--r--spec/features/projects/jobs_spec.rb14
-rw-r--r--spec/features/projects/labels/sort_labels_spec.rb20
-rw-r--r--spec/features/projects/members/manage_members_spec.rb22
-rw-r--r--spec/features/projects/members/sorting_spec.rb4
-rw-r--r--spec/features/projects/milestones/milestones_sorting_spec.rb15
-rw-r--r--spec/features/projects/navbar_spec.rb4
-rw-r--r--spec/features/projects/new_project_spec.rb4
-rw-r--r--spec/features/projects/pages/user_edits_settings_spec.rb2
-rw-r--r--spec/features/projects/pipelines/legacy_pipelines_spec.rb 0
-rw-r--r--spec/features/projects/pipelines/pipeline_spec.rb44
-rw-r--r--spec/features/projects/pipelines/pipelines_spec.rb21
-rw-r--r--spec/features/projects/settings/monitor_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/pipelines_settings_spec.rb24
-rw-r--r--spec/features/projects/settings/user_manages_project_members_spec.rb7
-rw-r--r--spec/features/projects/settings/user_searches_in_settings_spec.rb1
-rw-r--r--spec/features/projects/terraform_spec.rb11
-rw-r--r--spec/features/projects/tree/create_directory_spec.rb8
-rw-r--r--spec/features/projects/tree/create_file_spec.rb7
-rw-r--r--spec/features/projects/tree/tree_show_spec.rb6
-rw-r--r--spec/features/projects/tree/upload_file_spec.rb7
-rw-r--r--spec/features/projects_spec.rb8
-rw-r--r--spec/features/protected_branches_spec.rb2
-rw-r--r--spec/features/protected_tags_spec.rb2
-rw-r--r--spec/features/runners_spec.rb476
-rw-r--r--spec/features/search/user_searches_for_code_spec.rb59
-rw-r--r--spec/features/signed_commits_spec.rb12
-rw-r--r--spec/features/snippets/show_spec.rb21
-rw-r--r--spec/features/snippets/user_creates_snippet_spec.rb2
-rw-r--r--spec/features/triggers_spec.rb14
-rw-r--r--spec/features/user_sees_revert_modal_spec.rb2
-rw-r--r--spec/features/user_sorts_things_spec.rb2
-rw-r--r--spec/features/users/login_spec.rb3
185 files changed, 1027 insertions, 989 deletions
diff --git a/spec/features/abuse_report_spec.rb b/spec/features/abuse_report_spec.rb
index fdd11b59938..e0a61656a88 100644
--- a/spec/features/abuse_report_spec.rb
+++ b/spec/features/abuse_report_spec.rb
@@ -2,25 +2,155 @@
require 'spec_helper'
-RSpec.describe 'Abuse reports', feature_category: :not_owned do
- let(:another_user) { create(:user) }
+RSpec.describe 'Abuse reports', :js, feature_category: :insider_threat do
+ let_it_be(:abusive_user) { create(:user) }
+
+ let_it_be(:reporter1) { create(:user) }
+
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let_it_be(:issue) { create(:issue, project: project, author: abusive_user) }
before do
- sign_in(create(:user))
+ sign_in(reporter1)
end
- it 'report abuse' do
- visit user_path(another_user)
+ describe 'report abuse to administrator' do
+ shared_examples 'reports the user with an abuse category' do
+ it do
+ fill_and_submit_abuse_category_form
+ fill_and_submit_report_abuse_form
- click_link 'Report abuse'
+ expect(page).to have_content 'Thank you for your report'
+ end
+ end
- fill_in 'abuse_report_message', with: 'This user sends spam'
- click_button 'Send report'
+ shared_examples 'reports the user without an abuse category' do
+ it do
+ click_link 'Report abuse to administrator'
+
+ fill_and_submit_report_abuse_form
+
+ expect(page).to have_content 'Thank you for your report'
+ end
+ end
+
+ context 'when reporting an issue for abuse' do
+ before do
+ visit project_issue_path(project, issue)
+
+ click_button 'Issue actions'
+ end
+
+ it_behaves_like 'reports the user with an abuse category'
+
+ it 'redirects backs to the issue when cancel button is clicked' do
+ fill_and_submit_abuse_category_form
+
+ click_link 'Cancel'
+
+ expect(page).to have_current_path(project_issue_path(project, issue))
+ end
+ end
+
+ context 'when reporting an incident for abuse' do
+ let_it_be(:incident) { create(:incident, project: project, author: abusive_user) }
+
+ before do
+ visit project_issues_incident_path(project, incident)
+ click_button 'Incident actions'
+ end
+
+ it_behaves_like 'reports the user with an abuse category'
+ end
+
+ context 'when reporting a user profile for abuse' do
+ let_it_be(:reporter2) { create(:user) }
+
+ before do
+ visit user_path(abusive_user)
+ end
+
+ it_behaves_like 'reports the user with an abuse category'
+
+ it 'allows the reporter to report the same user for different abuse categories' do
+ visit user_path(abusive_user)
+
+ fill_and_submit_abuse_category_form
+ fill_and_submit_report_abuse_form
+
+ expect(page).to have_content 'Thank you for your report'
+
+ visit user_path(abusive_user)
- expect(page).to have_content 'Thank you for your report'
+ fill_and_submit_abuse_category_form("They're being offsensive or abusive.")
+ fill_and_submit_report_abuse_form
- visit user_path(another_user)
+ expect(page).to have_content 'Thank you for your report'
+ end
- expect(page).to have_button("Already reported for abuse")
+ it 'allows multiple users to report the same user' do
+ fill_and_submit_abuse_category_form
+ fill_and_submit_report_abuse_form
+
+ expect(page).to have_content 'Thank you for your report'
+
+ gitlab_sign_out
+ gitlab_sign_in(reporter2)
+
+ visit user_path(abusive_user)
+
+ fill_and_submit_abuse_category_form
+ fill_and_submit_report_abuse_form
+
+ expect(page).to have_content 'Thank you for your report'
+ end
+
+ it 'redirects backs to user profile when cancel button is clicked' do
+ fill_and_submit_abuse_category_form
+
+ click_link 'Cancel'
+
+ expect(page).to have_current_path(user_path(abusive_user))
+ end
+ end
+
+ context 'when reporting an merge request for abuse' do
+ let_it_be(:merge_request) { create(:merge_request, source_project: project, author: abusive_user) }
+
+ before do
+ visit project_merge_request_path(project, merge_request)
+ find('[data-testid="merge-request-actions"]').click
+ end
+
+ it_behaves_like 'reports the user with an abuse category'
+ end
+
+ context 'when reporting a comment' do
+ let_it_be(:issue) { create(:issue, project: project, author: abusive_user) }
+ let_it_be(:comment) do
+ create(:discussion_note_on_issue, author: abusive_user, project: project, noteable: issue, note: 'some note')
+ end
+
+ before do
+ visit project_issue_path(project, issue)
+ click_button 'More actions'
+ end
+
+ it_behaves_like 'reports the user without an abuse category'
+ end
+ end
+
+ private
+
+ def fill_and_submit_abuse_category_form(category = "They're posting spam.")
+ click_button 'Report abuse to administrator'
+
+ choose category
+ click_button 'Next'
+ end
+
+ def fill_and_submit_report_abuse_form
+ fill_in 'abuse_report_message', with: 'This user sends spam'
+ click_button 'Send report'
end
end
diff --git a/spec/features/admin/admin_broadcast_messages_spec.rb b/spec/features/admin/admin_broadcast_messages_spec.rb
deleted file mode 100644
index a6bbdd70fc3..00000000000
--- a/spec/features/admin/admin_broadcast_messages_spec.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Admin Broadcast Messages', feature_category: :onboarding do
- before do
- admin = create(:admin)
- sign_in(admin)
- stub_feature_flags(vue_broadcast_messages: false)
- gitlab_enable_admin_mode_sign_in(admin)
- create(
- :broadcast_message,
- :expired,
- message: 'Migration to new server',
- target_access_levels: [Gitlab::Access::DEVELOPER]
- )
- visit admin_broadcast_messages_path
- end
-
- it 'see broadcast messages list' do
- expect(page).to have_content 'Migration to new server'
- end
-
- it 'creates a customized broadcast banner message' do
- fill_in 'broadcast_message_message', with: 'Application update from **4:00 CST to 5:00 CST**'
- fill_in 'broadcast_message_target_path', with: '*/user_onboarded'
- select 'light-indigo', from: 'broadcast_message_theme'
- select Date.today.next_year.year, from: 'broadcast_message_ends_at_1i'
- check 'Guest'
- check 'Owner'
- click_button 'Add broadcast message'
-
- expect(page).to have_current_path admin_broadcast_messages_path, ignore_query: true
- expect(page).to have_content 'Application update from 4:00 CST to 5:00 CST'
- expect(page).to have_content 'Guest, Owner'
- expect(page).to have_content '*/user_onboarded'
- expect(page).to have_selector 'strong', text: '4:00 CST to 5:00 CST'
- expect(page).to have_selector %(.light-indigo[role=alert])
- end
-
- it 'creates a customized broadcast notification message' do
- fill_in 'broadcast_message_message', with: 'Application update from **4:00 CST to 5:00 CST**'
- fill_in 'broadcast_message_target_path', with: '*/user_onboarded'
- select 'Notification', from: 'broadcast_message_broadcast_type'
- select Date.today.next_year.year, from: 'broadcast_message_ends_at_1i'
- check 'Reporter'
- check 'Developer'
- check 'Maintainer'
- click_button 'Add broadcast message'
-
- expect(page).to have_current_path admin_broadcast_messages_path, ignore_query: true
- expect(page).to have_content 'Application update from 4:00 CST to 5:00 CST'
- expect(page).to have_content 'Reporter, Developer, Maintainer'
- expect(page).to have_content '*/user_onboarded'
- expect(page).to have_content 'Notification'
- expect(page).to have_selector 'strong', text: '4:00 CST to 5:00 CST'
- end
-
- it 'edit an existing broadcast message' do
- click_link 'Edit'
- fill_in 'broadcast_message_message', with: 'Application update RIGHT NOW'
- check 'Reporter'
- click_button 'Update broadcast message'
-
- expect(page).to have_current_path admin_broadcast_messages_path, ignore_query: true
- expect(page).to have_content 'Application update RIGHT NOW'
-
- page.within('.table-responsive') do
- expect(page).to have_content 'Reporter, Developer'
- end
- end
-
- it 'remove an existing broadcast message' do
- click_link 'Remove'
-
- expect(page).to have_current_path admin_broadcast_messages_path, ignore_query: true
- expect(page).not_to have_content 'Migration to new server'
- end
-
- it 'updates a preview of a customized broadcast banner message', :js do
- fill_in 'broadcast_message_message', with: "Live **Markdown** previews. :tada:"
-
- page.within('.js-broadcast-banner-message-preview') do
- expect(page).to have_selector('strong', text: 'Markdown')
- expect(page).to have_emoji('tada')
- end
- end
-
- it 'updates a preview of a customized broadcast notification message', :js do
- fill_in 'broadcast_message_message', with: "Live **Markdown** previews. :tada:"
- select 'Notification', from: 'broadcast_message_broadcast_type'
-
- page.within('#broadcast-message-preview') do
- expect(page).to have_selector('strong', text: 'Markdown')
- expect(page).to have_emoji('tada')
- end
- end
-end
diff --git a/spec/features/admin/admin_groups_spec.rb b/spec/features/admin/admin_groups_spec.rb
index c36a742af6b..119e09f9b09 100644
--- a/spec/features/admin/admin_groups_spec.rb
+++ b/spec/features/admin/admin_groups_spec.rb
@@ -204,6 +204,17 @@ RSpec.describe 'Admin Groups', feature_category: :subgroups do
expect(page).to have_content(new_admin_note_text)
end
+
+ it 'hides removed note' do
+ group = create(:group, :private)
+ group.create_admin_note(note: 'A note by an administrator')
+
+ visit admin_group_edit_path(group)
+ fill_in 'group_admin_note_attributes_note', with: ''
+ click_button 'Save changes'
+
+ expect(page).not_to have_content(s_('Admin|Admin notes'))
+ end
end
describe 'add user into a group', :js do
@@ -258,9 +269,12 @@ RSpec.describe 'Admin Groups', feature_category: :subgroups do
expect(page).to have_content('Developer')
end
- find_member_row(current_user).click_button(title: 'Leave')
+ show_actions_for_username(current_user)
+ click_button _('Leave group')
- accept_gl_confirm(button_text: 'Leave')
+ within_modal do
+ click_button _('Leave')
+ end
wait_for_all_requests
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index 0cb813c40f4..3c7eba2cc97 100644
--- a/spec/features/admin/admin_projects_spec.rb
+++ b/spec/features/admin/admin_projects_spec.rb
@@ -151,12 +151,11 @@ RSpec.describe "Admin::Projects", feature_category: :projects do
expect(find_member_row(current_user)).to have_content('Developer')
- page.within find_member_row(current_user) do
- click_button 'Leave'
- end
+ show_actions_for_username(current_user)
+ click_button _('Leave group')
within_modal do
- click_button('Leave')
+ click_button _('Leave')
end
expect(page).to have_current_path(dashboard_projects_path, ignore_query: true, url: false)
diff --git a/spec/features/admin/admin_sees_background_migrations_spec.rb b/spec/features/admin/admin_sees_background_migrations_spec.rb
index e1746dad196..4b8636da6b4 100644
--- a/spec/features/admin/admin_sees_background_migrations_spec.rb
+++ b/spec/features/admin/admin_sees_background_migrations_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe "Admin > Admin sees background migrations", feature_category: :database do
+ include ListboxHelpers
+
let_it_be(:admin) { create(:admin) }
let(:job_class) { Gitlab::BackgroundMigration::CopyColumnUsingBackgroundMigrationJob }
@@ -204,7 +206,7 @@ RSpec.describe "Admin > Admin sees background migrations", feature_category: :da
it 'does not render the database listbox' do
visit admin_background_migrations_path
- expect(page).not_to have_selector('[data-testid="database-listbox"]')
+ expect(page).not_to have_button('main')
end
end
@@ -215,41 +217,26 @@ RSpec.describe "Admin > Admin sees background migrations", feature_category: :da
allow(Gitlab::Database).to receive(:db_config_names).and_return(%w[main ci])
end
- it 'does render the database listbox' do
- visit admin_background_migrations_path
-
- expect(page).to have_selector('[data-testid="database-listbox"]')
- end
-
- it 'defaults to main when no parameter is passed' do
+ it 'renders the database listbox' do
visit admin_background_migrations_path
- listbox = page.find('[data-testid="database-listbox"]')
-
- expect(listbox).to have_text('main')
+ expect(page).to have_button('main')
end
it 'shows correct database when a parameter is passed' do
visit admin_background_migrations_path(database: 'ci')
- listbox = page.find('[data-testid="database-listbox"]')
-
- expect(listbox).to have_text('ci')
+ expect(page).to have_button('ci')
end
it 'updates the path to correct database when clicking on listbox option' do
visit admin_background_migrations_path
- listbox = page.find('[data-testid="database-listbox"]')
- expect(listbox).to have_text('main')
-
- listbox.find('button').click
- listbox.find('li', text: 'ci').click
- wait_for_requests
+ click_button 'main'
+ select_listbox_item('ci')
expect(page).to have_current_path(admin_background_migrations_path(database: 'ci'))
- listbox = page.find('[data-testid="database-listbox"]')
- expect(listbox).to have_text('ci')
+ expect(page).to have_button('ci')
end
end
end
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
index 1f40f1f1bce..ca08bc9e577 100644
--- a/spec/features/admin/admin_users_spec.rb
+++ b/spec/features/admin/admin_users_spec.rb
@@ -69,13 +69,9 @@ RSpec.describe "Admin::Users", feature_category: :user_management do
expect(page).not_to have_content(message)
end
- context 'with no license and service ping disabled' do
+ context 'with no license and service ping disabled', :without_license do
before do
stub_application_setting(usage_ping_enabled: false)
-
- if Gitlab.ee?
- allow(License).to receive(:current).and_return(nil)
- end
end
it 'renders registration features CTA' do
diff --git a/spec/features/admin/dashboard_spec.rb b/spec/features/admin/dashboard_spec.rb
index baca60134b9..06f9c531e74 100644
--- a/spec/features/admin/dashboard_spec.rb
+++ b/spec/features/admin/dashboard_spec.rb
@@ -49,8 +49,7 @@ RSpec.describe 'admin visits dashboard' do
end
expect(page).to have_content('Blocked users 7')
- expect(page).to have_content('Total users 78')
- expect(page).to have_content('Active users 71')
+ expect(page).to have_content('Total users (active users + blocked users) 78')
end
end
diff --git a/spec/features/admin/users/users_spec.rb b/spec/features/admin/users/users_spec.rb
index 4b49e8f4bc6..975af84969d 100644
--- a/spec/features/admin/users/users_spec.rb
+++ b/spec/features/admin/users/users_spec.rb
@@ -28,7 +28,7 @@ RSpec.describe 'Admin::Users', feature_category: :user_management do
expect(page).to have_content(current_user.email)
expect(page).to have_content(current_user.name)
- expect(page).to have_content(current_user.created_at.strftime('%e %b, %Y'))
+ expect(page).to have_content(current_user.created_at.strftime('%b %d, %Y'))
expect(page).to have_content(user.email)
expect(page).to have_content(user.name)
expect(page).to have_content('Projects')
@@ -367,6 +367,8 @@ RSpec.describe 'Admin::Users', feature_category: :user_management do
.to eq(Gitlab.config.gitlab.default_projects_limit)
expect(user.can_create_group)
.to eq(Gitlab::CurrentSettings.can_create_group)
+ expect(user.private_profile)
+ .to eq(Gitlab::CurrentSettings.user_defaults_to_private_profile)
end
it 'creates user with valid data' do
@@ -564,6 +566,7 @@ RSpec.describe 'Admin::Users', feature_category: :user_management do
fill_in 'user_password', with: 'AValidPassword1'
fill_in 'user_password_confirmation', with: 'AValidPassword1'
choose 'user_access_level_admin'
+ check 'Private profile'
click_button 'Save changes'
end
@@ -577,6 +580,7 @@ RSpec.describe 'Admin::Users', feature_category: :user_management do
expect(user.name).to eq('Big Bang')
expect(user.admin?).to be_truthy
expect(user.password_expires_at).to be <= Time.zone.now
+ expect(user.private_profile).to eq(true)
end
end
diff --git a/spec/features/callouts/registration_enabled_spec.rb b/spec/features/callouts/registration_enabled_spec.rb
index 1ea52dbf12a..ac7b68876da 100644
--- a/spec/features/callouts/registration_enabled_spec.rb
+++ b/spec/features/callouts/registration_enabled_spec.rb
@@ -13,7 +13,7 @@ RSpec.describe 'Registration enabled callout', feature_category: :authentication
stub_application_setting(signup_enabled: true)
end
- context 'when an admin is logged in' do
+ context 'when an admin is logged in', :do_not_mock_admin_mode_setting do
before do
sign_in(admin)
end
diff --git a/spec/features/commit_spec.rb b/spec/features/commit_spec.rb
index 649b67e7fd0..a9672569a4a 100644
--- a/spec/features/commit_spec.rb
+++ b/spec/features/commit_spec.rb
@@ -22,6 +22,8 @@ RSpec.describe 'Commit', feature_category: :source_code_management do
end
describe "commit details" do
+ subject { page }
+
before do
visit project_commit_path(project, commit)
end
@@ -37,6 +39,8 @@ RSpec.describe 'Commit', feature_category: :source_code_management do
it 'renders diff stats', :js do
expect(page).to have_selector(".diff-stats")
end
+
+ it_behaves_like 'code highlight'
end
describe "pagination" do
diff --git a/spec/features/dashboard/activity_spec.rb b/spec/features/dashboard/activity_spec.rb
index b1734cb353b..edb3dacc2cc 100644
--- a/spec/features/dashboard/activity_spec.rb
+++ b/spec/features/dashboard/activity_spec.rb
@@ -9,6 +9,8 @@ RSpec.describe 'Dashboard > Activity', feature_category: :users do
sign_in(user)
end
+ it_behaves_like 'a dashboard page with sidebar', :activity_dashboard_path, :activity
+
context 'tabs' do
it 'shows Your Projects' do
visit activity_dashboard_path
diff --git a/spec/features/dashboard/groups_list_spec.rb b/spec/features/dashboard/groups_list_spec.rb
index b28e2ccf787..a45e0a58ed6 100644
--- a/spec/features/dashboard/groups_list_spec.rb
+++ b/spec/features/dashboard/groups_list_spec.rb
@@ -19,6 +19,8 @@ RSpec.describe 'Dashboard Groups page', :js, feature_category: :subgroups do
page.find("[data-testid='group-#{group.id}-dropdown-button'").click
end
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_groups_path, :groups
+
it 'shows groups user is member of' do
group.add_owner(user)
nested_group.add_owner(user)
diff --git a/spec/features/dashboard/issuables_counter_spec.rb b/spec/features/dashboard/issuables_counter_spec.rb
index 5c7285f0491..5dc59cfa841 100644
--- a/spec/features/dashboard/issuables_counter_spec.rb
+++ b/spec/features/dashboard/issuables_counter_spec.rb
@@ -12,7 +12,6 @@ RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching,
issue.assignees = [user]
merge_request.update!(assignees: [user])
sign_in(user)
- stub_feature_flags(limit_assigned_issues_count: false)
end
it 'reflects dashboard issues count' do
@@ -20,9 +19,9 @@ RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching,
expect_counters('issues', '1', n_("%d assigned issue", "%d assigned issues", 1) % 1)
- issue.assignees = []
+ issue.update!(assignees: [])
- user.invalidate_cache_counts
+ Users::AssignedIssuesCountService.new(current_user: user).delete_cache
travel_to(3.minutes.from_now) do
visit issues_path
@@ -31,28 +30,6 @@ RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching,
end
end
- context 'when :limit_assigned_issues_count FF is used' do
- before do
- stub_feature_flags(limit_assigned_issues_count: true)
- end
-
- it 'reflects dashboard issues count' do
- visit issues_path
-
- expect_counters('issues', '1', n_("%d assigned issue", "%d assigned issues", 1) % 1)
-
- issue.update!(assignees: [])
-
- Users::AssignedIssuesCountService.new(current_user: user).delete_cache
-
- travel_to(3.minutes.from_now) do
- visit issues_path
-
- expect_counters('issues', '0', n_("%d assigned issue", "%d assigned issues", 0) % 0)
- end
- end
- end
-
it 'reflects dashboard merge requests count', :js do
visit merge_requests_path
diff --git a/spec/features/dashboard/issues_spec.rb b/spec/features/dashboard/issues_spec.rb
index d74965f58fa..ae375bd3e13 100644
--- a/spec/features/dashboard/issues_spec.rb
+++ b/spec/features/dashboard/issues_spec.rb
@@ -21,6 +21,8 @@ RSpec.describe 'Dashboard Issues', feature_category: :team_planning do
visit issues_dashboard_path(assignee_username: current_user.username)
end
+ it_behaves_like 'a dashboard page with sidebar', :issues_dashboard_path, :issues
+
describe 'issues' do
it 'shows issues assigned to current user' do
expect(page).to have_content(assigned_issue.title)
diff --git a/spec/features/dashboard/merge_requests_spec.rb b/spec/features/dashboard/merge_requests_spec.rb
index 56d7c45de5d..a146a6987bc 100644
--- a/spec/features/dashboard/merge_requests_spec.rb
+++ b/spec/features/dashboard/merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review do
+RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review_workflow do
include Spec::Support::Helpers::Features::SortingHelpers
include FilteredSearchHelpers
include ProjectForksHelper
@@ -19,6 +19,8 @@ RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review do
sign_in(current_user)
end
+ it_behaves_like 'a dashboard page with sidebar', :merge_requests_dashboard_path, :merge_requests
+
it 'disables target branch filter' do
visit merge_requests_dashboard_path
diff --git a/spec/features/dashboard/milestones_spec.rb b/spec/features/dashboard/milestones_spec.rb
index b4d0d9c5812..a9f23f90bb1 100644
--- a/spec/features/dashboard/milestones_spec.rb
+++ b/spec/features/dashboard/milestones_spec.rb
@@ -26,6 +26,8 @@ RSpec.describe 'Dashboard > Milestones', feature_category: :team_planning do
visit dashboard_milestones_path
end
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_milestones_path, :milestones
+
it 'sees milestones' do
expect(page).to have_current_path dashboard_milestones_path, ignore_query: true
expect(page).to have_content(milestone.title)
diff --git a/spec/features/dashboard/navbar_spec.rb b/spec/features/dashboard/navbar_spec.rb
new file mode 100644
index 00000000000..ff0ff899fc2
--- /dev/null
+++ b/spec/features/dashboard/navbar_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe '"Your work" navbar', feature_category: :navigation do
+ include_context 'dashboard navbar structure'
+
+ let_it_be(:user) { create(:user) }
+
+ it_behaves_like 'verified navigation bar' do
+ before do
+ sign_in(user)
+ visit root_path
+ end
+ end
+end
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index 2b89f16bbff..779fbb48ddb 100644
--- a/spec/features/dashboard/projects_spec.rb
+++ b/spec/features/dashboard/projects_spec.rb
@@ -18,6 +18,8 @@ RSpec.describe 'Dashboard Projects', feature_category: :projects do
end
end
+ it_behaves_like "a dashboard page with sidebar", :dashboard_projects_path, :projects
+
context 'when user has access to the project' do
it 'shows role badge' do
visit dashboard_projects_path
diff --git a/spec/features/dashboard/snippets_spec.rb b/spec/features/dashboard/snippets_spec.rb
index ab2cfc0573e..ba40290d866 100644
--- a/spec/features/dashboard/snippets_spec.rb
+++ b/spec/features/dashboard/snippets_spec.rb
@@ -5,6 +5,8 @@ require 'spec_helper'
RSpec.describe 'Dashboard snippets', feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_snippets_path, :snippets
+
context 'when the project has snippets' do
let(:project) { create(:project, :public, creator: user) }
let!(:snippets) { create_list(:project_snippet, 2, :public, author: project.first_owner, project: project) }
diff --git a/spec/features/dashboard/todos/todos_spec.rb b/spec/features/dashboard/todos/todos_spec.rb
index 606bc82a7bb..59bb1a452c9 100644
--- a/spec/features/dashboard/todos/todos_spec.rb
+++ b/spec/features/dashboard/todos/todos_spec.rb
@@ -15,6 +15,8 @@ RSpec.describe 'Dashboard Todos', feature_category: :team_planning do
project.add_developer(user)
end
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_todos_path, :todos
+
context 'User does not have todos' do
before do
sign_in(user)
@@ -152,6 +154,22 @@ RSpec.describe 'Dashboard Todos', feature_category: :team_planning do
it_behaves_like 'deleting the todo'
it_behaves_like 'deleting and restoring the todo'
end
+
+ context 'when todo has a note' do
+ let(:note) { create(:note, project: project, note: "Check out stuff", noteable: create(:issue, project: project)) }
+ let!(:todo) { create(:todo, :mentioned, user: user, project: project, author: author, note: note, target: note.noteable) }
+
+ before do
+ sign_in(user)
+ visit dashboard_todos_path
+ end
+
+ it 'shows note preview' do
+ expect(page).to have_no_content('mentioned you:')
+ expect(page).to have_no_content('"Check out stuff"')
+ expect(page).to have_content('Check out stuff')
+ end
+ end
end
context 'User created todos for themself' do
@@ -446,27 +464,30 @@ RSpec.describe 'Dashboard Todos', feature_category: :team_planning do
end
end
- context 'User has a todo for an access requested raised for group membership' do
- let_it_be(:group) { create(:group, :public) }
+ context 'User requested access' do
+ shared_examples 'has todo present with access request content' do
+ specify do
+ create(:todo, :member_access_requested,
+ user: user,
+ target: target,
+ author: author
+ )
+ target.add_owner(user)
- let_it_be(:todo) do
- create(:todo, :member_access_requested,
- user: user,
- target: group,
- author: author,
- group: group)
- end
-
- before do
- group.add_owner(user)
- sign_in(user)
+ sign_in(user)
+ visit dashboard_todos_path
- visit dashboard_todos_path
+ expect(page).to have_selector('.todos-list .todo', count: 1)
+ expect(page).to have_content "#{author.name} has requested access to #{target.class.name.downcase} #{target.name}"
+ end
end
- it 'has todo present with access request content' do
- expect(page).to have_selector('.todos-list .todo', count: 1)
- expect(page).to have_content "#{author.name} has requested access to group #{group.name}"
+ context 'when user requests access to project or group' do
+ %i[project group].each do |target_type|
+ it_behaves_like 'has todo present with access request content' do
+ let_it_be(:target) { create(target_type, :public) }
+ end
+ end
end
end
end
diff --git a/spec/features/dashboard/user_filters_projects_spec.rb b/spec/features/dashboard/user_filters_projects_spec.rb
index 1168a6827fd..8ec9b98c3b3 100644
--- a/spec/features/dashboard/user_filters_projects_spec.rb
+++ b/spec/features/dashboard/user_filters_projects_spec.rb
@@ -40,7 +40,7 @@ RSpec.describe 'Dashboard > User filters projects', feature_category: :projects
it 'returns message when starred projects fitler returns no results' do
fill_in 'project-filter-form-field', with: 'Beta\n'
- expect(page).to have_content('This user doesn\'t have any personal projects')
+ expect(page).to have_content('There are no projects available to be displayed here.')
expect(page).not_to have_content('You don\'t have starred projects yet')
end
end
diff --git a/spec/features/error_tracking/user_sees_error_index_spec.rb b/spec/features/error_tracking/user_sees_error_index_spec.rb
index b7dfb6afc18..f83c8ffe439 100644
--- a/spec/features/error_tracking/user_sees_error_index_spec.rb
+++ b/spec/features/error_tracking/user_sees_error_index_spec.rb
@@ -50,7 +50,7 @@ feature_category: :error_tracking do
end
it 'renders call to action' do
- expect(page).to have_content('Enable error tracking')
+ expect(page).to have_content('Monitor your errors directly in GitLab.')
end
end
diff --git a/spec/features/global_search_spec.rb b/spec/features/global_search_spec.rb
index 7c55551e9c3..15393ec4cd6 100644
--- a/spec/features/global_search_spec.rb
+++ b/spec/features/global_search_spec.rb
@@ -72,10 +72,6 @@ RSpec.describe 'Global search', :js, feature_category: :global_search do
# TODO: Remove this along with feature flag #339348
stub_feature_flags(new_header_search: true)
visit dashboard_projects_path
-
- # initialize javascript loaded input search input field
- find('#search').click
- find('body').click
end
it 'renders updated search bar' do
diff --git a/spec/features/groups/import_export/connect_instance_spec.rb b/spec/features/groups/import_export/connect_instance_spec.rb
index 11cc4bb9b37..8aea18a268b 100644
--- a/spec/features/groups/import_export/connect_instance_spec.rb
+++ b/spec/features/groups/import_export/connect_instance_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe 'Import/Export - Connect to another instance', :js, feature_categ
it 'successfully connects to remote instance' do
pat = 'demo-pat'
- expect(page).to have_content 'Import groups from another instance of GitLab'
+ expect(page).to have_content 'Import groups by direct transfer'
expect(page).to have_content 'Not all related objects are migrated'
fill_in :bulk_import_gitlab_url, with: source_url
@@ -64,7 +64,7 @@ RSpec.describe 'Import/Export - Connect to another instance', :js, feature_categ
click_on 'Connect instance'
- expect(page).to have_content 'Please fill in GitLab source URL'
+ expect(page).to have_content 'Enter the URL for the source instance'
end
end
@@ -89,7 +89,7 @@ RSpec.describe 'Import/Export - Connect to another instance', :js, feature_categ
end
it 'renders fields and button disabled' do
- expect(page).to have_field('GitLab source URL', disabled: true)
+ expect(page).to have_field('GitLab source instance URL', disabled: true)
expect(page).to have_field('Personal access token', disabled: true)
expect(page).to have_button('Connect instance', disabled: true)
end
diff --git a/spec/features/groups/import_export/migration_history_spec.rb b/spec/features/groups/import_export/migration_history_spec.rb
index f851c5e2ec5..9fc9c7898d1 100644
--- a/spec/features/groups/import_export/migration_history_spec.rb
+++ b/spec/features/groups/import_export/migration_history_spec.rb
@@ -12,6 +12,8 @@ RSpec.describe 'Import/Export - GitLab migration history', :js, feature_category
let_it_be(:failed_entity_2) { create(:bulk_import_entity, :failed, bulk_import: user_import_2) }
before do
+ stub_application_setting(bulk_import_enabled: true)
+
gitlab_sign_in(user)
visit new_group_path
@@ -24,7 +26,7 @@ RSpec.describe 'Import/Export - GitLab migration history', :js, feature_category
wait_for_requests
- expect(page).to have_content 'Group import history'
+ expect(page).to have_content 'GitLab Migration history'
expect(page.find('tbody')).to have_css('tr', count: 2)
end
end
diff --git a/spec/features/groups/labels/sort_labels_spec.rb b/spec/features/groups/labels/sort_labels_spec.rb
index c2410246fe1..e177461701e 100644
--- a/spec/features/groups/labels/sort_labels_spec.rb
+++ b/spec/features/groups/labels/sort_labels_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
+ include ListboxHelpers
+
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:label1) { create(:group_label, title: 'Foo', description: 'Lorem ipsum', group: group) }
@@ -28,16 +30,16 @@ RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
it 'sorts by date' do
click_button 'Name'
- sort_options = find('ul[role="listbox"]').all('li').collect(&:text)
-
- expect(sort_options[0]).to eq('Name')
- expect(sort_options[1]).to eq('Name, descending')
- expect(sort_options[2]).to eq('Last created')
- expect(sort_options[3]).to eq('Oldest created')
- expect(sort_options[4]).to eq('Updated date')
- expect(sort_options[5]).to eq('Oldest updated')
+ expect_listbox_items([
+ 'Name',
+ 'Name, descending',
+ 'Last created',
+ 'Oldest created',
+ 'Updated date',
+ 'Oldest updated'
+ ])
- find('li', text: 'Name, descending').click
+ select_listbox_item('Name, descending')
# assert default sorting
within '.other-labels' do
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb
index 4211f2b6265..5cd5908b359 100644
--- a/spec/features/groups/members/manage_members_spec.rb
+++ b/spec/features/groups/members/manage_members_spec.rb
@@ -50,12 +50,13 @@ RSpec.describe 'Groups > Members > Manage members', feature_category: :subgroups
# Open modal
page.within(second_row) do
- click_button 'Remove member'
+ show_actions
+ click_button _('Remove member')
end
within_modal do
expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests'
- click_button('Remove member')
+ click_button _('Remove member')
end
wait_for_requests
diff --git a/spec/features/groups/members/sort_members_spec.rb b/spec/features/groups/members/sort_members_spec.rb
index 4e9adda5f2b..5634122ec16 100644
--- a/spec/features/groups/members/sort_members_spec.rb
+++ b/spec/features/groups/members/sort_members_spec.rb
@@ -56,7 +56,7 @@ RSpec.describe 'Groups > Members > Sort members', :js, feature_category: :subgro
expect(first_row.text).to include(owner.name)
expect(second_row.text).to include(developer.name)
- expect_sort_by('Created on', :asc)
+ expect_sort_by('User created', :asc)
end
it 'sorts by user created on descending' do
@@ -65,7 +65,7 @@ RSpec.describe 'Groups > Members > Sort members', :js, feature_category: :subgro
expect(first_row.text).to include(developer.name)
expect(second_row.text).to include(owner.name)
- expect_sort_by('Created on', :desc)
+ expect_sort_by('User created', :desc)
end
it 'sorts by last activity ascending' do
diff --git a/spec/features/groups/merge_requests_spec.rb b/spec/features/groups/merge_requests_spec.rb
index 87f1f422e90..8a3401d0572 100644
--- a/spec/features/groups/merge_requests_spec.rb
+++ b/spec/features/groups/merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group merge requests page', feature_category: :code_review do
+RSpec.describe 'Group merge requests page', feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:path) { merge_requests_group_path(group) }
diff --git a/spec/features/groups/milestones_sorting_spec.rb b/spec/features/groups/milestones_sorting_spec.rb
index 5543938957a..0f0ecb8f5f3 100644
--- a/spec/features/groups/milestones_sorting_spec.rb
+++ b/spec/features/groups/milestones_sorting_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
+ include ListboxHelpers
+
let(:group) { create(:group) }
let!(:project) { create(:project_empty_repo, group: group) }
let!(:other_project) { create(:project_empty_repo, group: group) }
@@ -27,13 +29,13 @@ RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
expect(page.all('ul.content-list > li strong > a').map(&:text)).to eq(['v2.0', 'v2.0', 'v3.0', 'v1.0', 'v1.0'])
end
- within '[data-testid=milestone_sort_by_dropdown]' do
- click_button 'Due soon'
- expect(find('ul[role="listbox"]').all('li').map(&:text)).to eq(['Due soon', 'Due later', 'Start soon', 'Start later', 'Name, ascending', 'Name, descending'])
+ click_button 'Due soon'
- find('li', text: 'Due later').click
- expect(page).to have_button('Due later')
- end
+ expect_listbox_items(['Due soon', 'Due later', 'Start soon', 'Start later', 'Name, ascending', 'Name, descending'])
+
+ select_listbox_item('Due later')
+
+ expect(page).to have_button('Due later')
# assert descending sorting
within '.milestones' do
diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb
index 180ccab78bc..a52e2d95fed 100644
--- a/spec/features/groups/navbar_spec.rb
+++ b/spec/features/groups/navbar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group navbar', feature_category: :navigation do
+RSpec.describe 'Group navbar', :with_license, feature_category: :navigation do
include NavbarStructureHelper
include WikiHelpers
diff --git a/spec/features/groups/new_group_page_spec.rb b/spec/features/groups/new_group_page_spec.rb
index 662ef734299..a07c27331d9 100644
--- a/spec/features/groups/new_group_page_spec.rb
+++ b/spec/features/groups/new_group_page_spec.rb
@@ -10,6 +10,8 @@ RSpec.describe 'New group page', :js, feature_category: :subgroups do
sign_in(user)
end
+ it_behaves_like 'a dashboard page with sidebar', :new_group_path, :groups
+
describe 'new top level group alert' do
context 'when a user visits the new group page' do
it 'shows the new top level group alert' do
diff --git a/spec/features/incidents/user_views_incident_spec.rb b/spec/features/incidents/user_views_incident_spec.rb
index 8216aca787a..49041d187dd 100644
--- a/spec/features/incidents/user_views_incident_spec.rb
+++ b/spec/features/incidents/user_views_incident_spec.rb
@@ -57,7 +57,7 @@ RSpec.describe "User views incident", feature_category: :incident_management do
it 'shows incident actions', :js do
click_button 'Incident actions'
- expect(page).to have_link 'Report abuse to administrator'
+ expect(page).to have_button 'Report abuse to administrator'
end
end
end
diff --git a/spec/features/issues/group_label_sidebar_spec.rb b/spec/features/issues/group_label_sidebar_spec.rb
index b26030fe8d0..41450ba3373 100644
--- a/spec/features/issues/group_label_sidebar_spec.rb
+++ b/spec/features/issues/group_label_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group label on issue', feature_category: :team_planning do
+RSpec.describe 'Group label on issue', :with_license, feature_category: :team_planning do
it 'renders link to the project issues page', :js do
group = create(:group)
project = create(:project, :public, namespace: group)
diff --git a/spec/features/issues/issue_header_spec.rb b/spec/features/issues/issue_header_spec.rb
index 090067fc4ac..6c5daa29631 100644
--- a/spec/features/issues/issue_header_spec.rb
+++ b/spec/features/issues/issue_header_spec.rb
@@ -27,7 +27,7 @@ RSpec.describe 'issue header', :js, feature_category: :team_planning do
it 'shows the "New related issue", "Report abuse", and "Delete issue" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
- expect(page).to have_link 'Report abuse to administrator'
+ expect(page).to have_button 'Report abuse to administrator'
expect(page).to have_button 'Delete issue'
expect(page).not_to have_link 'Submit as spam'
end
@@ -68,10 +68,10 @@ RSpec.describe 'issue header', :js, feature_category: :team_planning do
visit project_issue_path(project, authored_issue)
end
- it 'does not show "Report abuse" link in dropdown' do
+ it 'does not show "Report abuse" button in dropdown' do
click_button 'Issue actions'
- expect(page).not_to have_link 'Report abuse to administrator'
+ expect(page).not_to have_button 'Report abuse to administrator'
end
end
end
@@ -116,7 +116,7 @@ RSpec.describe 'issue header', :js, feature_category: :team_planning do
it 'only shows the "New related issue" and "Report abuse" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
- expect(page).to have_link 'Report abuse to administrator'
+ expect(page).to have_button 'Report abuse to administrator'
expect(page).not_to have_link 'Submit as spam'
expect(page).not_to have_button 'Delete issue'
end
@@ -157,10 +157,10 @@ RSpec.describe 'issue header', :js, feature_category: :team_planning do
visit project_issue_path(project, authored_issue)
end
- it 'does not show "Report abuse" link in dropdown' do
+ it 'does not show "Report abuse" button in dropdown' do
click_button 'Issue actions'
- expect(page).not_to have_link 'Report abuse to administrator'
+ expect(page).not_to have_button 'Report abuse to administrator'
end
end
end
diff --git a/spec/features/issues/user_creates_issue_spec.rb b/spec/features/issues/user_creates_issue_spec.rb
index a4b8cb91999..df039493cec 100644
--- a/spec/features/issues/user_creates_issue_spec.rb
+++ b/spec/features/issues/user_creates_issue_spec.rb
@@ -161,6 +161,11 @@ RSpec.describe "User creates issue", feature_category: :team_planning do
let(:project) { create(:project, :public, :repository) }
before do
+ # With multistore feature flags enabled (using an actual Redis store instead of NullStore),
+ # it somehow writes an invalid content to Redis and the specs would fail.
+ stub_feature_flags(use_primary_and_secondary_stores_for_repository_cache: false)
+ stub_feature_flags(use_primary_store_as_default_for_repository_cache: false)
+
project.repository.create_file(
user,
'.gitlab/issue_templates/bug.md',
diff --git a/spec/features/issues/user_edits_issue_spec.rb b/spec/features/issues/user_edits_issue_spec.rb
index 223832a6ede..19b2633969d 100644
--- a/spec/features/issues/user_edits_issue_spec.rb
+++ b/spec/features/issues/user_edits_issue_spec.rb
@@ -107,14 +107,14 @@ RSpec.describe "Issues > User edits issue", :js, feature_category: :team_plannin
end
it 'places focus on the web editor' do
- toggle_editing_mode_selector = '[data-testid="toggle-editing-mode-button"] label'
content_editor_focused_selector = '[data-testid="content-editor"].is-focused'
markdown_field_focused_selector = 'textarea:focus'
click_edit_issue_description
expect(page).to have_selector(markdown_field_focused_selector)
- find(toggle_editing_mode_selector, text: 'Rich text').click
+ click_on _('View rich text')
+ click_on _('Rich text')
expect(page).not_to have_selector(content_editor_focused_selector)
@@ -124,7 +124,8 @@ RSpec.describe "Issues > User edits issue", :js, feature_category: :team_plannin
expect(page).to have_selector(content_editor_focused_selector)
- find(toggle_editing_mode_selector, text: 'Source').click
+ click_on _('View markdown')
+ click_on _('Markdown')
expect(page).not_to have_selector(markdown_field_focused_selector)
end
diff --git a/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb b/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
index b9a25f47da9..91b18454af5 100644
--- a/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
+++ b/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > Real-time sidebar', :js, feature_category: :team_planning do
+RSpec.describe 'Issues > Real-time sidebar', :js, :with_license, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/jira_connect/branches_spec.rb b/spec/features/jira_connect/branches_spec.rb
index 489d3743a2a..8cf07f2ade2 100644
--- a/spec/features/jira_connect/branches_spec.rb
+++ b/spec/features/jira_connect/branches_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Create GitLab branches from Jira', :js, feature_category: :integrations do
+ include ListboxHelpers
+
let_it_be(:alice) { create(:user, name: 'Alice') }
let_it_be(:bob) { create(:user, name: 'Bob') }
@@ -42,7 +44,7 @@ RSpec.describe 'Create GitLab branches from Jira', :js, feature_category: :integ
expect(page).not_to have_text('Alice / bar')
- click_on 'Alice / foo'
+ find('span', text: 'Alice / foo', match: :first).click
end
expect(page).to have_field('Branch name', with: 'ACME-123-my-issue-title')
@@ -57,11 +59,11 @@ RSpec.describe 'Create GitLab branches from Jira', :js, feature_category: :integ
# Switch to project2
- click_on 'Alice / foo'
+ find('span', text: 'Alice / foo', match: :first).click
within_dropdown do
fill_in 'Search', with: ''
- click_on 'Alice / bar'
+ find('span', text: 'Alice / bar', match: :first).click
end
click_on 'master'
@@ -70,9 +72,7 @@ RSpec.describe 'Create GitLab branches from Jira', :js, feature_category: :integ
fill_in 'Search', with: source_branch
wait_for_requests
- within '[role="listbox"]' do
- find('li', text: source_branch).click
- end
+ select_listbox_item(source_branch)
fill_in 'Branch name', with: new_branch
click_on 'Create branch'
diff --git a/spec/features/markdown/observability_spec.rb b/spec/features/markdown/observability_spec.rb
index 0c7d8cc006b..86caf3eb1b1 100644
--- a/spec/features/markdown/observability_spec.rb
+++ b/spec/features/markdown/observability_spec.rb
@@ -80,4 +80,78 @@ RSpec.describe 'Observability rendering', :js do
end
end
end
+
+ context 'when feature flag is disabled' do
+ before do
+ stub_feature_flags(observability_group_tab: false)
+ end
+
+ context 'when embedding in an issue' do
+ let(:issue) do
+ create(:issue, project: project, description: observable_url)
+ end
+
+ before do
+ visit project_issue_path(project, issue)
+ wait_for_requests
+ end
+
+ it 'does not render iframe in description' do
+ page.within('.description') do
+ expect(page.html).not_to include(expected)
+ expect(page.html).to include(observable_url)
+ end
+ end
+
+ it 'does not render iframe in comment' do
+ expect(page).not_to have_css('.note-text')
+
+ page.within('.js-main-target-form') do
+ fill_in('note[note]', with: observable_url)
+ click_button('Comment')
+ end
+
+ wait_for_requests
+
+ page.within('.note-text') do
+ expect(page.html).not_to include(expected)
+ expect(page.html).to include(observable_url)
+ end
+ end
+ end
+
+ context 'when embedding in an MR' do
+ let(:merge_request) do
+ create(:merge_request, source_project: project, target_project: project, description: observable_url)
+ end
+
+ before do
+ visit merge_request_path(merge_request)
+ wait_for_requests
+ end
+
+ it 'does not render iframe in description' do
+ page.within('.description') do
+ expect(page.html).not_to include(expected)
+ expect(page.html).to include(observable_url)
+ end
+ end
+
+ it 'does not render iframe in comment' do
+ expect(page).not_to have_css('.note-text')
+
+ page.within('.js-main-target-form') do
+ fill_in('note[note]', with: observable_url)
+ click_button('Comment')
+ end
+
+ wait_for_requests
+
+ page.within('.note-text') do
+ expect(page.html).not_to include(expected)
+ expect(page.html).to include(observable_url)
+ end
+ end
+ end
+ end
end
diff --git a/spec/features/markdown/sandboxed_mermaid_spec.rb b/spec/features/markdown/sandboxed_mermaid_spec.rb
index 26b397a1fd5..0282d02d809 100644
--- a/spec/features/markdown/sandboxed_mermaid_spec.rb
+++ b/spec/features/markdown/sandboxed_mermaid_spec.rb
@@ -23,7 +23,7 @@ RSpec.describe 'Sandboxed Mermaid rendering', :js, feature_category: :team_plann
context 'in an issue' do
let(:issue) { create(:issue, project: project, description: description) }
- it 'includes mermaid frame correctly' do
+ it 'includes mermaid frame correctly', :with_license do
visit project_issue_path(project, issue)
wait_for_requests
diff --git a/spec/features/merge_request/admin_views_hidden_merge_request_spec.rb b/spec/features/merge_request/admin_views_hidden_merge_request_spec.rb
new file mode 100644
index 00000000000..0dbb42a633b
--- /dev/null
+++ b/spec/features/merge_request/admin_views_hidden_merge_request_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Admin views hidden merge request', feature_category: :insider_threat do
+ context 'when signed in as admin and viewing a hidden merge request', :js do
+ let_it_be(:admin) { create(:admin) }
+ let_it_be(:author) { create(:user, :banned) }
+ let_it_be(:project) { create(:project, :repository) }
+ let!(:merge_request) { create(:merge_request, source_project: project, author: author) }
+
+ before do
+ sign_in(admin)
+ gitlab_enable_admin_mode_sign_in(admin)
+ visit(project_merge_request_path(project, merge_request))
+ end
+
+ it 'shows a hidden merge request icon' do
+ page.within('.detail-page-header-body') do
+ tooltip = format(_('This %{issuable} is hidden because its author has been banned'),
+ issuable: _('merge request'))
+ expect(page).to have_css("div[data-testid='hidden'][title='#{tooltip}']")
+ expect(page).to have_css('svg[data-testid="spam-icon"]')
+ end
+ end
+ end
+end
diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb
index e16c1ae094b..736c986d0fe 100644
--- a/spec/features/merge_request/batch_comments_spec.rb
+++ b/spec/features/merge_request/batch_comments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > Batch comments', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > Batch comments', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/close_reopen_report_toggle_spec.rb b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
index 63ed355b16e..9b8e50a31e3 100644
--- a/spec/features/merge_request/close_reopen_report_toggle_spec.rb
+++ b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_review do
+RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_review_workflow do
include IssuablesHelper
let(:user) { create(:user) }
@@ -27,12 +27,12 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
find('[data-testid="merge-request-actions"]').click
expect(container).to have_link("Close merge request")
- expect(container).to have_link('Report abuse to administrator')
+ expect(container).to have_button('Report abuse to administrator')
end
it 'links to Report Abuse' do
find('[data-testid="merge-request-actions"]').click
- click_link 'Report abuse to administrator'
+ click_button 'Report abuse to administrator'
expect(page).to have_content('Report abuse to administrator')
end
@@ -47,7 +47,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
expect(container).to have_link('Edit')
expect(container).to have_link('Mark as draft')
expect(container).to have_link('Close merge request')
- expect(container).to have_link('Report abuse to administrator')
+ expect(container).to have_button('Report abuse to administrator')
expect(container).not_to have_link('Reopen merge request')
end
end
@@ -59,7 +59,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
find('[data-testid="merge-request-actions"]').click
expect(container).to have_link('Edit')
- expect(container).to have_link('Report abuse to administrator')
+ expect(container).to have_button('Report abuse to administrator')
expect(container).to have_link('Reopen merge request')
expect(container).not_to have_link('Close merge request')
end
@@ -73,7 +73,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
expect(container).to have_link('Edit')
expect(container).to have_link('Reopen merge request')
expect(container).not_to have_link('Close merge request')
- expect(container).not_to have_link('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse to administrator')
end
end
end
@@ -83,7 +83,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_link('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -93,7 +93,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_link('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -101,7 +101,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
end
end
- context 'when user doesnt have permission to update' do
+ context 'when user doesnt have permission to update', :js do
let(:cant_project) { create(:project, :repository) }
let(:cant_issuable) { create(:merge_request, source_project: cant_project) }
@@ -112,7 +112,9 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
end
it 'only shows a `Report abuse` button' do
- expect(container).to have_link('Report abuse to administrator')
+ find('[data-testid="merge-request-actions"]').click
+
+ expect(container).to have_button('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
expect(container).not_to have_link(exact_text: 'Edit')
diff --git a/spec/features/merge_request/maintainer_edits_fork_spec.rb b/spec/features/merge_request/maintainer_edits_fork_spec.rb
index bd040a5b894..b8dc3af8a6a 100644
--- a/spec/features/merge_request/maintainer_edits_fork_spec.rb
+++ b/spec/features/merge_request/maintainer_edits_fork_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'a maintainer edits files on a source-branch of an MR from a fork', :js, :sidekiq_might_not_need_inline,
-feature_category: :code_review do
+feature_category: :code_review_workflow do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
include ProjectForksHelper
let(:user) { create(:user, username: 'the-maintainer') }
diff --git a/spec/features/merge_request/merge_request_discussion_lock_spec.rb b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
index b48d4d80647..11ec2a86b43 100644
--- a/spec/features/merge_request/merge_request_discussion_lock_spec.rb
+++ b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
@@ -4,7 +4,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_review do
+RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, author: user) }
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 dda22abada0..8ff0c294b24 100644
--- a/spec/features/merge_request/user_accepts_merge_request_spec.rb
+++ b/spec/features/merge_request/user_accepts_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline, feature_category: :code_review do
+RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline, feature_category: :code_review_workflow do
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_allows_commits_from_memebers_who_can_merge_spec.rb b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
index cf6836b544b..0ff773ef02d 100644
--- a/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
+++ b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'create a merge request, allowing commits from members who can merge to the target branch', :js,
-feature_category: :code_review do
+feature_category: :code_review_workflow do
include ProjectForksHelper
let(:user) { create(:user) }
let(:target_project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_approves_spec.rb b/spec/features/merge_request/user_approves_spec.rb
index bfb6a3ec8de..5b5ad4468ec 100644
--- a/spec/features/merge_request/user_approves_spec.rb
+++ b/spec/features/merge_request/user_approves_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User approves', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User approves', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb
index 2b93f88e96b..711b2db8a32 100644
--- a/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb
+++ b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User assigns themselves as a reviewer', feature_category: :code_review do
+RSpec.describe 'Merge request > User assigns themselves as a reviewer', feature_category: :code_review_workflow do
let_it_be(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, :simple, source_project: project, author: user, description: "test mr") }
diff --git a/spec/features/merge_request/user_assigns_themselves_spec.rb b/spec/features/merge_request/user_assigns_themselves_spec.rb
index 826904bd165..ed4ea91f704 100644
--- a/spec/features/merge_request/user_assigns_themselves_spec.rb
+++ b/spec/features/merge_request/user_assigns_themselves_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User assigns themselves', feature_category: :code_review do
+RSpec.describe 'Merge request > User assigns themselves', feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue1) { create(:issue, project: project) }
diff --git a/spec/features/merge_request/user_awards_emoji_spec.rb b/spec/features/merge_request/user_awards_emoji_spec.rb
index dceac8d6a69..f43672942ff 100644
--- a/spec/features/merge_request/user_awards_emoji_spec.rb
+++ b/spec/features/merge_request/user_awards_emoji_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User awards emoji', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User awards emoji', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project, author: create(:user)) }
diff --git a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
index 3e3ff91ad19..90cf07831ba 100644
--- a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
+++ b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User clicks on merge request tabs', :js, feature_category: :code_review do
+RSpec.describe 'User clicks on merge request tabs', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
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 c5ef6b912fe..537702df12d 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
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'User closes/reopens a merge request', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500',
- feature_category: :code_review do
+ feature_category: :code_review_workflow do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_comments_on_commit_spec.rb b/spec/features/merge_request/user_comments_on_commit_spec.rb
index 64fe144cd0d..0538f367022 100644
--- a/spec/features/merge_request/user_comments_on_commit_spec.rb
+++ b/spec/features/merge_request/user_comments_on_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a commit', :js, feature_category: :code_review do
+RSpec.describe 'User comments on a commit', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
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 f1a942d5708..66b87148eb2 100644
--- a/spec/features/merge_request/user_comments_on_diff_spec.rb
+++ b/spec/features/merge_request/user_comments_on_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do
+RSpec.describe 'User comments on a diff', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_comments_on_merge_request_spec.rb b/spec/features/merge_request/user_comments_on_merge_request_spec.rb
index d5ad78746f4..9335615b4c7 100644
--- a/spec/features/merge_request/user_comments_on_merge_request_spec.rb
+++ b/spec/features/merge_request/user_comments_on_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a merge request', :js, feature_category: :code_review do
+RSpec.describe 'User comments on a merge request', :js, feature_category: :code_review_workflow do
include RepoHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
index eb7894f4ef7..1d7a3fae371 100644
--- a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User creates image diff notes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User creates image diff notes', :js, feature_category: :code_review_workflow do
include NoteInteractionHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_creates_merge_request_spec.rb b/spec/features/merge_request/user_creates_merge_request_spec.rb
index 50629f11959..1717069a259 100644
--- a/spec/features/merge_request/user_creates_merge_request_spec.rb
+++ b/spec/features/merge_request/user_creates_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates a merge request', :js, feature_category: :code_review do
+RSpec.describe 'User creates a merge request', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
shared_examples 'creates a merge request' do
diff --git a/spec/features/merge_request/user_creates_mr_spec.rb b/spec/features/merge_request/user_creates_mr_spec.rb
index 5effde234cd..523027582b3 100644
--- a/spec/features/merge_request/user_creates_mr_spec.rb
+++ b/spec/features/merge_request/user_creates_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User creates MR', feature_category: :code_review do
+RSpec.describe 'Merge request > User creates MR', feature_category: :code_review_workflow do
include ProjectForksHelper
before do
diff --git a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
index 4f1119d6c33..3c30ef02a19 100644
--- a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
+++ b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request < User customizes merge commit message', :js, feature_category: :code_review do
+RSpec.describe 'Merge request < User customizes merge commit message', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue_1) { create(:issue, project: project) }
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 c04040dd6fd..60631027d9d 100644
--- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:protected_branch) { create(:protected_branch, :maintainers_can_push, name: 'master', project: project) }
let(:merge_request) { create(:merge_request, :simple, source_project: project, target_branch: protected_branch.name) }
diff --git a/spec/features/merge_request/user_edits_merge_request_spec.rb b/spec/features/merge_request/user_edits_merge_request_spec.rb
index 6701c7d91ae..839081d00dc 100644
--- a/spec/features/merge_request/user_edits_merge_request_spec.rb
+++ b/spec/features/merge_request/user_edits_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edits a merge request', :js, feature_category: :code_review do
+RSpec.describe 'User edits a merge request', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb
index 18e6827a872..6fcbfd309e2 100644
--- a/spec/features/merge_request/user_edits_mr_spec.rb
+++ b/spec/features/merge_request/user_edits_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits MR', feature_category: :code_review do
+RSpec.describe 'Merge request > User edits MR', feature_category: :code_review_workflow do
include ProjectForksHelper
before do
diff --git a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
index 38c76314b9e..26a9b955e2d 100644
--- a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits reviewers sidebar', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User edits reviewers sidebar', :js, feature_category: :code_review_workflow do
context 'with invite members considerations' do
let_it_be(:merge_request) { create(:merge_request) }
let_it_be(:project) { merge_request.project }
diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb
index 8adbdcd310c..9fbb5773eae 100644
--- a/spec/features/merge_request/user_expands_diff_spec.rb
+++ b/spec/features/merge_request/user_expands_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User expands diff', :js, feature_category: :code_review do
+RSpec.describe 'User expands diff', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_branch: 'expand-collapse-files', source_project: project, target_project: project) }
diff --git a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
index 1b9b3941714..a013666a496 100644
--- a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
+++ b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Batch diffs', :js, feature_category: :code_review do
+RSpec.describe 'Batch diffs', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_locks_discussion_spec.rb b/spec/features/merge_request/user_locks_discussion_spec.rb
index 1bfd52d49e8..a603a5c1e0b 100644
--- a/spec/features/merge_request/user_locks_discussion_spec.rb
+++ b/spec/features/merge_request/user_locks_discussion_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User locks discussion', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User locks discussion', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb
index 16d869fc5a1..d4ccc4a93b5 100644
--- a/spec/features/merge_request/user_manages_subscription_spec.rb
+++ b/spec/features/merge_request/user_manages_subscription_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User manages subscription', :js, feature_category: :code_review do
+RSpec.describe 'User manages subscription', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }
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
index 201cdc94b56..8cbc2b975e4 100644
--- 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User marks merge request as draft', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User marks merge request as draft', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_merges_immediately_spec.rb b/spec/features/merge_request/user_merges_immediately_spec.rb
index b0aeea997f0..79c166434aa 100644
--- a/spec/features/merge_request/user_merges_immediately_spec.rb
+++ b/spec/features/merge_request/user_merges_immediately_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User merges immediately', :js, feature_category: :code_review do
+RSpec.describe 'Merge requests > User merges immediately', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let!(:merge_request) do
diff --git a/spec/features/merge_request/user_merges_merge_request_spec.rb b/spec/features/merge_request/user_merges_merge_request_spec.rb
index 4196fdd5dac..6ffb33603d5 100644
--- a/spec/features/merge_request/user_merges_merge_request_spec.rb
+++ b/spec/features/merge_request/user_merges_merge_request_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User merges a merge request", :js, feature_category: :code_review do
+RSpec.describe "User merges a merge request", :js, feature_category: :code_review_workflow do
let(:user) { project.first_owner }
before do
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 447418b5a4b..c73ba1bdbe5 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js, feature_category: :code_review_workflow do
let(:merge_request) { create(:merge_request_with_diffs) }
let(:project) { merge_request.target_project }
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 78a21527794..6d2c8f15a82 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) do
diff --git a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
index 116de50f2a2..7cb1c95f6dc 100644
--- a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
+++ b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User opens checkout branch modal', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User opens checkout branch modal', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
index f32a51cfcd4..99764e2c052 100644
--- a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
+++ b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > Context commits', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > Context commits', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_posts_diff_notes_spec.rb b/spec/features/merge_request/user_posts_diff_notes_spec.rb
index f2ec0e2df6d..a74a8b1cd5a 100644
--- a/spec/features/merge_request/user_posts_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_diff_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User posts diff notes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User posts diff notes', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb
index 194e04a9544..f167ab8fe8a 100644
--- a/spec/features/merge_request/user_posts_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_review_workflow do
include NoteInteractionHelpers
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_rebases_merge_request_spec.rb b/spec/features/merge_request/user_rebases_merge_request_spec.rb
index c3ee5ddc3b1..1b46b4e1d7f 100644
--- a/spec/features/merge_request/user_rebases_merge_request_spec.rb
+++ b/spec/features/merge_request/user_rebases_merge_request_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User rebases a merge request", :js, feature_category: :code_review do
+RSpec.describe "User rebases a merge request", :js, feature_category: :code_review_workflow do
let(:merge_request) { create(:merge_request, :simple, source_project: project) }
let(:user) { project.first_owner }
diff --git a/spec/features/merge_request/user_resolves_conflicts_spec.rb b/spec/features/merge_request/user_resolves_conflicts_spec.rb
index d4c80c1e9e2..7b1afd786f7 100644
--- a/spec/features/merge_request/user_resolves_conflicts_spec.rb
+++ b/spec/features/merge_request/user_resolves_conflicts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves conflicts', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User resolves conflicts', :js, feature_category: :code_review_workflow do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
index f0507e94424..c3b9068d708 100644
--- a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
+++ b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves diff notes and threads', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User resolves diff notes and threads', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:guest) { create(:user) }
diff --git a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
index a7508ede1a1..5c41ac79552 100644
--- a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
+++ b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves outdated diff discussions', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User resolves outdated diff discussions',
+ :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :repository, :public) }
let(:merge_request) do
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 b7f20a16a3f..8a19a72f6ae 100644
--- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb
+++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) do
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 edfa9267871..43ce473b407 100644
--- a/spec/features/merge_request/user_reverts_merge_request_spec.rb
+++ b/spec/features/merge_request/user_reverts_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User reverts a merge request', :js, feature_category: :code_review do
+RSpec.describe 'User reverts a merge request', :js, feature_category: :code_review_workflow do
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_reviews_image_spec.rb b/spec/features/merge_request/user_reviews_image_spec.rb
index 5814dc6b58c..815b006d029 100644
--- a/spec/features/merge_request/user_reviews_image_spec.rb
+++ b/spec/features/merge_request/user_reviews_image_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > image review', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > image review', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
index fdd2aeec274..1c8bb903f7d 100644
--- a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
+++ b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User scrolls to note on load', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User scrolls to note on load', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project, author: user) }
diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
index 8c2fc62d16f..94393ea00e4 100644
--- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
include Spec::Support::Helpers::ModalHelpers # rubocop:disable Style/MixinUsage
-RSpec.describe 'Merge request > User sees avatars on diff notes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees avatars on diff notes', :js, feature_category: :code_review_workflow do
include NoteInteractionHelpers
include Spec::Support::Helpers::ModalHelpers
include MergeRequestDiffHelpers
diff --git a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
index 0b6aefcdab6..4d91669f206 100644
--- a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
+++ b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New merge request breadcrumb', feature_category: :code_review do
+RSpec.describe 'New merge request breadcrumb', feature_category: :code_review_workflow do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
index bbfa2be47cc..ad2ceeb23e2 100644
--- a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
+++ b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
@@ -2,10 +2,11 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
+ let(:modal_window_title) { 'Check out, review, and resolve locally' }
before do
sign_in(user)
@@ -17,12 +18,12 @@ RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_
end
it 'shows the check out branch modal' do
- expect(page).to have_content('Check out, review, and merge locally')
+ expect(page).to have_content(modal_window_title)
end
it 'closes the check out branch modal with the close action' do
find('.modal button[aria-label="Close"]').click
- expect(page).not_to have_content('Check out, review, and merge locally')
+ expect(page).not_to have_content(modal_window_title)
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 07b7cb1e8d8..411a2865b1a 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User cherry-picks', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User cherry-picks', :js, feature_category: :code_review_workflow do
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
index 9a1d47a13b5..3d41d5e24b2 100644
--- a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
+++ b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees closing issues message', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees closing issues message', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue_1) { create(:issue, project: project) }
diff --git a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
index 16ae8b4304b..5011bd6de14 100644
--- a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees deleted target branch', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees deleted target branch', :js, feature_category: :code_review_workflow do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb
index 101ff8fc152..daeeaa1bd88 100644
--- a/spec/features/merge_request/user_sees_diff_spec.rb
+++ b/spec/features/merge_request/user_sees_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
include RepoHelpers
include MergeRequestDiffHelpers
diff --git a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
index a22fb2cff00..9d3046a9a72 100644
--- a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
+++ b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
@@ -2,14 +2,12 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_category: :code_review_workflow do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:user) { project.creator }
let_it_be(:merge_request) { create(:merge_request, source_project: project) }
before do
- # FIXME: before removing this please fix discussions navigation with this flag enabled
- stub_feature_flags(moved_mr_sidebar: false)
project.add_maintainer(user)
sign_in(user)
end
@@ -194,29 +192,10 @@ RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_
end
def goto_next_thread
- begin
- # this is required when moved_mr_sidebar is enabled
- page.within('.issue-sticky-header') do
- click_button 'Go to next unresolved thread'
- end
- rescue StandardError
- click_button 'Go to next unresolved thread'
- end
- wait_for_scroll_end
+ click_button 'Go to next unresolved thread', obscured: false
end
def goto_previous_thread
- begin
- page.within('.issue-sticky-header') do
- click_button 'Go to previous unresolved thread'
- end
- rescue StandardError
- click_button 'Go to previous unresolved thread'
- end
- wait_for_scroll_end
- end
-
- def wait_for_scroll_end
- sleep(1)
+ click_button 'Go to previous unresolved thread', obscured: false
end
end
diff --git a/spec/features/merge_request/user_sees_discussions_spec.rb b/spec/features/merge_request/user_sees_discussions_spec.rb
index 0eae6e39eec..3ca5ac23ddb 100644
--- a/spec/features/merge_request/user_sees_discussions_spec.rb
+++ b/spec/features/merge_request/user_sees_discussions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees threads', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees threads', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
index 6db5480abb4..b83580565e4 100644
--- a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Merge request > User sees merge button depending on unresolved threads', :js,
-feature_category: :code_review do
+feature_category: :code_review_workflow do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
let!(:merge_request) { create(:merge_request_with_diff_notes, source_project: project, author: user) }
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 f7594c717d1..458746f0854 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
include TestReportsHelper
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 e5aa0f6e64d..237f361bd72 100644
--- a/spec/features/merge_request/user_sees_merge_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
include TestReportsHelper
include ReactiveCachingHelpers
diff --git a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
index 4bfdce29c6a..fac0a84f155 100644
--- a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
+++ b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees MR from deleted forked project', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees MR from deleted forked project',
+ :js, feature_category: :code_review_workflow do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
index 8e6f6d04676..9b46cf37648 100644
--- a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
@@ -5,7 +5,8 @@ require 'spec_helper'
# This test serves as a regression test for a bug that caused an error
# message to be shown by JavaScript when the source branch was deleted.
# Please do not remove ":js".
-RSpec.describe 'Merge request > User sees MR with deleted source branch', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees MR with deleted source branch',
+ :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
index 8f011f5616b..ac195dd9873 100644
--- a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
+++ b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees notes from forked project', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees notes from forked project', :js, feature_category: :code_review_workflow do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_sees_page_metadata_spec.rb b/spec/features/merge_request/user_sees_page_metadata_spec.rb
index f97732f91a7..50fc60e342e 100644
--- a/spec/features/merge_request/user_sees_page_metadata_spec.rb
+++ b/spec/features/merge_request/user_sees_page_metadata_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees page metadata', feature_category: :code_review do
+RSpec.describe 'Merge request > User sees page metadata', feature_category: :code_review_workflow 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 }
diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb
index 8faaf6bf39b..cab940ba704 100644
--- a/spec/features/merge_request/user_sees_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_pipelines_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :code_review_workflow do
describe 'pipeline tab' do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.target_project }
diff --git a/spec/features/merge_request/user_sees_system_notes_spec.rb b/spec/features/merge_request/user_sees_system_notes_spec.rb
index 40402c95d6f..d547aa84bdd 100644
--- a/spec/features/merge_request/user_sees_system_notes_spec.rb
+++ b/spec/features/merge_request/user_sees_system_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees system notes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees system notes', :js, feature_category: :code_review_workflow do
let(:public_project) { create(:project, :public, :repository) }
let(:private_project) { create(:project, :private, :repository) }
let(:user) { private_project.creator }
diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb
index f0ff6e1769a..f94b288300a 100644
--- a/spec/features/merge_request/user_sees_versions_spec.rb
+++ b/spec/features/merge_request/user_sees_versions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees versions', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User sees versions', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
let(:merge_request) do
diff --git a/spec/features/merge_request/user_sees_wip_help_message_spec.rb b/spec/features/merge_request/user_sees_wip_help_message_spec.rb
index 1a751af6ded..fdefe5ffb06 100644
--- a/spec/features/merge_request/user_sees_wip_help_message_spec.rb
+++ b/spec/features/merge_request/user_sees_wip_help_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees draft help message', feature_category: :code_review do
+RSpec.describe 'Merge request > User sees draft help message', feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
index 8b6c9dc18f6..b7784de12b9 100644
--- a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
+++ b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User selects branches for new MR', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User selects branches for new MR', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_squashes_merge_request_spec.rb b/spec/features/merge_request/user_squashes_merge_request_spec.rb
index 43590aed3cc..63faf830f7e 100644
--- a/spec/features/merge_request/user_squashes_merge_request_spec.rb
+++ b/spec/features/merge_request/user_squashes_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User squashes a merge request', :js, feature_category: :code_review do
+RSpec.describe 'User squashes a merge request', :js, feature_category: :code_review_workflow do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:source_branch) { 'csv' }
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 5a5494a2fe9..efd88df0f97 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do
+RSpec.describe 'User comments on a diff', :js, feature_category: :code_review_workflow do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
index 993eb59cb74..15715a6d775 100644
--- a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
+++ b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User toggles whitespace changes', :js, feature_category: :code_review do
+RSpec.describe 'Merge request > User toggles whitespace changes', :js, feature_category: :code_review_workflow do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
index 5095457509a..5770f5ab94d 100644
--- a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
+++ b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Merge Request > User tries to access private project information through the new mr page',
-feature_category: :code_review do
+feature_category: :code_review_workflow do
let(:current_user) { create(:user) }
let(:private_project) do
create(:project, :public, :repository,
diff --git a/spec/features/merge_request/user_uses_quick_actions_spec.rb b/spec/features/merge_request/user_uses_quick_actions_spec.rb
index 99befbace74..1a88918da65 100644
--- a/spec/features/merge_request/user_uses_quick_actions_spec.rb
+++ b/spec/features/merge_request/user_uses_quick_actions_spec.rb
@@ -8,7 +8,7 @@ require 'spec_helper'
# Because this kind of spec takes more time to run there is no need to add new ones
# for each existing quick action unless they test something not tested by existing tests.
RSpec.describe 'Merge request > User uses quick actions', :js, :use_clean_rails_redis_caching,
-feature_category: :code_review do
+feature_category: :code_review_workflow do
include Spec::Support::Helpers::Features::NotesHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
index 19a77a9192c..57072421986 100644
--- a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
+++ b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do
+RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review_workflow do
let(:merge_request) do
create(:merge_request, source_branch: 'squash-large-files', source_project: project, target_project: project)
end
diff --git a/spec/features/merge_request/user_views_diffs_commit_spec.rb b/spec/features/merge_request/user_views_diffs_commit_spec.rb
index 84cbfb35539..ba1b41982c9 100644
--- a/spec/features/merge_request/user_views_diffs_commit_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diff by commit', :js, feature_category: :code_review do
+RSpec.describe 'User views diff by commit', :js, feature_category: :code_review_workflow do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
index 9db6f86e14d..4d59bd4ccb0 100644
--- a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do
+RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review_workflow do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_diffs_spec.rb b/spec/features/merge_request/user_views_diffs_spec.rb
index 7363f6dfb32..6b759625c61 100644
--- a/spec/features/merge_request/user_views_diffs_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs', :js, feature_category: :code_review do
+RSpec.describe 'User views diffs', :js, feature_category: :code_review_workflow do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
index 2a9275adfcf..8f448d06db1 100644
--- a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
+++ b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
@@ -6,7 +6,7 @@ require 'spec_helper'
# updated.
# This can occur when the fork a merge request is created from is in the process
# of being destroyed.
-RSpec.describe 'User views merged merge request from deleted fork', feature_category: :code_review do
+RSpec.describe 'User views merged merge request from deleted fork', feature_category: :code_review_workflow do
include ProjectForksHelper
let(:project) { create(:project, :repository) }
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 8b9e973217d..e481e3f2dfb 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views an open merge request', feature_category: :code_review do
+RSpec.describe 'User views an open merge request', feature_category: :code_review_workflow do
let(:merge_request) do
create(:merge_request, source_project: project, target_project: project, description: '# Description header')
end
diff --git a/spec/features/merge_requests/admin_views_hidden_merge_requests_spec.rb b/spec/features/merge_requests/admin_views_hidden_merge_requests_spec.rb
new file mode 100644
index 00000000000..e7727fbb9dc
--- /dev/null
+++ b/spec/features/merge_requests/admin_views_hidden_merge_requests_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Admin views hidden merge requests', feature_category: :insider_threat do
+ context 'when signed in as admin and viewing a hidden merge request' do
+ let_it_be(:admin) { create(:admin) }
+ let_it_be(:author) { create(:user, :banned) }
+ let_it_be(:project) { create(:project) }
+ let!(:merge_request) { create(:merge_request, source_project: project, author: author) }
+
+ before do
+ sign_in(admin)
+ gitlab_enable_admin_mode_sign_in(admin)
+ visit(project_merge_requests_path(project))
+ end
+
+ it 'shows a hidden merge request icon' do
+ page.within("#merge_request_#{merge_request.id}") do
+ tooltip = format(_('This %{issuable} is hidden because its author has been banned'),
+ issuable: _('merge request'))
+ expect(page).to have_css("span[title='#{tooltip}']")
+ expect(page).to have_css('svg[data-testid="spam-icon"]')
+ end
+ end
+ end
+end
diff --git a/spec/features/merge_requests/filters_generic_behavior_spec.rb b/spec/features/merge_requests/filters_generic_behavior_spec.rb
index 0d6b5edcbab..197b9fa770d 100644
--- a/spec/features/merge_requests/filters_generic_behavior_spec.rb
+++ b/spec/features/merge_requests/filters_generic_behavior_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > Filters generic behavior', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > Filters generic behavior', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/rss_spec.rb b/spec/features/merge_requests/rss_spec.rb
index 4c73ce3b684..9c9f46278f6 100644
--- a/spec/features/merge_requests/rss_spec.rb
+++ b/spec/features/merge_requests/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Merge Requests RSS', feature_category: :code_review do
+RSpec.describe 'Project Merge Requests RSS', feature_category: :code_review_workflow do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, :repository, group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
diff --git a/spec/features/merge_requests/user_exports_as_csv_spec.rb b/spec/features/merge_requests/user_exports_as_csv_spec.rb
index aedd7ef4d79..23ac1b264ad 100644
--- a/spec/features/merge_requests/user_exports_as_csv_spec.rb
+++ b/spec/features/merge_requests/user_exports_as_csv_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > Exports as CSV', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > Exports as CSV', :js, feature_category: :code_review_workflow do
let!(:project) { create(:project, :public, :repository) }
let!(:user) { project.creator }
let!(:open_mr) { create(:merge_request, title: 'Bugfix1', source_project: project, target_project: project, source_branch: 'bugfix1') }
diff --git a/spec/features/merge_requests/user_filters_by_approvals_spec.rb b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
index 56c8a65385c..f2748c2549f 100644
--- a/spec/features/merge_requests/user_filters_by_approvals_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let_it_be(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_assignees_spec.rb b/spec/features/merge_requests/user_filters_by_assignees_spec.rb
index 818cf6f076f..22e38679c0f 100644
--- a/spec/features/merge_requests/user_filters_by_assignees_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_assignees_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by assignees', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by assignees', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_deployments_spec.rb b/spec/features/merge_requests/user_filters_by_deployments_spec.rb
index 5f7d2fa9f9a..06997806a74 100644
--- a/spec/features/merge_requests/user_filters_by_deployments_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_deployments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by deployments', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by deployments', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_draft_spec.rb b/spec/features/merge_requests/user_filters_by_draft_spec.rb
index d50d7edaefb..2b6a2062893 100644
--- a/spec/features/merge_requests/user_filters_by_draft_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_draft_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by draft', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by draft', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_labels_spec.rb b/spec/features/merge_requests/user_filters_by_labels_spec.rb
index 030eb1b6431..84d75eb221e 100644
--- a/spec/features/merge_requests/user_filters_by_labels_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by labels', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by labels', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_milestones_spec.rb b/spec/features/merge_requests/user_filters_by_milestones_spec.rb
index abdb6c7787b..75bbc3a14a8 100644
--- a/spec/features/merge_requests/user_filters_by_milestones_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_milestones_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by milestones', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by milestones', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
index ae171f47ec3..9f10533bb72 100644
--- a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User filters by multiple criteria', :js, feature_category: :code_review do
+RSpec.describe 'Merge requests > User filters by multiple criteria', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
index e0755695f5c..cc30c274b51 100644
--- a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by target branch', :js, feature_category: :code_review do
+RSpec.describe 'Merge Requests > User filters by target branch', :js, feature_category: :code_review_workflow do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_lists_merge_requests_spec.rb b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
index d9c3bcda0d3..3171ae89fe6 100644
--- a/spec/features/merge_requests/user_lists_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User lists merge requests', feature_category: :code_review do
+RSpec.describe 'Merge requests > User lists merge requests', feature_category: :code_review_workflow do
include MergeRequestHelpers
include SortingHelper
diff --git a/spec/features/merge_requests/user_mass_updates_spec.rb b/spec/features/merge_requests/user_mass_updates_spec.rb
index 133017d5b25..5a9054ece48 100644
--- a/spec/features/merge_requests/user_mass_updates_spec.rb
+++ b/spec/features/merge_requests/user_mass_updates_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review do
+RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review_workflow do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
let(:user2) { create(:user) }
diff --git a/spec/features/merge_requests/user_sees_empty_state_spec.rb b/spec/features/merge_requests/user_sees_empty_state_spec.rb
index a50ea300249..f5803a47b2c 100644
--- a/spec/features/merge_requests/user_sees_empty_state_spec.rb
+++ b/spec/features/merge_requests/user_sees_empty_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees empty state', feature_category: :code_review do
+RSpec.describe 'Merge request > User sees empty state', feature_category: :code_review_workflow do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
index d268cfc59f3..cf99f2cb94a 100644
--- a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sorts merge requests', :js, feature_category: :code_review do
+RSpec.describe 'User sorts merge requests', :js, feature_category: :code_review_workflow do
include CookieHelper
include Spec::Support::Helpers::Features::SortingHelpers
diff --git a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
index b55e4bd153f..c2eb43d7476 100644
--- a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views all merge requests', feature_category: :code_review do
+RSpec.describe 'User views all merge requests', feature_category: :code_review_workflow do
let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
index 4c2598dcc9c..175e6bacba5 100644
--- a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views closed merge requests', feature_category: :code_review do
+RSpec.describe 'User views closed merge requests', feature_category: :code_review_workflow do
let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
index 2526f1a855b..54b11c1ee1e 100644
--- a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views merged merge requests', feature_category: :code_review do
+RSpec.describe 'User views merged merge requests', feature_category: :code_review_workflow do
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let!(:merged_merge_request) { create(:merged_merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
index 3c53bc5e283..1a2024a5511 100644
--- a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views open merge requests', feature_category: :code_review do
+RSpec.describe 'User views open merge requests', feature_category: :code_review_workflow do
let_it_be(:user) { create(:user) }
shared_examples_for 'shows merge requests' do
diff --git a/spec/features/milestone_spec.rb b/spec/features/milestone_spec.rb
index 50cd6b9e801..61098a8f2cd 100644
--- a/spec/features/milestone_spec.rb
+++ b/spec/features/milestone_spec.rb
@@ -128,8 +128,8 @@ RSpec.describe 'Milestone', feature_category: :team_planning do
click_link 'Reopen Milestone'
- expect(page).not_to have_selector('.gl-bg-red-500')
- expect(page).to have_selector('.gl-bg-green-500')
+ expect(page).not_to have_selector('.badge-danger')
+ expect(page).to have_selector('.badge-success')
end
end
@@ -139,8 +139,8 @@ RSpec.describe 'Milestone', feature_category: :team_planning do
click_link 'Reopen Milestone'
- expect(page).not_to have_selector('.gl-bg-red-500')
- expect(page).to have_selector('.gl-bg-green-500')
+ expect(page).not_to have_selector('.badge-danger')
+ expect(page).to have_selector('.badge-success')
end
end
end
diff --git a/spec/features/nav/new_nav_toggle_spec.rb b/spec/features/nav/new_nav_toggle_spec.rb
index f040d801cfb..8e5cc7df053 100644
--- a/spec/features/nav/new_nav_toggle_spec.rb
+++ b/spec/features/nav/new_nav_toggle_spec.rb
@@ -48,14 +48,19 @@ RSpec.describe 'new navigation toggle', :js, feature_category: :navigation do
expect(user.reload.use_new_navigation).to eq true
end
+
+ it 'shows the old navigation' do
+ expect(page).to have_selector('.js-navbar')
+ expect(page).not_to have_selector('[data-testid="super-sidebar"]')
+ end
end
context 'when user has new nav enabled' do
let(:user_preference) { true }
it 'allows to disable new nav', :aggregate_failures do
- within '.js-nav-user-dropdown' do
- find('a[data-toggle="dropdown"]').click
+ within '[data-testid="super-sidebar"] [data-testid="user-dropdown"]' do
+ find('button').click
expect(page).to have_content('Navigation redesign')
toggle = page.find('.gl-toggle.is-checked')
@@ -66,6 +71,11 @@ RSpec.describe 'new navigation toggle', :js, feature_category: :navigation do
expect(user.reload.use_new_navigation).to eq false
end
+
+ it 'shows the new navigation' do
+ expect(page).not_to have_selector('.js-navbar')
+ expect(page).to have_selector('[data-testid="super-sidebar"]')
+ end
end
end
end
diff --git a/spec/features/oauth_registration_spec.rb b/spec/features/oauth_registration_spec.rb
index 48996164bd3..6e1445a9ed6 100644
--- a/spec/features/oauth_registration_spec.rb
+++ b/spec/features/oauth_registration_spec.rb
@@ -32,7 +32,6 @@ RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection, feature_cat
with_them do
before do
stub_omniauth_provider(provider)
- stub_feature_flags(update_oauth_registration_flow: true)
end
context 'when block_auto_created_users is true' do
@@ -120,22 +119,6 @@ RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection, feature_cat
end
end
- context 'when update_oauth_registration_flow is disabled' do
- before do
- stub_omniauth_provider(:github)
- stub_omniauth_setting(block_auto_created_users: false)
- stub_feature_flags(update_oauth_registration_flow: false)
-
- enforce_terms
- end
-
- it 'presents the terms page' do
- register_via(:github, uid, email)
-
- expect(page).to have_content('These are the terms')
- end
- end
-
def fill_in_welcome_form
select 'Software Developer', from: 'user_role'
click_button 'Get started!'
diff --git a/spec/features/profiles/chat_names_spec.rb b/spec/features/profiles/chat_names_spec.rb
index b3d65ab3a3c..14fdb8ba56f 100644
--- a/spec/features/profiles/chat_names_spec.rb
+++ b/spec/features/profiles/chat_names_spec.rb
@@ -15,7 +15,7 @@ RSpec.describe 'Profile > Chat', feature_category: :users do
{ team_id: 'T00', team_domain: 'my_chat_team', user_id: 'U01', user_name: 'my_chat_user' }
end
- let!(:authorize_url) { ChatNames::AuthorizeUserService.new(integration, params).execute }
+ let!(:authorize_url) { ChatNames::AuthorizeUserService.new(params).execute }
let(:authorize_path) { URI.parse(authorize_url).request_uri }
before do
diff --git a/spec/features/profiles/user_visits_profile_preferences_page_spec.rb b/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
index 9eee1b85e5e..e3940973c46 100644
--- a/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
+++ b/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'User visits the profile preferences page', :js, feature_category: :users do
- include Select2Helper
+ include ListboxHelpers
let(:user) { create(:user) }
@@ -30,7 +30,7 @@ RSpec.describe 'User visits the profile preferences page', :js, feature_category
describe 'User changes their default dashboard', :js do
it 'creates a flash message' do
- select2('stars', from: '#user_dashboard')
+ select_from_listbox 'Starred Projects', from: 'Your Projects', exact_item_text: true
click_button 'Save changes'
wait_for_requests
@@ -39,7 +39,7 @@ RSpec.describe 'User visits the profile preferences page', :js, feature_category
end
it 'updates their preference' do
- select2('stars', from: '#user_dashboard')
+ select_from_listbox 'Starred Projects', from: 'Your Projects', exact_item_text: true
click_button 'Save changes'
wait_for_requests
@@ -58,7 +58,7 @@ RSpec.describe 'User visits the profile preferences page', :js, feature_category
describe 'User changes their language', :js do
it 'creates a flash message', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/31404' do
- select2('en', from: '#user_preferred_language')
+ select_from_listbox 'English', from: 'English'
click_button 'Save changes'
wait_for_requests
@@ -68,7 +68,7 @@ RSpec.describe 'User visits the profile preferences page', :js, feature_category
it 'updates their preference' do
wait_for_requests
- select2('pt_BR', from: '#user_preferred_language')
+ select_from_listbox 'Portuguese', from: 'English'
click_button 'Save changes'
wait_for_requests
diff --git a/spec/features/project_variables_spec.rb b/spec/features/project_variables_spec.rb
index d1258937ce6..1a951980141 100644
--- a/spec/features/project_variables_spec.rb
+++ b/spec/features/project_variables_spec.rb
@@ -24,8 +24,9 @@ RSpec.describe 'Project variables', :js, feature_category: :pipeline_authoring d
page.within('#add-ci-variable') do
fill_in 'Key', with: 'akey'
find('#ci-variable-value').set('akey_value')
- find('[data-testid="environment-scope"]').click
- find('[data-testid="ci-environment-search"]').set('review/*')
+
+ click_button('All (default)')
+ fill_in 'Search', with: 'review/*'
find('[data-testid="create-wildcard-button"]').click
click_button('Add variable')
diff --git a/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb b/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb
index a497be4cbc3..b723bd5690a 100644
--- a/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb
+++ b/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb
@@ -24,12 +24,6 @@ RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled
expect(file_name.value).to have_content('.gitlab-ci.yml')
end
- it 'chooses the .gitlab-ci.yml Template Type' do
- template_type = page.find(:css, '.template-type-selector .dropdown-toggle-text')
-
- expect(template_type.text).to have_content('.gitlab-ci.yml')
- end
-
it 'displays suggest_gitlab_ci_yml popover' do
page.find(:css, '.gitlab-ci-yml-selector').click
@@ -60,12 +54,6 @@ RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled
expect(file_name.value).not_to have_content('.gitlab-ci.yml')
end
- it 'does not choose the .gitlab-ci.yml Template Type' do
- template_type = page.find(:css, '.template-type-selector .dropdown-toggle-text')
-
- expect(template_type.text).to have_content('Select a template type')
- end
-
it 'does not display suggest_gitlab_ci_yml popover' do
popover_selector = '.b-popover.suggest-gitlab-ci-yml'
diff --git a/spec/features/projects/commit/cherry_pick_spec.rb b/spec/features/projects/commit/cherry_pick_spec.rb
index dc8b84283a1..4b9b692b652 100644
--- a/spec/features/projects/commit/cherry_pick_spec.rb
+++ b/spec/features/projects/commit/cherry_pick_spec.rb
@@ -78,9 +78,9 @@ RSpec.describe 'Cherry-pick Commits', :js, feature_category: :source_code_manage
end
page.within("#{modal_selector} .dropdown-menu") do
- find('[data-testid="dropdown-search-box"]').set('feature')
+ fill_in 'Search branches', with: 'feature'
wait_for_requests
- click_button 'feature'
+ find('.gl-dropdown-item-text-wrapper', exact_text: 'feature').click
end
submit_cherry_pick
diff --git a/spec/features/projects/diffs/diff_show_spec.rb b/spec/features/projects/diffs/diff_show_spec.rb
index 973c61de31d..eb700e10141 100644
--- a/spec/features/projects/diffs/diff_show_spec.rb
+++ b/spec/features/projects/diffs/diff_show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review do
+RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
def visit_commit(sha, anchor: nil)
diff --git a/spec/features/projects/environments/environment_spec.rb b/spec/features/projects/environments/environment_spec.rb
index 75913082803..91401d19fd1 100644
--- a/spec/features/projects/environments/environment_spec.rb
+++ b/spec/features/projects/environments/environment_spec.rb
@@ -52,6 +52,16 @@ RSpec.describe 'Environment', feature_category: :projects do
end
end
+ context 'without deployments' do
+ before do
+ visit_environment(environment)
+ end
+
+ it 'does not show deployments', :js do
+ expect(page).to have_content('You don\'t have any deployments right now.')
+ end
+ end
+
context 'with deployments' do
before do
visit_environment(environment)
diff --git a/spec/features/projects/files/template_type_dropdown_spec.rb b/spec/features/projects/files/template_type_dropdown_spec.rb
deleted file mode 100644
index 990b118d172..00000000000
--- a/spec/features/projects/files/template_type_dropdown_spec.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Projects > Files > Template type dropdown selector', :js, feature_category: :projects do
- let(:project) { create(:project, :repository) }
- let(:user) { project.first_owner }
-
- before do
- sign_in user
- end
-
- context 'editing a non-matching file' do
- before do
- create_and_edit_file('.random-file.js')
- end
-
- it 'not displayed' do
- check_type_selector_display(false)
- end
-
- it 'selects every template type correctly' do
- fill_in 'file_path', with: '.gitignore'
- try_selecting_all_types
- end
-
- it 'updates template type toggle value when template is chosen' do
- fill_in 'file_path', with: '.gitignore'
- select_template('gitignore', 'Actionscript')
- check_type_selector_toggle_text('.gitignore')
- end
- end
-
- context 'editing a matching file' do
- before do
- visit project_edit_blob_path(project, File.join(project.default_branch, 'LICENSE'))
- end
-
- it 'displayed' do
- check_type_selector_display(true)
- end
-
- it 'selects every template type correctly' do
- try_selecting_all_types
- end
-
- context 'user previews changes' do
- before do
- click_link 'Preview changes'
- end
-
- it 'type selector is hidden and shown correctly' do
- check_type_selector_display(false)
- click_link 'Write'
- check_type_selector_display(true)
- end
- end
- end
-
- context 'creating a matching file' do
- before do
- visit project_new_blob_path(project, 'master', file_name: '.gitignore')
- end
-
- it 'is displayed' do
- check_type_selector_display(true)
- end
-
- it 'toggle is set to the correct value' do
- select_template('gitignore', 'Actionscript')
- check_type_selector_toggle_text('.gitignore')
- end
-
- it 'sets the toggle text when selecting the template type' do
- select_template_type('.gitignore')
- check_type_selector_toggle_text('.gitignore')
- end
-
- it 'selects every template type correctly' do
- try_selecting_all_types
- end
- end
-
- context 'creating a file' do
- before do
- visit project_new_blob_path(project, project.default_branch)
- end
-
- it 'type selector is shown' do
- check_type_selector_display(true)
- end
-
- it 'toggle is set to the proper value' do
- check_type_selector_toggle_text('Select a template type')
- end
-
- it 'selects every template type correctly' do
- try_selecting_all_types
- end
- end
-end
-
-def check_type_selector_display(is_visible)
- count = is_visible ? 1 : 0
- expect(page).to have_css('.js-template-type-selector', count: count)
-end
-
-def try_selecting_all_types
- try_selecting_template_type('LICENSE', 'Apply a template')
- try_selecting_template_type('Dockerfile', 'Apply a template')
- try_selecting_template_type('.gitlab-ci.yml', 'Apply a template')
- try_selecting_template_type('.gitignore', 'Apply a template')
-end
-
-def try_selecting_template_type(template_type, selector_label)
- select_template_type(template_type)
- check_template_selector_display(selector_label)
-end
-
-def select_template_type(template_type)
- find('.js-template-type-selector').click
- find('.dropdown-content li', text: template_type).click
-end
-
-def select_template(type, template)
- find(".js-#{type}-selector-wrap").click
- find('.dropdown-content li', text: template).click
-end
-
-def check_template_selector_display(content)
- expect(page).to have_content(content)
-end
-
-def check_type_selector_toggle_text(template_type)
- dropdown_toggle_button = find('.template-type-selector .dropdown-toggle-text')
- expect(dropdown_toggle_button).to have_content(template_type)
-end
-
-def create_and_edit_file(file_name)
- visit project_new_blob_path(project, 'master', file_name: file_name)
- click_button "Commit changes"
- visit project_edit_blob_path(project, File.join(project.default_branch, file_name))
-end
diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb
index afc9a5fd232..0dfed209ce9 100644
--- a/spec/features/projects/files/undo_template_spec.rb
+++ b/spec/features/projects/files/undo_template_spec.rb
@@ -13,19 +13,6 @@ RSpec.describe 'Projects > Files > Template Undo Button', :js, feature_category:
context 'editing a matching file and applying a template' do
before do
visit project_edit_blob_path(project, File.join(project.default_branch, "LICENSE"))
- select_file_template_type('LICENSE')
- select_file_template('.js-license-selector', 'Apache License 2.0')
- end
-
- it 'reverts template application' do
- try_template_undo('http://www.apache.org/licenses/', 'Apply a template')
- end
- end
-
- context 'creating a non-matching file' do
- before do
- visit project_new_blob_path(project, 'master')
- select_file_template_type('LICENSE')
select_file_template('.js-license-selector', 'Apache License 2.0')
end
@@ -53,7 +40,6 @@ end
def check_content_reverted(template_content)
find('.b-toaster a', text: 'Undo').click
expect(page).not_to have_content(template_content)
- expect(page).to have_css('.template-type-selector .dropdown-toggle-text')
end
def select_file_template(template_selector_selector, template_name)
@@ -61,8 +47,3 @@ def select_file_template(template_selector_selector, template_name)
find('.dropdown-content li', text: template_name).click
wait_for_requests
end
-
-def select_file_template_type(template_type)
- find('.js-template-type-selector').click
- find('.dropdown-content li', text: template_type).click
-end
diff --git a/spec/features/projects/fork_spec.rb b/spec/features/projects/fork_spec.rb
index 3867f7fd086..8b484141a95 100644
--- a/spec/features/projects/fork_spec.rb
+++ b/spec/features/projects/fork_spec.rb
@@ -3,6 +3,7 @@
require 'spec_helper'
RSpec.describe 'Project fork', feature_category: :projects do
+ include ListboxHelpers
include ProjectForksHelper
let(:user) { create(:user) }
@@ -137,10 +138,9 @@ RSpec.describe 'Project fork', feature_category: :projects do
let(:user) { create(:group_member, :maintainer, user: create(:user), group: group).user }
def submit_form(group_obj = group)
- find('[data-testid="select_namespace_dropdown"]').click
- find('[data-testid="select_namespace_dropdown_search_field"]').fill_in(with: group_obj.name)
- click_button group_obj.name
-
+ click_button(s_('ForkProject|Select a namespace'))
+ send_keys group_obj.name
+ select_listbox_item(group_obj.name)
click_button 'Fork project'
end
@@ -151,6 +151,13 @@ RSpec.describe 'Project fork', feature_category: :projects do
expect(page).to have_content 'Forked from'
end
+ it 'redirects to the source project when cancel is clicked' do
+ visit new_project_fork_path(project)
+ click_on 'Cancel'
+
+ expect(page).to have_current_path(project_path(project))
+ end
+
it 'shows the new forked project on the forks page' do
visit new_project_fork_path(project)
submit_form
diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb
index 8986ce91ae3..0230c9e835b 100644
--- a/spec/features/projects/import_export/export_file_spec.rb
+++ b/spec/features/projects/import_export/export_file_spec.rb
@@ -20,7 +20,9 @@ RSpec.describe 'Import/Export - project export integration test', :js, feature_c
}
end
- let(:safe_hashes) { { yaml_variables: %w[key value public] } }
+ let(:safe_hashes) do
+ { yaml_variables: %w[key value public] }
+ end
let(:project) { setup_project }
diff --git a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
index 858d6751afa..55aa6db23c7 100644
--- a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
+++ b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
@@ -18,7 +18,7 @@ RSpec.describe 'User uploads new design', :js, feature_category: :design_managem
context "when the feature is available" do
let(:feature_enabled) { true }
- it 'uploads designs' do
+ it 'uploads designs', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/358845' do
upload_design(logo_fixture, count: 1)
expect(page).to have_selector('.js-design-list-item', count: 1)
diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb
index 557a20ff2d6..4734a607ef1 100644
--- a/spec/features/projects/jobs_spec.rb
+++ b/spec/features/projects/jobs_spec.rb
@@ -739,7 +739,12 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj
it 'shows manual action empty state', :js do
expect(page).to have_content(job.detailed_status(user).illustration[:title])
expect(page).to have_content('This job requires a manual action')
- expect(page).to have_content('This job requires manual intervention to start. Before starting this job, you can add variables below for last-minute configuration changes.')
+ expect(page).to have_content(
+ _(
+ 'This job does not start automatically and must be started manually. ' \
+ 'You can add CI/CD variables below for last-minute configuration changes before starting the job.'
+ )
+ )
expect(page).to have_button('Trigger this manual action')
end
@@ -772,7 +777,12 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj
wait_for_requests
expect(page).to have_content('This job requires a manual action')
- expect(page).to have_content('This job requires manual intervention to start. Before starting this job, you can add variables below for last-minute configuration changes.')
+ expect(page).to have_content(
+ _(
+ 'This job does not start automatically and must be started manually. ' \
+ 'You can add CI/CD variables below for last-minute configuration changes before starting the job.'
+ )
+ )
expect(page).to have_button('Trigger this manual action')
end
end
diff --git a/spec/features/projects/labels/sort_labels_spec.rb b/spec/features/projects/labels/sort_labels_spec.rb
index 378a575348e..74ce2f40df8 100644
--- a/spec/features/projects/labels/sort_labels_spec.rb
+++ b/spec/features/projects/labels/sort_labels_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
+ include ListboxHelpers
+
let(:user) { create(:user) }
let(:project) { create(:project) }
let!(:label1) { create(:label, title: 'Foo', description: 'Lorem ipsum', project: project) }
@@ -28,16 +30,16 @@ RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
it 'sorts by date' do
click_button 'Name'
- sort_options = find('ul[role="listbox"]').all('li').collect(&:text)
-
- expect(sort_options[0]).to eq('Name')
- expect(sort_options[1]).to eq('Name, descending')
- expect(sort_options[2]).to eq('Last created')
- expect(sort_options[3]).to eq('Oldest created')
- expect(sort_options[4]).to eq('Updated date')
- expect(sort_options[5]).to eq('Oldest updated')
+ expect_listbox_items([
+ 'Name',
+ 'Name, descending',
+ 'Last created',
+ 'Oldest created',
+ 'Updated date',
+ 'Oldest updated'
+ ])
- find('li', text: 'Name, descending').click
+ select_listbox_item('Name, descending')
# assert default sorting
within '.other-labels' do
diff --git a/spec/features/projects/members/manage_members_spec.rb b/spec/features/projects/members/manage_members_spec.rb
index 3ffa402dc2c..615ef1b03dd 100644
--- a/spec/features/projects/members/manage_members_spec.rb
+++ b/spec/features/projects/members/manage_members_spec.rb
@@ -139,17 +139,15 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on
it 'can only remove non-Owner members' do
page.within find_member_row(project_owner) do
- expect(page).not_to have_button('Remove member')
+ expect(page).not_to have_selector user_action_dropdown
end
- # Open modal
- page.within find_member_row(project_developer) do
- click_button 'Remove member'
- end
+ show_actions_for_username(project_developer)
+ click_button _('Remove member')
within_modal do
expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests'
- click_button('Remove member')
+ click_button _('Remove member')
end
wait_for_requests
@@ -163,18 +161,12 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on
let(:current_user) { group_owner }
it 'can remove any direct member' do
- page.within find_member_row(project_owner) do
- expect(page).to have_button('Remove member')
- end
-
- # Open modal
- page.within find_member_row(project_owner) do
- click_button 'Remove member'
- end
+ show_actions_for_username(project_owner)
+ click_button _('Remove member')
within_modal do
expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests'
- click_button('Remove member')
+ click_button _('Remove member')
end
wait_for_requests
diff --git a/spec/features/projects/members/sorting_spec.rb b/spec/features/projects/members/sorting_spec.rb
index 5c72d9efeb3..6df1e974f42 100644
--- a/spec/features/projects/members/sorting_spec.rb
+++ b/spec/features/projects/members/sorting_spec.rb
@@ -48,7 +48,7 @@ RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups
expect(first_row.text).to have_content(maintainer.name)
expect(second_row.text).to have_content(developer.name)
- expect_sort_by('Created on', :asc)
+ expect_sort_by('User created', :asc)
end
it 'sorts by user created on descending' do
@@ -57,7 +57,7 @@ RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups
expect(first_row.text).to have_content(developer.name)
expect(second_row.text).to have_content(maintainer.name)
- expect_sort_by('Created on', :desc)
+ expect_sort_by('User created', :desc)
end
it 'sorts by last activity ascending' do
diff --git a/spec/features/projects/milestones/milestones_sorting_spec.rb b/spec/features/projects/milestones/milestones_sorting_spec.rb
index 8a8e7d07435..9bf04164a09 100644
--- a/spec/features/projects/milestones/milestones_sorting_spec.rb
+++ b/spec/features/projects/milestones/milestones_sorting_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
+ include ListboxHelpers
+
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
let(:milestones_for_sort_by) do
@@ -40,14 +42,13 @@ RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
# assert milestones listed for given sort order
selected_sort_order = 'Due soon'
milestones_for_sort_by.each do |sort_by, expected_milestones|
- within '[data-testid=milestone_sort_by_dropdown]' do
- click_button selected_sort_order
- milestones = find('ul[role="listbox"]').all('li').map(&:text)
- expect(milestones).to eq(ordered_milestones)
+ click_button selected_sort_order
- find('li', text: sort_by).click
- expect(page).to have_button(sort_by)
- end
+ expect_listbox_items(ordered_milestones)
+
+ select_listbox_item(sort_by)
+
+ expect(page).to have_button(sort_by)
within '.milestones' do
expect(page.all('ul.content-list > li strong > a').map(&:text)).to eq(expected_milestones)
diff --git a/spec/features/projects/navbar_spec.rb b/spec/features/projects/navbar_spec.rb
index 4d85b5cfb2e..6090d132e3a 100644
--- a/spec/features/projects/navbar_spec.rb
+++ b/spec/features/projects/navbar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project navbar', feature_category: :projects do
+RSpec.describe 'Project navbar', :with_license, feature_category: :projects do
include NavbarStructureHelper
include WaitForRequests
@@ -15,6 +15,8 @@ RSpec.describe 'Project navbar', feature_category: :projects do
before do
sign_in(user)
+ stub_feature_flags(show_pages_in_deployments_menu: false)
+
stub_config(registry: { enabled: false })
stub_feature_flags(harbor_registry_integration: false)
insert_package_nav(_('Deployments'))
diff --git a/spec/features/projects/new_project_spec.rb b/spec/features/projects/new_project_spec.rb
index 769ad5bf61a..c6a6ee68185 100644
--- a/spec/features/projects/new_project_spec.rb
+++ b/spec/features/projects/new_project_spec.rb
@@ -552,7 +552,7 @@ RSpec.describe 'New project', :js, feature_category: :projects do
it_behaves_like 'has instructions to enable OAuth'
end
- context 'as an admin' do
+ context 'as an admin', :do_not_mock_admin_mode_setting do
let(:user) { create(:admin) }
let(:oauth_config_instructions) { 'To enable importing projects from Bitbucket, as administrator you need to configure OAuth integration' }
@@ -571,7 +571,7 @@ RSpec.describe 'New project', :js, feature_category: :projects do
it_behaves_like 'has instructions to enable OAuth'
end
- context 'as an admin' do
+ context 'as an admin', :do_not_mock_admin_mode_setting do
let(:user) { create(:admin) }
let(:oauth_config_instructions) { 'To enable importing projects from GitLab.com, as administrator you need to configure OAuth integration' }
diff --git a/spec/features/projects/pages/user_edits_settings_spec.rb b/spec/features/projects/pages/user_edits_settings_spec.rb
index 7ceefdecbae..8c713b6f73a 100644
--- a/spec/features/projects/pages/user_edits_settings_spec.rb
+++ b/spec/features/projects/pages/user_edits_settings_spec.rb
@@ -10,6 +10,8 @@ RSpec.describe 'Pages edits pages settings', :js, feature_category: :pages do
before do
allow(Gitlab.config.pages).to receive(:enabled).and_return(true)
+ stub_feature_flags(show_pages_in_deployments_menu: false)
+
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/projects/pipelines/legacy_pipelines_spec.rb b/spec/features/projects/pipelines/legacy_pipelines_spec.rb
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/spec/features/projects/pipelines/legacy_pipelines_spec.rb
diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb
index d6067e22952..d5739386a30 100644
--- a/spec/features/projects/pipelines/pipeline_spec.rb
+++ b/spec/features/projects/pipelines/pipeline_spec.rb
@@ -18,6 +18,8 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do
end
shared_context 'pipeline builds' do
+ let!(:external_stage) { create(:ci_stage, name: 'external', pipeline: pipeline) }
+
let!(:build_passed) do
create(:ci_build, :success,
pipeline: pipeline, stage: 'build', stage_idx: 0, name: 'build')
@@ -52,7 +54,7 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do
create(:generic_commit_status, status: 'success',
pipeline: pipeline,
name: 'jenkins',
- stage: 'external',
+ ci_stage: external_stage,
ref: 'master',
target_url: 'http://gitlab.com/status')
end
@@ -98,42 +100,16 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do
end
end
- context 'with pipeline_name feature flag enabled' do
- before do
- stub_feature_flags(pipeline_name: true)
- end
-
- it 'displays pipeline name instead of commit title' do
- visit_pipeline
-
- within 'h3' do
- expect(page).to have_content(pipeline.name)
- end
-
- within '.well-segment[data-testid="commit-row"]' do
- expect(page).to have_content(project.commit.title)
- expect(page).to have_content(project.commit.short_id)
- end
- end
- end
+ it 'displays pipeline name instead of commit title' do
+ visit_pipeline
- context 'with pipeline_name feature flag disabled' do
- before do
- stub_feature_flags(pipeline_name: false)
+ within 'h3' do
+ expect(page).to have_content(pipeline.name)
end
- it 'displays commit title' do
- visit_pipeline
-
- within 'h3' do
- expect(page).not_to have_content(pipeline.name)
- expect(page).to have_content(project.commit.title)
- end
-
- within '.well-segment[data-testid="commit-row"]' do
- expect(page).not_to have_content(project.commit.title)
- expect(page).to have_content(project.commit.short_id)
- end
+ within '.well-segment[data-testid="commit-row"]' do
+ expect(page).to have_content(project.commit.title)
+ expect(page).to have_content(project.commit.short_id)
end
end
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index 3bdabd672c7..6a44f421249 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -3,6 +3,7 @@
require 'spec_helper'
RSpec.describe 'Pipelines', :js, feature_category: :projects do
+ include ListboxHelpers
include ProjectForksHelper
include Spec::Support::Helpers::ModalHelpers
@@ -594,7 +595,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
end
it 'changes the Pipeline ID column for Pipeline IID' do
- page.find('[data-testid="pipeline-key-dropdown"]').click
+ page.find('[data-testid="pipeline-key-collapsible-box"]').click
within '.gl-dropdown-contents' do
dropdown_options = page.find_all '.gl-dropdown-item'
@@ -618,6 +619,8 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
user: user)
end
+ let(:external_stage) { create(:ci_stage, name: 'external', pipeline: pipeline) }
+
before do
create_build('build', 0, 'build', :success)
create_build('test', 1, 'rspec 0:2', :pending)
@@ -627,7 +630,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
create_build('test', 1, 'audit', :created)
create_build('deploy', 2, 'production', :created)
- create(:generic_commit_status, pipeline: pipeline, stage: 'external', name: 'jenkins', stage_idx: 3, ref: 'master')
+ create(:generic_commit_status, pipeline: pipeline, ci_stage: external_stage, name: 'jenkins', ref: 'master')
visit project_pipeline_path(project, pipeline)
wait_for_requests
@@ -672,7 +675,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
click_button project.default_branch
wait_for_requests
- find('p', text: 'master').click
+ find('.gl-dropdown-item', text: 'master').click
wait_for_requests
end
@@ -776,8 +779,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
describe 'new pipeline page' do
it 'has field to add a new pipeline' do
- expect(page).to have_selector('[data-testid="ref-select"]')
- expect(find('[data-testid="ref-select"]')).to have_content project.default_branch
+ expect(page).to have_button project.default_branch
expect(page).to have_content('Run for')
end
end
@@ -785,14 +787,9 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
describe 'find pipelines' do
it 'shows filtered pipelines', :js do
click_button project.default_branch
+ send_keys('fix')
- page.within '[data-testid="ref-select"]' do
- find('[data-testid="search-refs"]').native.send_keys('fix')
-
- page.within '.gl-dropdown-contents' do
- expect(page).to have_content('fix')
- end
- end
+ expect_listbox_item('fix')
end
end
end
diff --git a/spec/features/projects/settings/monitor_settings_spec.rb b/spec/features/projects/settings/monitor_settings_spec.rb
index 2cdcf86757e..4b553b57331 100644
--- a/spec/features/projects/settings/monitor_settings_spec.rb
+++ b/spec/features/projects/settings/monitor_settings_spec.rb
@@ -113,7 +113,7 @@ RSpec.describe 'Projects > Settings > For a forked project', :js, feature_catego
within('div#project-dropdown') do
click_button('Select project')
- click_button('Sentry | internal')
+ find('li', text: 'Sentry | internal').click
end
click_button('Save changes')
diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb
index 37973c9b8d6..51858ddf8c5 100644
--- a/spec/features/projects/settings/pipelines_settings_spec.rb
+++ b/spec/features/projects/settings/pipelines_settings_spec.rb
@@ -149,29 +149,5 @@ RSpec.describe "Projects > Settings > Pipelines settings", feature_category: :pr
end
end
end
-
- describe 'runners registration token' do
- let!(:token) { project.runners_token }
-
- before do
- visit project_settings_ci_cd_path(project)
- end
-
- it 'has a registration token' do
- expect(page.find('#registration_token')).to have_content(token)
- end
-
- describe 'reload registration token' do
- let(:page_token) { find('#registration_token').text }
-
- before do
- click_link 'Reset registration token'
- end
-
- it 'changes registration token' do
- expect(page_token).not_to eq token
- end
- end
- end
end
end
diff --git a/spec/features/projects/settings/user_manages_project_members_spec.rb b/spec/features/projects/settings/user_manages_project_members_spec.rb
index ee832da48d9..fac4d5a99a5 100644
--- a/spec/features/projects/settings/user_manages_project_members_spec.rb
+++ b/spec/features/projects/settings/user_manages_project_members_spec.rb
@@ -22,13 +22,12 @@ RSpec.describe 'Projects > Settings > User manages project members', feature_cat
it 'cancels a team member', :js do
visit(project_project_members_path(project))
- page.within find_member_row(user_dmitriy) do
- click_button 'Remove member'
- end
+ show_actions_for_username(user_dmitriy)
+ click_button _('Remove member')
within_modal do
expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests'
- click_button('Remove member')
+ click_button _('Remove member')
end
visit(project_project_members_path(project))
diff --git a/spec/features/projects/settings/user_searches_in_settings_spec.rb b/spec/features/projects/settings/user_searches_in_settings_spec.rb
index 8a11507d064..923a6a10671 100644
--- a/spec/features/projects/settings/user_searches_in_settings_spec.rb
+++ b/spec/features/projects/settings/user_searches_in_settings_spec.rb
@@ -68,6 +68,7 @@ RSpec.describe 'User searches project settings', :js, feature_category: :project
context 'in Pages page' do
before do
+ stub_feature_flags(show_pages_in_deployments_menu: false)
allow(Gitlab.config.pages).to receive(:enabled).and_return(true)
visit project_pages_path(project)
diff --git a/spec/features/projects/terraform_spec.rb b/spec/features/projects/terraform_spec.rb
index bbc7f675c55..5e2f65165c2 100644
--- a/spec/features/projects/terraform_spec.rb
+++ b/spec/features/projects/terraform_spec.rb
@@ -56,9 +56,9 @@ RSpec.describe 'Terraform', :js, feature_category: :projects do
end
context 'when clicking on the delete button' do
- let(:additional_state) { create(:terraform_state, project: project) }
+ let!(:additional_state) { create(:terraform_state, project: project) }
- it 'removes the state', :aggregate_failures, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/333640' do
+ it 'removes the state', :aggregate_failures do
visit project_terraform_index_path(project)
expect(page).to have_content(additional_state.name)
@@ -69,7 +69,12 @@ RSpec.describe 'Terraform', :js, feature_category: :projects do
click_button 'Remove'
expect(page).to have_content("#{additional_state.name} successfully removed")
- expect { additional_state.reload }.to raise_error ActiveRecord::RecordNotFound
+
+ find("[data-testid='remove-icon']").hover
+ expect(page).to have_content("Deletion in progress")
+
+ additional_state.reload
+ expect(additional_state.deleted_at).not_to be_nil
end
end
diff --git a/spec/features/projects/tree/create_directory_spec.rb b/spec/features/projects/tree/create_directory_spec.rb
index 3a0160c42fb..58f572bc021 100644
--- a/spec/features/projects/tree/create_directory_spec.rb
+++ b/spec/features/projects/tree/create_directory_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_ide do
+ include WebIdeSpecHelpers
+
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
@@ -16,9 +18,7 @@ RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_id
wait_for_requests
- click_link('Web IDE')
-
- wait_for_requests
+ ide_visit_from_link
end
after do
@@ -26,6 +26,8 @@ RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_id
end
it 'creates directory in current directory' do
+ wait_for_all_requests
+
all('.ide-tree-actions button').last.click
page.within('.modal') do
diff --git a/spec/features/projects/tree/create_file_spec.rb b/spec/features/projects/tree/create_file_spec.rb
index 61240150658..674aef8e6f4 100644
--- a/spec/features/projects/tree/create_file_spec.rb
+++ b/spec/features/projects/tree/create_file_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do
+ include WebIdeSpecHelpers
+
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
@@ -16,9 +18,7 @@ RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do
wait_for_requests
- click_link('Web IDE')
-
- wait_for_requests
+ ide_visit_from_link
end
after do
@@ -26,6 +26,7 @@ RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do
end
it 'creates file in current directory' do
+ wait_for_requests
first('.ide-tree-actions button').click
page.within('.modal') do
diff --git a/spec/features/projects/tree/tree_show_spec.rb b/spec/features/projects/tree/tree_show_spec.rb
index 21932cae58b..835a3cda65e 100644
--- a/spec/features/projects/tree/tree_show_spec.rb
+++ b/spec/features/projects/tree/tree_show_spec.rb
@@ -3,6 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects tree', :js, feature_category: :web_ide do
+ include WebIdeSpecHelpers
include RepoHelpers
let(:user) { create(:user) }
@@ -123,10 +124,9 @@ RSpec.describe 'Projects tree', :js, feature_category: :web_ide do
it 'opens folder in IDE' do
visit project_tree_path(project, File.join('master', 'bar'))
+ ide_visit_from_link
- click_link 'Web IDE'
-
- wait_for_requests
+ wait_for_all_requests
find('.ide-file-list')
wait_for_requests
expect(page).to have_selector('.is-open', text: 'bar')
diff --git a/spec/features/projects/tree/upload_file_spec.rb b/spec/features/projects/tree/upload_file_spec.rb
index 1e4abc789c2..42fa88a0d3e 100644
--- a/spec/features/projects/tree/upload_file_spec.rb
+++ b/spec/features/projects/tree/upload_file_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide do
+ include WebIdeSpecHelpers
+
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:txt_file) { File.join(Rails.root, 'spec', 'fixtures', 'doc_sample.txt') }
@@ -18,9 +20,7 @@ RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide
wait_for_requests
- click_link('Web IDE')
-
- wait_for_requests
+ ide_visit_from_link
end
after do
@@ -28,6 +28,7 @@ RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide
end
it 'uploads text file' do
+ wait_for_all_requests
# make the field visible so capybara can use it
execute_script('document.querySelector("#file-upload").classList.remove("hidden")')
attach_file('file-upload', txt_file)
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index ec0b3f9d81b..84702b3a6bb 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -213,7 +213,7 @@ RSpec.describe 'Project', feature_category: :projects do
end
end
- describe 'showing information about source of a project fork' do
+ describe 'showing information about source of a project fork', :js do
let(:user) { create(:user) }
let(:base_project) { create(:project, :public, :repository) }
let(:forked_project) { fork_project(base_project, user, repository: true) }
@@ -224,6 +224,7 @@ RSpec.describe 'Project', feature_category: :projects do
it 'shows a link to the source project when it is available', :sidekiq_might_not_need_inline do
visit project_path(forked_project)
+ wait_for_requests
expect(page).to have_content('Forked from')
expect(page).to have_link(base_project.full_name)
@@ -233,6 +234,7 @@ RSpec.describe 'Project', feature_category: :projects do
forked_project
visit project_path(base_project)
+ wait_for_requests
expect(page).not_to have_content('In fork network of')
expect(page).not_to have_content('Forked from')
@@ -243,7 +245,7 @@ RSpec.describe 'Project', feature_category: :projects do
Projects::DestroyService.new(base_project, base_project.first_owner).execute
visit project_path(forked_project)
-
+ wait_for_requests
expect(page).to have_content('Forked from an inaccessible project')
end
@@ -255,7 +257,7 @@ RSpec.describe 'Project', feature_category: :projects do
Projects::DestroyService.new(forked_project, user).execute
visit project_path(fork_of_fork)
-
+ wait_for_requests
expect(page).to have_content("Forked from")
expect(page).to have_link(base_project.full_name)
end
diff --git a/spec/features/protected_branches_spec.rb b/spec/features/protected_branches_spec.rb
index c549d99a51f..04096b3e4f9 100644
--- a/spec/features/protected_branches_spec.rb
+++ b/spec/features/protected_branches_spec.rb
@@ -117,7 +117,7 @@ RSpec.describe 'Protected Branches', :js, feature_category: :source_code_managem
set_protected_branch_name('some-branch')
click_on "Protect"
- within(".protected-branches-list") { expect(page).to have_content('Branch was deleted') }
+ within(".protected-branches-list") { expect(page).to have_content('Branch does not exist') }
end
end
diff --git a/spec/features/protected_tags_spec.rb b/spec/features/protected_tags_spec.rb
index 1aadc7ce90a..c2058a5c345 100644
--- a/spec/features/protected_tags_spec.rb
+++ b/spec/features/protected_tags_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Protected Tags', :js, feature_category: :source_code_management do
+RSpec.describe 'Protected Tags', :js, :with_license, feature_category: :source_code_management do
include ProtectedTagHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb
index 40ba0fa9ebb..e7c2452af93 100644
--- a/spec/features/runners_spec.rb
+++ b/spec/features/runners_spec.rb
@@ -9,370 +9,402 @@ RSpec.describe 'Runners', feature_category: :runner_fleet do
sign_in(user)
end
- context 'when user opens runners page' do
- let(:project) { create(:project) }
-
+ context 'when project_runners_vue_ui is disabled' do
before do
- project.add_maintainer(user)
+ stub_feature_flags(project_runners_vue_ui: false)
end
- it 'user can see a link with instructions on how to install GitLab Runner' do
- visit project_runners_path(project)
+ context 'when user opens runners page' do
+ let(:project) { create(:project) }
- expect(page).to have_link('Install GitLab Runner and ensure it\'s running.', href: "https://docs.gitlab.com/runner/install/")
- end
- end
+ before do
+ project.add_maintainer(user)
+ end
- context 'when a project has enabled shared_runners' do
- let_it_be(:project) { create(:project) }
+ it 'user can see a link with instructions on how to install GitLab Runner' do
+ visit project_runners_path(project)
- before do
- project.add_maintainer(user)
- end
+ expect(page).to have_link('Install GitLab Runner and ensure it\'s running.', href: "https://docs.gitlab.com/runner/install/")
+ end
- context 'when a project_type runner is activated on the project' do
- let_it_be(:project_runner) { create(:ci_runner, :project, projects: [project]) }
+ describe 'runners registration token' do
+ let!(:token) { project.runners_token }
- it 'user sees the specific runner' do
- visit project_runners_path(project)
+ context 'when project_runners_vue_ui is disabled' do
+ before do
+ visit project_runners_path(project)
+ end
- within '.activated-specific-runners' do
- expect(page).to have_content(project_runner.display_name)
- end
+ it 'has a registration token' do
+ expect(page.find('#registration_token')).to have_content(token)
+ end
- click_on project_runner.short_sha
+ describe 'reload registration token' do
+ let(:page_token) { find('#registration_token').text }
- expect(page).to have_content(project_runner.platform)
+ before do
+ click_link 'Reset registration token'
+ end
+
+ it 'changes registration token' do
+ expect(page_token).not_to eq token
+ end
+ end
+ end
end
+ end
- it 'user can pause and resume the specific runner' do
- visit project_runners_path(project)
+ context 'when a project has enabled shared_runners' do
+ let_it_be(:project) { create(:project) }
- within '.activated-specific-runners' do
- expect(page).to have_link('Pause')
- end
+ before do
+ project.add_maintainer(user)
+ end
- click_on 'Pause'
+ context 'when a project_type runner is activated on the project' do
+ let_it_be(:project_runner) { create(:ci_runner, :project, projects: [project]) }
- within '.activated-specific-runners' do
- expect(page).to have_link('Resume')
- end
+ it 'user sees the specific runner' do
+ visit project_runners_path(project)
- click_on 'Resume'
+ within '.activated-specific-runners' do
+ expect(page).to have_content(project_runner.display_name)
+ end
+
+ click_on project_runner.short_sha
- within '.activated-specific-runners' do
- expect(page).to have_link('Pause')
+ expect(page).to have_content(project_runner.platform)
end
- end
- it 'user removes an activated specific runner if this is last project for that runners' do
- visit project_runners_path(project)
+ it 'user can pause and resume the specific runner' do
+ visit project_runners_path(project)
- within '.activated-specific-runners' do
- click_on 'Remove runner'
- end
+ within '.activated-specific-runners' do
+ expect(page).to have_link('Pause')
+ end
- expect(page).not_to have_content(project_runner.display_name)
- end
+ click_on 'Pause'
- it 'user edits the runner to be protected' do
- visit project_runners_path(project)
+ within '.activated-specific-runners' do
+ expect(page).to have_link('Resume')
+ end
- within '.activated-specific-runners' do
- first('[data-testid="edit-runner-link"]').click
- end
+ click_on 'Resume'
- expect(page.find_field('runner[access_level]')).not_to be_checked
+ within '.activated-specific-runners' do
+ expect(page).to have_link('Pause')
+ end
+ end
- check 'runner_access_level'
- click_button 'Save changes'
+ it 'user removes an activated specific runner if this is last project for that runners' do
+ visit project_runners_path(project)
- expect(page).to have_content 'Protected Yes'
- end
+ within '.activated-specific-runners' do
+ click_on 'Remove runner'
+ end
- context 'when a runner has a tag' do
- before do
- project_runner.update!(tag_list: ['tag'])
+ expect(page).not_to have_content(project_runner.display_name)
end
- it 'user edits runner not to run untagged jobs' do
+ it 'user edits the runner to be protected' do
visit project_runners_path(project)
within '.activated-specific-runners' do
first('[data-testid="edit-runner-link"]').click
end
- expect(page.find_field('runner[run_untagged]')).to be_checked
+ expect(page.find_field('runner[access_level]')).not_to be_checked
- uncheck 'runner_run_untagged'
+ check 'runner_access_level'
click_button 'Save changes'
- expect(page).to have_content 'Can run untagged jobs No'
+ expect(page).to have_content 'Protected Yes'
end
- end
-
- context 'when a shared runner is activated on the project' do
- let!(:shared_runner) { create(:ci_runner, :instance) }
- it 'user sees CI/CD setting page' do
- visit project_runners_path(project)
-
- within '[data-testid="available-shared-runners"]' do
- expect(page).to have_content(shared_runner.display_name)
+ context 'when a runner has a tag' do
+ before do
+ project_runner.update!(tag_list: ['tag'])
end
- end
- context 'when multiple shared runners are configured' do
- let_it_be(:shared_runner_2) { create(:ci_runner, :instance) }
-
- it 'shows the runner count' do
+ it 'user edits runner not to run untagged jobs' do
visit project_runners_path(project)
- within '[data-testid="available-shared-runners"]' do
- expect(page).to have_content format(_('Available shared runners: %{count}'), { count: 2 })
+ within '.activated-specific-runners' do
+ first('[data-testid="edit-runner-link"]').click
end
+
+ expect(page.find_field('runner[run_untagged]')).to be_checked
+
+ uncheck 'runner_run_untagged'
+ click_button 'Save changes'
+
+ expect(page).to have_content 'Can run untagged jobs No'
end
+ end
- it 'adds pagination to the shared runner list' do
- stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
+ context 'when a shared runner is activated on the project' do
+ let!(:shared_runner) { create(:ci_runner, :instance) }
+ it 'user sees CI/CD setting page' do
visit project_runners_path(project)
within '[data-testid="available-shared-runners"]' do
- expect(find('.pagination')).not_to be_nil
+ expect(page).to have_content(shared_runner.display_name)
end
end
- end
- end
- context 'when multiple project runners are configured' do
- let!(:project_runner_2) { create(:ci_runner, :project, projects: [project]) }
+ context 'when multiple shared runners are configured' do
+ let_it_be(:shared_runner_2) { create(:ci_runner, :instance) }
- it 'adds pagination to the runner list' do
- stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
+ it 'shows the runner count' do
+ visit project_runners_path(project)
- visit project_runners_path(project)
+ within '[data-testid="available-shared-runners"]' do
+ expect(page).to have_content format(_('Available shared runners: %{count}'), { count: 2 })
+ end
+ end
- expect(find('.pagination')).not_to be_nil
- end
- end
- end
+ it 'adds pagination to the shared runner list' do
+ stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
- context 'when a specific runner exists in another project' do
- let(:another_project) { create(:project) }
- let!(:project_runner) { create(:ci_runner, :project, projects: [another_project]) }
+ visit project_runners_path(project)
- before do
- another_project.add_maintainer(user)
- end
+ within '[data-testid="available-shared-runners"]' do
+ expect(find('.pagination')).not_to be_nil
+ end
+ end
+ end
+ end
- it 'user enables and disables a specific runner' do
- visit project_runners_path(project)
+ context 'when multiple project runners are configured' do
+ let!(:project_runner_2) { create(:ci_runner, :project, projects: [project]) }
- within '.available-specific-runners' do
- click_on 'Enable for this project'
- end
+ it 'adds pagination to the runner list' do
+ stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
- expect(page.find('.activated-specific-runners')).to have_content(project_runner.display_name)
+ visit project_runners_path(project)
- within '.activated-specific-runners' do
- click_on 'Disable for this project'
+ expect(find('.pagination')).not_to be_nil
+ end
end
-
- expect(page.find('.available-specific-runners')).to have_content(project_runner.display_name)
end
- end
- context 'shared runner text' do
- context 'when application settings have shared_runners_text' do
- let(:shared_runners_text) { 'custom **shared** runners description' }
- let(:shared_runners_html) { 'custom shared runners description' }
+ context 'when a specific runner exists in another project' do
+ let(:another_project) { create(:project) }
+ let!(:project_runner) { create(:ci_runner, :project, projects: [another_project]) }
before do
- stub_application_setting(shared_runners_text: shared_runners_text)
+ another_project.add_maintainer(user)
end
- it 'user sees shared runners description' do
+ it 'user enables and disables a specific runner' do
visit project_runners_path(project)
- page.within("[data-testid='shared-runners-description']") do
- expect(page).not_to have_content('The same shared runner executes code from multiple projects')
- expect(page).to have_content(shared_runners_html)
+ within '.available-specific-runners' do
+ click_on 'Enable for this project'
+ end
+
+ expect(page.find('.activated-specific-runners')).to have_content(project_runner.display_name)
+
+ within '.activated-specific-runners' do
+ click_on 'Disable for this project'
end
+
+ expect(page.find('.available-specific-runners')).to have_content(project_runner.display_name)
end
end
- context 'when application settings have an unsafe link in shared_runners_text' do
- let(:shared_runners_text) { '<a href="javascript:alert(\'xss\')">link</a>' }
+ context 'shared runner text' do
+ context 'when application settings have shared_runners_text' do
+ let(:shared_runners_text) { 'custom **shared** runners description' }
+ let(:shared_runners_html) { 'custom shared runners description' }
- before do
- stub_application_setting(shared_runners_text: shared_runners_text)
- end
+ before do
+ stub_application_setting(shared_runners_text: shared_runners_text)
+ end
- it 'user sees no link' do
- visit project_runners_path(project)
+ it 'user sees shared runners description' do
+ visit project_runners_path(project)
- page.within("[data-testid='shared-runners-description']") do
- expect(page).to have_content('link')
- expect(page).not_to have_link('link')
+ page.within("[data-testid='shared-runners-description']") do
+ expect(page).not_to have_content('The same shared runner executes code from multiple projects')
+ expect(page).to have_content(shared_runners_html)
+ end
end
end
- end
- context 'when application settings have an unsafe image in shared_runners_text' do
- let(:shared_runners_text) { '<img src="404.png" onerror="alert(\'xss\')"/>' }
+ context 'when application settings have an unsafe link in shared_runners_text' do
+ let(:shared_runners_text) { '<a href="javascript:alert(\'xss\')">link</a>' }
- before do
- stub_application_setting(shared_runners_text: shared_runners_text)
- end
+ before do
+ stub_application_setting(shared_runners_text: shared_runners_text)
+ end
- it 'user sees image safely' do
- visit project_runners_path(project)
+ it 'user sees no link' do
+ visit project_runners_path(project)
- page.within("[data-testid='shared-runners-description']") do
- expect(page).to have_css('img')
- expect(page).not_to have_css('img[onerror]')
+ page.within("[data-testid='shared-runners-description']") do
+ expect(page).to have_content('link')
+ expect(page).not_to have_link('link')
+ end
end
end
- end
- end
- end
- context 'enable shared runners in project settings', :js do
- before do
- project.add_maintainer(user)
+ context 'when application settings have an unsafe image in shared_runners_text' do
+ let(:shared_runners_text) { '<img src="404.png" onerror="alert(\'xss\')"/>' }
- visit project_runners_path(project)
- end
+ before do
+ stub_application_setting(shared_runners_text: shared_runners_text)
+ end
- context 'when a project has enabled shared_runners' do
- let(:project) { create(:project, shared_runners_enabled: true) }
+ it 'user sees image safely' do
+ visit project_runners_path(project)
- it 'shared runners toggle is on' do
- expect(page).to have_selector('[data-testid="toggle-shared-runners"]')
- expect(page).to have_selector('[data-testid="toggle-shared-runners"] .is-checked')
+ page.within("[data-testid='shared-runners-description']") do
+ expect(page).to have_css('img')
+ expect(page).not_to have_css('img[onerror]')
+ end
+ end
+ end
end
end
- context 'when a project has disabled shared_runners' do
- let(:project) { create(:project, shared_runners_enabled: false) }
+ context 'enable shared runners in project settings', :js do
+ before do
+ project.add_maintainer(user)
- it 'shared runners toggle is off' do
- expect(page).not_to have_selector('[data-testid="toggle-shared-runners"] .is-checked')
+ visit project_runners_path(project)
end
- end
- end
-
- context 'group runners in project settings' do
- before do
- project.add_maintainer(user)
- end
- let_it_be(:group) { create :group }
- let_it_be(:project) { create :project, group: group }
+ context 'when a project has enabled shared_runners' do
+ let(:project) { create(:project, shared_runners_enabled: true) }
- context 'as project and group maintainer' do
- before do
- group.add_maintainer(user)
+ it 'shared runners toggle is on' do
+ expect(page).to have_selector('[data-testid="toggle-shared-runners"]')
+ expect(page).to have_selector('[data-testid="toggle-shared-runners"] .is-checked')
+ end
end
- context 'project with a group but no group runner' do
- it 'group runners are not available' do
- visit project_runners_path(project)
+ context 'when a project has disabled shared_runners' do
+ let(:project) { create(:project, shared_runners_enabled: false) }
- expect(page).not_to have_content 'To register them, go to the group\'s Runners page.'
- expect(page).to have_content 'Ask your group owner to set up a group runner'
+ it 'shared runners toggle is off' do
+ expect(page).not_to have_selector('[data-testid="toggle-shared-runners"] .is-checked')
end
end
end
- context 'as project maintainer and group owner' do
+ context 'group runners in project settings' do
before do
- group.add_owner(user)
+ project.add_maintainer(user)
end
- context 'project with a group but no group runner' do
- it 'group runners are available' do
- visit project_runners_path(project)
-
- expect(page).to have_content 'This group does not have any group runners yet.'
+ let_it_be(:group) { create :group }
+ let_it_be(:project) { create :project, group: group }
- expect(page).to have_content 'To register them, go to the group\'s Runners page.'
- expect(page).not_to have_content 'Ask your group owner to set up a group runner'
+ context 'as project and group maintainer' do
+ before do
+ group.add_maintainer(user)
end
- end
- end
-
- context 'as project maintainer' do
- context 'project without a group' do
- let(:project) { create :project }
- it 'group runners are not available' do
- visit project_runners_path(project)
+ context 'project with a group but no group runner' do
+ it 'group runners are not available' do
+ visit project_runners_path(project)
- expect(page).to have_content 'This project does not belong to a group and cannot make use of group runners.'
+ expect(page).not_to have_content 'To register them, go to the group\'s Runners page.'
+ expect(page).to have_content 'Ask your group owner to set up a group runner'
+ end
end
end
- context 'with group project' do
- let_it_be(:group) { create(:group) }
- let_it_be(:project) { create(:project, group: group) }
+ context 'as project maintainer and group owner' do
+ before do
+ group.add_owner(user)
+ end
context 'project with a group but no group runner' do
- it 'group runners are not available' do
+ it 'group runners are available' do
visit project_runners_path(project)
expect(page).to have_content 'This group does not have any group runners yet.'
- expect(page).not_to have_content 'To register them, go to the group\'s Runners page.'
- expect(page).to have_content 'Ask your group owner to set up a group runner.'
+ expect(page).to have_content 'To register them, go to the group\'s Runners page.'
+ expect(page).not_to have_content 'Ask your group owner to set up a group runner'
end
end
+ end
- context 'project with a group and a group runner' do
- let_it_be(:group_runner) do
- create(:ci_runner, :group, groups: [group], description: 'group-runner')
- end
+ context 'as project maintainer' do
+ context 'project without a group' do
+ let(:project) { create :project }
- it 'group runners are available' do
+ it 'group runners are not available' do
visit project_runners_path(project)
- expect(page).to have_content 'Available group runners: 1'
- expect(page).to have_content 'group-runner'
+ expect(page).to have_content 'This project does not belong to a group and cannot make use of group runners.'
end
+ end
- it 'group runners may be disabled for a project' do
- visit project_runners_path(project)
-
- click_on 'Disable group runners'
+ context 'with group project' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
- expect(page).to have_content 'Enable group runners'
- expect(project.reload.group_runners_enabled).to be false
+ context 'project with a group but no group runner' do
+ it 'group runners are not available' do
+ visit project_runners_path(project)
- click_on 'Enable group runners'
+ expect(page).to have_content 'This group does not have any group runners yet.'
- expect(page).to have_content 'Disable group runners'
- expect(project.reload.group_runners_enabled).to be true
+ expect(page).not_to have_content 'To register them, go to the group\'s Runners page.'
+ expect(page).to have_content 'Ask your group owner to set up a group runner.'
+ end
end
- context 'when multiple group runners are configured' do
- let_it_be(:group_runner_2) { create(:ci_runner, :group, groups: [group]) }
+ context 'project with a group and a group runner' do
+ let_it_be(:group_runner) do
+ create(:ci_runner, :group, groups: [group], description: 'group-runner')
+ end
- it 'shows the runner count' do
+ it 'group runners are available' do
visit project_runners_path(project)
- within '[data-testid="group-runners"]' do
- expect(page).to have_content format(_('Available group runners: %{runners}'), { runners: 2 })
- end
+ expect(page).to have_content 'Available group runners: 1'
+ expect(page).to have_content 'group-runner'
end
- it 'adds pagination to the group runner list' do
- stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
-
+ it 'group runners may be disabled for a project' do
visit project_runners_path(project)
- within '[data-testid="group-runners"]' do
- expect(find('.pagination')).not_to be_nil
+ click_on 'Disable group runners'
+
+ expect(page).to have_content 'Enable group runners'
+ expect(project.reload.group_runners_enabled).to be false
+
+ click_on 'Enable group runners'
+
+ expect(page).to have_content 'Disable group runners'
+ expect(project.reload.group_runners_enabled).to be true
+ end
+
+ context 'when multiple group runners are configured' do
+ let_it_be(:group_runner_2) { create(:ci_runner, :group, groups: [group]) }
+
+ it 'shows the runner count' do
+ visit project_runners_path(project)
+
+ within '[data-testid="group-runners"]' do
+ expect(page).to have_content format(_('Available group runners: %{runners}'), { runners: 2 })
+ end
+ end
+
+ it 'adds pagination to the group runner list' do
+ stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
+
+ visit project_runners_path(project)
+
+ within '[data-testid="group-runners"]' do
+ expect(find('.pagination')).not_to be_nil
+ end
end
end
end
diff --git a/spec/features/search/user_searches_for_code_spec.rb b/spec/features/search/user_searches_for_code_spec.rb
index 14d67bac85f..dd7095107f4 100644
--- a/spec/features/search/user_searches_for_code_spec.rb
+++ b/spec/features/search/user_searches_for_code_spec.rb
@@ -17,20 +17,24 @@ RSpec.describe 'User searches for code', :js, :disable_rate_limiter, feature_cat
sign_in(user)
end
- it 'finds a file' do
- visit(project_path(project))
+ context 'when on a project page' do
+ before do
+ visit(project_path(project))
+ end
- submit_search('application.js')
- select_search_scope('Code')
+ it 'finds a file' do
+ submit_search('application.js')
+ select_search_scope('Code')
- expect(page).to have_selector('.results', text: 'application.js')
- expect(page).to have_selector('.file-content .code')
- expect(page).to have_selector("span.line[lang='javascript']")
- expect(page).to have_link('application.js', href: %r{master/files/js/application.js})
- expect(page).to have_button('Copy file path')
+ expect(page).to have_selector('.results', text: 'application.js')
+ expect(page).to have_selector('.file-content .code')
+ expect(page).to have_selector("span.line[lang='javascript']")
+ expect(page).to have_link('application.js', href: %r{master/files/js/application.js})
+ expect(page).to have_button('Copy file path')
+ end
end
- context 'when on a project page' do
+ context 'when on a project search page' do
before do
visit(search_path)
find('[data-testid="project-filter"]').click
@@ -47,28 +51,31 @@ RSpec.describe 'User searches for code', :js, :disable_rate_limiter, feature_cat
let(:additional_params) { { project_id: project.id } }
end
- it 'finds code and links to blob' do
- expected_result = 'Update capybara, rspec-rails, poltergeist to recent versions'
-
- fill_in('dashboard_search', with: 'rspec')
- find('.gl-search-box-by-click-search-button').click
+ context 'when searching code' do
+ let(:expected_result) { 'Update capybara, rspec-rails, poltergeist to recent versions' }
- expect(page).to have_selector('.results', text: expected_result)
+ before do
+ fill_in('dashboard_search', with: 'rspec')
+ find('.gl-search-box-by-click-search-button').click
+ end
- find("#blob-L3").click
- expect(current_url).to match(%r{blob/master/.gitignore#L3})
- end
+ it 'finds code and links to blob' do
+ expect(page).to have_selector('.results', text: expected_result)
- it 'finds code and links to blame' do
- expected_result = 'Update capybara, rspec-rails, poltergeist to recent versions'
+ find("#blob-L3").click
+ expect(current_url).to match(%r{blob/master/.gitignore#L3})
+ end
- fill_in('dashboard_search', with: 'rspec')
- find('.gl-search-box-by-click-search-button').click
+ it 'finds code and links to blame' do
+ expect(page).to have_selector('.results', text: expected_result)
- expect(page).to have_selector('.results', text: expected_result)
+ find("#blame-L3").click
+ expect(current_url).to match(%r{blame/master/.gitignore#L3})
+ end
- find("#blame-L3").click
- expect(current_url).to match(%r{blame/master/.gitignore#L3})
+ it_behaves_like 'code highlight' do
+ subject { page }
+ end
end
it 'search multiple words with refs switching' do
diff --git a/spec/features/signed_commits_spec.rb b/spec/features/signed_commits_spec.rb
index 34127787e47..bc82afc70a3 100644
--- a/spec/features/signed_commits_spec.rb
+++ b/spec/features/signed_commits_spec.rb
@@ -94,8 +94,6 @@ RSpec.describe 'GPG signed commits', feature_category: :source_code_management d
within '.popover' do
expect(page).to have_content 'This commit was signed with a verified signature, but the committer email is not associated with the GPG Key.'
- expect(page).to have_content 'Bette Cartwright'
- expect(page).to have_content '@bette.cartwright'
expect(page).to have_content "GPG Key ID: #{GpgHelpers::User2.primary_keyid}"
end
end
@@ -110,8 +108,6 @@ RSpec.describe 'GPG signed commits', feature_category: :source_code_management d
within '.popover' do
expect(page).to have_content "This commit was signed with a different user's verified signature."
- expect(page).to have_content 'Bette Cartwright'
- expect(page).to have_content '@bette.cartwright'
expect(page).to have_content "GPG Key ID: #{GpgHelpers::User2.primary_keyid}"
end
end
@@ -138,9 +134,7 @@ RSpec.describe 'GPG signed commits', feature_category: :source_code_management d
page.find('.gpg-status-box', text: 'Verified').click
within '.popover' do
- expect(page).to have_content 'This commit was signed with a verified signature and the committer email is verified to belong to the same user.'
- expect(page).to have_content 'Nannie Bernhard'
- expect(page).to have_content '@nannie.bernhard'
+ expect(page).to have_content 'This commit was signed with a verified signature and the committer email was verified to belong to the same user.'
expect(page).to have_content "GPG Key ID: #{GpgHelpers::User1.primary_keyid}"
end
end
@@ -162,9 +156,7 @@ RSpec.describe 'GPG signed commits', feature_category: :source_code_management d
page.find('.gpg-status-box', text: 'Verified').click
within '.popover' do
- expect(page).to have_content 'This commit was signed with a verified signature and the committer email is verified to belong to the same user.'
- expect(page).to have_content 'Nannie Bernhard'
- expect(page).to have_content 'nannie.bernhard@example.com'
+ expect(page).to have_content 'This commit was signed with a verified signature and the committer email was verified to belong to the same user.'
expect(page).to have_content "GPG Key ID: #{GpgHelpers::User1.primary_keyid}"
end
end
diff --git a/spec/features/snippets/show_spec.rb b/spec/features/snippets/show_spec.rb
index a6e0bc32d42..dc2fcdd7305 100644
--- a/spec/features/snippets/show_spec.rb
+++ b/spec/features/snippets/show_spec.rb
@@ -24,4 +24,25 @@ RSpec.describe 'Snippet', :js, feature_category: :source_code_management do
subject { visit snippet_path(snippet) }
end
+
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_snippets_path, :snippets
+
+ context 'when unauthenticated' do
+ it 'does not have the sidebar' do
+ visit snippet_path(snippet)
+
+ expect(page).to have_title _('Snippets')
+ expect(page).not_to have_css('aside.nav-sidebar')
+ end
+ end
+
+ context 'when authenticated as a different user' do
+ let_it_be(:different_user) { create(:user) }
+
+ before do
+ sign_in(different_user)
+ end
+
+ it_behaves_like 'a dashboard page with sidebar', :dashboard_snippets_path, :snippets
+ end
end
diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb
index 064250c5673..03f569fe4b0 100644
--- a/spec/features/snippets/user_creates_snippet_spec.rb
+++ b/spec/features/snippets/user_creates_snippet_spec.rb
@@ -21,6 +21,8 @@ RSpec.describe 'User creates snippet', :js, feature_category: :source_code_manag
visit new_snippet_path
end
+ it_behaves_like 'a dashboard page with sidebar', :new_snippet_path, :snippets
+
def fill_form
snippet_fill_in_form(title: title, content: file_content, description: md_description)
end
diff --git a/spec/features/triggers_spec.rb b/spec/features/triggers_spec.rb
index 3616fdb2e8e..23a13994fa4 100644
--- a/spec/features/triggers_spec.rb
+++ b/spec/features/triggers_spec.rb
@@ -23,7 +23,7 @@ RSpec.describe 'Triggers', :js, feature_category: :continuous_integration do
wait_for_requests
end
- shared_examples 'triggers page' do
+ describe 'triggers page' do
describe 'create trigger workflow' do
it 'prevents adding new trigger with no description' do
fill_in 'trigger_description', with: ''
@@ -139,16 +139,4 @@ RSpec.describe 'Triggers', :js, feature_category: :continuous_integration do
end
end
end
-
- context 'when ci_pipeline_triggers_settings_vue_ui is enabled' do
- it_behaves_like 'triggers page'
- end
-
- context 'when ci_pipeline_triggers_settings_vue_ui is disabled' do
- before do
- stub_feature_flags(ci_pipeline_triggers_settings_vue_ui: false)
- end
-
- it_behaves_like 'triggers page'
- end
end
diff --git a/spec/features/user_sees_revert_modal_spec.rb b/spec/features/user_sees_revert_modal_spec.rb
index ea5fd537c5b..ae3158e4270 100644
--- a/spec/features/user_sees_revert_modal_spec.rb
+++ b/spec/features/user_sees_revert_modal_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Merge request > User sees revert modal', :js, :sidekiq_might_not_need_inline,
-feature_category: :code_review do
+feature_category: :code_review_workflow do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/user_sorts_things_spec.rb b/spec/features/user_sorts_things_spec.rb
index 708caf79090..b45de88832c 100644
--- a/spec/features/user_sorts_things_spec.rb
+++ b/spec/features/user_sorts_things_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe "User sorts things", :js do
expect(page).to have_button(sort_option)
end
- it "merge requests -> dashboard merge requests", feature_category: :code_review do
+ it "merge requests -> dashboard merge requests", feature_category: :code_review_workflow do
sort_option = s_('SortOptions|Updated date')
visit(project_merge_requests_path(project))
diff --git a/spec/features/users/login_spec.rb b/spec/features/users/login_spec.rb
index 105e9f97989..5e683befeec 100644
--- a/spec/features/users/login_spec.rb
+++ b/spec/features/users/login_spec.rb
@@ -926,7 +926,8 @@ RSpec.describe 'Login', :clean_gitlab_redis_sessions, feature_category: :system_
stub_omniauth_saml_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [mock_saml_config])
end
- it 'asks the user to accept the terms before setting an email' do
+ it 'asks the user to accept the terms before setting an email',
+ quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/388049', type: :flaky } do
expect(authentication_metrics)
.to increment(:user_authenticated_counter)