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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
commit3b1af5cc7ed2666ff18b718ce5d30fa5a2756674 (patch)
tree3bc4a40e0ee51ec27eabf917c537033c0c5b14d4 /spec/features
parent9bba14be3f2c211bf79e15769cd9b77bc73a13bc (diff)
Add latest changes from gitlab-org/gitlab@16-1-stable-eev16.1.0-rc42
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/admin/admin_appearance_spec.rb4
-rw-r--r--spec/features/admin/admin_groups_spec.rb2
-rw-r--r--spec/features/admin/admin_hook_logs_spec.rb2
-rw-r--r--spec/features/admin/admin_hooks_spec.rb2
-rw-r--r--spec/features/admin/admin_projects_spec.rb2
-rw-r--r--spec/features/admin/admin_runners_spec.rb6
-rw-r--r--spec/features/admin/admin_sees_background_migrations_spec.rb4
-rw-r--r--spec/features/admin/admin_sees_project_statistics_spec.rb4
-rw-r--r--spec/features/admin/admin_sees_projects_statistics_spec.rb4
-rw-r--r--spec/features/admin/admin_settings_spec.rb18
-rw-r--r--spec/features/admin/admin_system_info_spec.rb4
-rw-r--r--spec/features/boards/new_issue_spec.rb6
-rw-r--r--spec/features/boards/sidebar_assignee_spec.rb2
-rw-r--r--spec/features/broadcast_messages_spec.rb106
-rw-r--r--spec/features/calendar_spec.rb18
-rw-r--r--spec/features/clusters/cluster_health_dashboard_spec.rb126
-rw-r--r--spec/features/commit_spec.rb1
-rw-r--r--spec/features/commits/user_view_commits_spec.rb4
-rw-r--r--spec/features/commits_spec.rb8
-rw-r--r--spec/features/dashboard/archived_projects_spec.rb2
-rw-r--r--spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb2
-rw-r--r--spec/features/dashboard/group_spec.rb2
-rw-r--r--spec/features/dashboard/groups_list_spec.rb2
-rw-r--r--spec/features/dashboard/projects_spec.rb2
-rw-r--r--spec/features/dashboard/shortcuts_spec.rb6
-rw-r--r--spec/features/dashboard/user_filters_projects_spec.rb2
-rw-r--r--spec/features/explore/groups_list_spec.rb2
-rw-r--r--spec/features/explore/groups_spec.rb2
-rw-r--r--spec/features/file_uploads/attachment_spec.rb2
-rw-r--r--spec/features/file_uploads/group_import_spec.rb2
-rw-r--r--spec/features/file_uploads/project_import_spec.rb2
-rw-r--r--spec/features/file_uploads/user_avatar_spec.rb1
-rw-r--r--spec/features/groups/activity_spec.rb2
-rw-r--r--spec/features/groups/board_sidebar_spec.rb2
-rw-r--r--spec/features/groups/board_spec.rb4
-rw-r--r--spec/features/groups/empty_states_spec.rb2
-rw-r--r--spec/features/groups/group_page_with_external_authorization_service_spec.rb2
-rw-r--r--spec/features/groups/group_settings_spec.rb2
-rw-r--r--spec/features/groups/integrations/group_integrations_spec.rb2
-rw-r--r--spec/features/groups/issues_spec.rb2
-rw-r--r--spec/features/groups/members/filter_members_spec.rb2
-rw-r--r--spec/features/groups/members/leave_group_spec.rb2
-rw-r--r--spec/features/groups/members/list_members_spec.rb2
-rw-r--r--spec/features/groups/members/manage_groups_spec.rb6
-rw-r--r--spec/features/groups/members/manage_members_spec.rb6
-rw-r--r--spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb2
-rw-r--r--spec/features/groups/members/master_manages_access_requests_spec.rb2
-rw-r--r--spec/features/groups/members/request_access_spec.rb2
-rw-r--r--spec/features/groups/members/search_members_spec.rb2
-rw-r--r--spec/features/groups/members/sort_members_spec.rb2
-rw-r--r--spec/features/groups/members/tabs_spec.rb2
-rw-r--r--spec/features/groups/milestone_spec.rb2
-rw-r--r--spec/features/groups/milestones/milestone_showing_spec.rb18
-rw-r--r--spec/features/groups/new_group_page_spec.rb20
-rw-r--r--spec/features/groups/settings/group_badges_spec.rb2
-rw-r--r--spec/features/groups/settings/manage_applications_spec.rb2
-rw-r--r--spec/features/groups/settings/user_searches_in_settings_spec.rb2
-rw-r--r--spec/features/groups/share_lock_spec.rb2
-rw-r--r--spec/features/groups/show_spec.rb2
-rw-r--r--spec/features/groups/user_browse_projects_group_page_spec.rb2
-rw-r--r--spec/features/groups/user_sees_package_sidebar_spec.rb2
-rw-r--r--spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb2
-rw-r--r--spec/features/groups_spec.rb2
-rw-r--r--spec/features/ics/group_issues_spec.rb2
-rw-r--r--spec/features/ics/project_issues_spec.rb2
-rw-r--r--spec/features/incidents/user_views_incident_spec.rb1
-rw-r--r--spec/features/invites_spec.rb3
-rw-r--r--spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb19
-rw-r--r--spec/features/issues/filtered_search/dropdown_assignee_spec.rb2
-rw-r--r--spec/features/issues/issue_sidebar_spec.rb6
-rw-r--r--spec/features/issues/user_bulk_edits_issues_spec.rb8
-rw-r--r--spec/features/issues/user_creates_branch_and_merge_request_spec.rb2
-rw-r--r--spec/features/issues/user_sorts_issue_comments_spec.rb1
-rw-r--r--spec/features/markdown/markdown_spec.rb45
-rw-r--r--spec/features/markdown/metrics_spec.rb244
-rw-r--r--spec/features/merge_request/close_reopen_report_toggle_spec.rb46
-rw-r--r--spec/features/merge_request/merge_request_discussion_lock_spec.rb4
-rw-r--r--spec/features/merge_request/user_comments_on_merge_request_spec.rb3
-rw-r--r--spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb62
-rw-r--r--spec/features/merge_request/user_creates_discussion_on_diff_file_spec.rb28
-rw-r--r--spec/features/merge_request/user_edits_assignees_sidebar_spec.rb51
-rw-r--r--spec/features/merge_request/user_manages_subscription_spec.rb6
-rw-r--r--spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb8
-rw-r--r--spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb4
-rw-r--r--spec/features/merge_request/user_posts_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_deployment_widget_spec.rb52
-rw-r--r--spec/features/merge_request/user_sees_discussions_navigation_spec.rb39
-rw-r--r--spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb62
-rw-r--r--spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb14
-rw-r--r--spec/features/merge_request/user_sees_pipelines_spec.rb14
-rw-r--r--spec/features/merge_requests/user_mass_updates_spec.rb5
-rw-r--r--spec/features/monitor_sidebar_link_spec.rb6
-rw-r--r--spec/features/nav/new_nav_callout_spec.rb64
-rw-r--r--spec/features/nav/new_nav_toggle_spec.rb82
-rw-r--r--spec/features/nav/pinned_nav_items_spec.rb8
-rw-r--r--spec/features/participants_autocomplete_spec.rb25
-rw-r--r--spec/features/profiles/password_spec.rb5
-rw-r--r--spec/features/profiles/two_factor_auths_spec.rb34
-rw-r--r--spec/features/profiles/user_edit_profile_spec.rb9
-rw-r--r--spec/features/profiles/user_search_settings_spec.rb1
-rw-r--r--spec/features/profiles/user_visits_profile_spec.rb1
-rw-r--r--spec/features/project_group_variables_spec.rb100
-rw-r--r--spec/features/projects/active_tabs_spec.rb2
-rw-r--r--spec/features/projects/activity/rss_spec.rb2
-rw-r--r--spec/features/projects/activity/user_sees_activity_spec.rb2
-rw-r--r--spec/features/projects/activity/user_sees_private_activity_spec.rb2
-rw-r--r--spec/features/projects/artifacts/user_browses_artifacts_spec.rb4
-rw-r--r--spec/features/projects/blobs/blame_spec.rb2
-rw-r--r--spec/features/projects/blobs/blob_line_permalink_updater_spec.rb2
-rw-r--r--spec/features/projects/blobs/blob_show_spec.rb62
-rw-r--r--spec/features/projects/blobs/edit_spec.rb55
-rw-r--r--spec/features/projects/blobs/shortcuts_blob_spec.rb2
-rw-r--r--spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb2
-rw-r--r--spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb9
-rw-r--r--spec/features/projects/branches/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/branches/new_branch_ref_dropdown_spec.rb2
-rw-r--r--spec/features/projects/branches/user_creates_branch_spec.rb2
-rw-r--r--spec/features/projects/branches/user_deletes_branch_spec.rb5
-rw-r--r--spec/features/projects/branches/user_views_branches_spec.rb45
-rw-r--r--spec/features/projects/branches_spec.rb22
-rw-r--r--spec/features/projects/classification_label_on_project_pages_spec.rb2
-rw-r--r--spec/features/projects/cluster_agents_spec.rb2
-rw-r--r--spec/features/projects/clusters_spec.rb2
-rw-r--r--spec/features/projects/commit/user_sees_pipelines_tab_spec.rb2
-rw-r--r--spec/features/projects/compare_spec.rb3
-rw-r--r--spec/features/projects/container_registry_spec.rb2
-rw-r--r--spec/features/projects/deploy_keys_spec.rb2
-rw-r--r--spec/features/projects/environments/environment_metrics_spec.rb86
-rw-r--r--spec/features/projects/environments/environment_spec.rb7
-rw-r--r--spec/features/projects/environments/environments_spec.rb2
-rw-r--r--spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb2
-rw-r--r--spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb2
-rw-r--r--spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb2
-rw-r--r--spec/features/projects/features_visibility_spec.rb2
-rw-r--r--spec/features/projects/files/dockerfile_dropdown_spec.rb2
-rw-r--r--spec/features/projects/files/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/files/edit_file_soft_wrap_spec.rb2
-rw-r--r--spec/features/projects/files/editing_a_file_spec.rb2
-rw-r--r--spec/features/projects/files/files_sort_submodules_with_folders_spec.rb2
-rw-r--r--spec/features/projects/files/find_file_keyboard_spec.rb2
-rw-r--r--spec/features/projects/files/gitignore_dropdown_spec.rb2
-rw-r--r--spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb2
-rw-r--r--spec/features/projects/files/project_owner_creates_license_file_spec.rb2
-rw-r--r--spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb2
-rw-r--r--spec/features/projects/files/template_selector_menu_spec.rb2
-rw-r--r--spec/features/projects/files/undo_template_spec.rb2
-rw-r--r--spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb2
-rw-r--r--spec/features/projects/files/user_browses_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_browses_lfs_files_spec.rb6
-rw-r--r--spec/features/projects/files/user_creates_directory_spec.rb2
-rw-r--r--spec/features/projects/files/user_creates_files_spec.rb6
-rw-r--r--spec/features/projects/files/user_deletes_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_edits_files_spec.rb34
-rw-r--r--spec/features/projects/files/user_find_file_spec.rb2
-rw-r--r--spec/features/projects/files/user_reads_pipeline_status_spec.rb2
-rw-r--r--spec/features/projects/files/user_replaces_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_searches_for_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_uploads_files_spec.rb2
-rw-r--r--spec/features/projects/fork_spec.rb2
-rw-r--r--spec/features/projects/forks/fork_list_spec.rb2
-rw-r--r--spec/features/projects/gfm_autocomplete_load_spec.rb2
-rw-r--r--spec/features/projects/graph_spec.rb2
-rw-r--r--spec/features/projects/hook_logs/user_reads_log_spec.rb2
-rw-r--r--spec/features/projects/infrastructure_registry_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_issue_tracker_spec.rb1
-rw-r--r--spec/features/projects/integrations/user_activates_jira_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_uses_inherited_settings_spec.rb17
-rw-r--r--spec/features/projects/issuable_templates_spec.rb2
-rw-r--r--spec/features/projects/jobs/permissions_spec.rb2
-rw-r--r--spec/features/projects/jobs/user_browses_job_spec.rb2
-rw-r--r--spec/features/projects/jobs/user_browses_jobs_spec.rb10
-rw-r--r--spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb2
-rw-r--r--spec/features/projects/jobs_spec.rb16
-rw-r--r--spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb2
-rw-r--r--spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb2
-rw-r--r--spec/features/projects/members/group_members_spec.rb2
-rw-r--r--spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb2
-rw-r--r--spec/features/projects/members/groups_with_access_list_spec.rb6
-rw-r--r--spec/features/projects/members/manage_groups_spec.rb2
-rw-r--r--spec/features/projects/members/manage_members_spec.rb11
-rw-r--r--spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb2
-rw-r--r--spec/features/projects/members/master_manages_access_requests_spec.rb2
-rw-r--r--spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb2
-rw-r--r--spec/features/projects/members/member_leaves_project_spec.rb2
-rw-r--r--spec/features/projects/members/owner_cannot_leave_project_spec.rb2
-rw-r--r--spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb2
-rw-r--r--spec/features/projects/members/sorting_spec.rb2
-rw-r--r--spec/features/projects/members/tabs_spec.rb2
-rw-r--r--spec/features/projects/members/user_requests_access_spec.rb2
-rw-r--r--spec/features/projects/merge_request_button_spec.rb13
-rw-r--r--spec/features/projects/milestones/milestone_showing_spec.rb18
-rw-r--r--spec/features/projects/navbar_spec.rb3
-rw-r--r--spec/features/projects/network_graph_spec.rb2
-rw-r--r--spec/features/projects/new_project_from_template_spec.rb2
-rw-r--r--spec/features/projects/new_project_spec.rb3
-rw-r--r--spec/features/projects/package_files_spec.rb2
-rw-r--r--spec/features/projects/packages_spec.rb2
-rw-r--r--spec/features/projects/pipeline_schedules_spec.rb6
-rw-r--r--spec/features/projects/pipelines/pipeline_spec.rb3
-rw-r--r--spec/features/projects/pipelines/pipelines_spec.rb40
-rw-r--r--spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb2
-rw-r--r--spec/features/projects/releases/user_views_releases_spec.rb15
-rw-r--r--spec/features/projects/remote_mirror_spec.rb2
-rw-r--r--spec/features/projects/settings/branch_names_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/branch_rules_settings_spec.rb11
-rw-r--r--spec/features/projects/settings/external_authorization_service_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/forked_project_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/lfs_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/merge_requests_settings_spec.rb32
-rw-r--r--spec/features/projects/settings/monitor_settings_spec.rb32
-rw-r--r--spec/features/projects/settings/packages_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/pipelines_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/project_badges_spec.rb2
-rw-r--r--spec/features/projects/settings/project_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb2
-rw-r--r--spec/features/projects/settings/registry_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/repository_settings_spec.rb11
-rw-r--r--spec/features/projects/settings/secure_files_spec.rb13
-rw-r--r--spec/features/projects/settings/service_desk_setting_spec.rb2
-rw-r--r--spec/features/projects/settings/slack_application_spec.rb49
-rw-r--r--spec/features/projects/settings/user_archives_project_spec.rb2
-rw-r--r--spec/features/projects/settings/user_changes_avatar_spec.rb2
-rw-r--r--spec/features/projects/settings/user_changes_default_branch_spec.rb2
-rw-r--r--spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb2
-rw-r--r--spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/user_manages_project_members_spec.rb2
-rw-r--r--spec/features/projects/settings/user_renames_a_project_spec.rb2
-rw-r--r--spec/features/projects/settings/user_searches_in_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb2
-rw-r--r--spec/features/projects/settings/user_tags_project_spec.rb2
-rw-r--r--spec/features/projects/settings/user_transfers_a_project_spec.rb2
-rw-r--r--spec/features/projects/settings/visibility_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/webhooks_settings_spec.rb2
-rw-r--r--spec/features/projects/show/clone_button_spec.rb2
-rw-r--r--spec/features/projects/show/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/show/no_password_spec.rb2
-rw-r--r--spec/features/projects/show/redirects_spec.rb2
-rw-r--r--spec/features/projects/show/rss_spec.rb2
-rw-r--r--spec/features/projects/show/schema_markup_spec.rb2
-rw-r--r--spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb2
-rw-r--r--spec/features/projects/show/user_interacts_with_stars_spec.rb2
-rw-r--r--spec/features/projects/show/user_manages_notifications_spec.rb2
-rw-r--r--spec/features/projects/show/user_sees_collaboration_links_spec.rb9
-rw-r--r--spec/features/projects/show/user_sees_deletion_failure_message_spec.rb2
-rw-r--r--spec/features/projects/show/user_sees_git_instructions_spec.rb6
-rw-r--r--spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb2
-rw-r--r--spec/features/projects/show/user_sees_readme_spec.rb2
-rw-r--r--spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb2
-rw-r--r--spec/features/projects/show/user_uploads_files_spec.rb2
-rw-r--r--spec/features/projects/sourcegraph_csp_spec.rb2
-rw-r--r--spec/features/projects/sub_group_issuables_spec.rb2
-rw-r--r--spec/features/projects/terraform_spec.rb2
-rw-r--r--spec/features/projects/tree/rss_spec.rb2
-rw-r--r--spec/features/projects/tree/upload_file_spec.rb2
-rw-r--r--spec/features/projects/user_changes_project_visibility_spec.rb2
-rw-r--r--spec/features/projects/user_creates_project_spec.rb2
-rw-r--r--spec/features/projects/user_sees_sidebar_spec.rb2
-rw-r--r--spec/features/projects/user_sees_user_popover_spec.rb2
-rw-r--r--spec/features/projects/user_sorts_projects_spec.rb2
-rw-r--r--spec/features/projects/user_uses_shortcuts_spec.rb13
-rw-r--r--spec/features/projects/user_views_empty_project_spec.rb8
-rw-r--r--spec/features/projects/view_on_env_spec.rb2
-rw-r--r--spec/features/projects/work_items/work_item_spec.rb10
-rw-r--r--spec/features/projects_spec.rb2
-rw-r--r--spec/features/protected_branches_spec.rb6
-rw-r--r--spec/features/registrations/oauth_registration_spec.rb (renamed from spec/features/oauth_registration_spec.rb)0
-rw-r--r--spec/features/registrations/registration_spec.rb21
-rw-r--r--spec/features/runners_spec.rb5
-rw-r--r--spec/features/snippets/explore_spec.rb20
-rw-r--r--spec/features/tags/developer_creates_tag_spec.rb24
-rw-r--r--spec/features/topic_show_spec.rb2
-rw-r--r--spec/features/unsubscribe_links_spec.rb2
-rw-r--r--spec/features/uploads/user_uploads_avatar_to_profile_spec.rb1
-rw-r--r--spec/features/users/password_spec.rb40
-rw-r--r--spec/features/users/signup_spec.rb116
-rw-r--r--spec/features/users/user_browses_projects_on_user_page_spec.rb4
276 files changed, 1448 insertions, 1269 deletions
diff --git a/spec/features/admin/admin_appearance_spec.rb b/spec/features/admin/admin_appearance_spec.rb
index db0ae79c9c4..71c904b3a19 100644
--- a/spec/features/admin/admin_appearance_spec.rb
+++ b/spec/features/admin/admin_appearance_spec.rb
@@ -6,6 +6,10 @@ RSpec.describe 'Admin Appearance', feature_category: :shared do
let!(:appearance) { create(:appearance) }
let(:admin) { create(:admin) }
+ before do
+ stub_feature_flags(edit_user_profile_vue: false)
+ end
+
flag_values = [true, false]
flag_values.each do |val|
context "with #{val}" do
diff --git a/spec/features/admin/admin_groups_spec.rb b/spec/features/admin/admin_groups_spec.rb
index 34fe98d22bd..1e3dbd7fea4 100644
--- a/spec/features/admin/admin_groups_spec.rb
+++ b/spec/features/admin/admin_groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Groups', feature_category: :subgroups do
+RSpec.describe 'Admin Groups', feature_category: :groups_and_projects do
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/admin/admin_hook_logs_spec.rb b/spec/features/admin/admin_hook_logs_spec.rb
index 34208cca113..0a537e65b99 100644
--- a/spec/features/admin/admin_hook_logs_spec.rb
+++ b/spec/features/admin/admin_hook_logs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin::HookLogs', feature_category: :integrations do
+RSpec.describe 'Admin::HookLogs', feature_category: :webhooks do
let_it_be(:system_hook) { create(:system_hook) }
let_it_be(:hook_log) { create(:web_hook_log, web_hook: system_hook, internal_error_message: 'some error') }
let_it_be(:admin) { create(:admin) }
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb
index a8aa2680b55..ee8f94d6658 100644
--- a/spec/features/admin/admin_hooks_spec.rb
+++ b/spec/features/admin/admin_hooks_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin::Hooks', feature_category: :integrations do
+RSpec.describe 'Admin::Hooks', feature_category: :webhooks do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:admin) }
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index ac2e9de7aee..3454b7af962 100644
--- a/spec/features/admin/admin_projects_spec.rb
+++ b/spec/features/admin/admin_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin::Projects", feature_category: :projects do
+RSpec.describe "Admin::Projects", feature_category: :groups_and_projects do
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/admin/admin_runners_spec.rb b/spec/features/admin/admin_runners_spec.rb
index 582535790bd..b81703f728b 100644
--- a/spec/features/admin/admin_runners_spec.rb
+++ b/spec/features/admin/admin_runners_spec.rb
@@ -565,7 +565,7 @@ RSpec.describe "Admin Runners", feature_category: :runner_fleet do
click_on 'Delete runner'
within_modal do
- click_on 'Delete runner'
+ click_on 'Permanently delete runner'
end
end
@@ -603,7 +603,9 @@ RSpec.describe "Admin Runners", feature_category: :runner_fleet do
describe 'runner header', :js do
it 'contains the runner status, type and id' do
- expect(page).to have_content("#{s_('Runners|Never contacted')} Project Runner ##{project_runner.id} created")
+ expect(page).to have_content(
+ "##{project_runner.id} (#{project_runner.short_sha}) #{s_('Runners|Never contacted')} Project created"
+ )
end
end
diff --git a/spec/features/admin/admin_sees_background_migrations_spec.rb b/spec/features/admin/admin_sees_background_migrations_spec.rb
index 77266e65e4c..7d4d3deb6d8 100644
--- a/spec/features/admin/admin_sees_background_migrations_spec.rb
+++ b/spec/features/admin/admin_sees_background_migrations_spec.rb
@@ -200,7 +200,7 @@ RSpec.describe "Admin > Admin sees background migrations", feature_category: :da
before do
skip_if_multiple_databases_are_setup
- allow(Gitlab::Database).to receive(:db_config_names).and_return(['main'])
+ allow(Gitlab::Database).to receive(:db_config_names).with(with_schema: :gitlab_shared).and_return(['main'])
end
it 'does not render the database listbox' do
@@ -214,7 +214,7 @@ RSpec.describe "Admin > Admin sees background migrations", feature_category: :da
before do
skip_if_multiple_databases_not_setup(:ci)
- allow(Gitlab::Database).to receive(:db_config_names).and_return(%w[main ci])
+ allow(Gitlab::Database).to receive(:db_config_names).with(with_schema: :gitlab_shared).and_return(%w[main ci])
end
it 'renders the database listbox' do
diff --git a/spec/features/admin/admin_sees_project_statistics_spec.rb b/spec/features/admin/admin_sees_project_statistics_spec.rb
index d3d0625ac43..d977735daf8 100644
--- a/spec/features/admin/admin_sees_project_statistics_spec.rb
+++ b/spec/features/admin/admin_sees_project_statistics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin > Admin sees project statistics", feature_category: :projects do
+RSpec.describe "Admin > Admin sees project statistics", feature_category: :groups_and_projects do
let(:current_user) { create(:admin) }
before do
@@ -16,7 +16,7 @@ RSpec.describe "Admin > Admin sees project statistics", feature_category: :proje
let(:project) { create(:project, :repository) }
it "shows project statistics" do
- expect(page).to have_content("Storage: 0 Bytes (Repository: 0 Bytes / Wikis: 0 Bytes / Build Artifacts: 0 Bytes / Pipeline Artifacts: 0 Bytes / LFS: 0 Bytes / Snippets: 0 Bytes / Packages: 0 Bytes / Uploads: 0 Bytes)")
+ expect(page).to have_content("Storage: 0 B (Repository: 0 B / Wikis: 0 B / Build Artifacts: 0 B / Pipeline Artifacts: 0 B / LFS: 0 B / Snippets: 0 B / Packages: 0 B / Uploads: 0 B)")
end
end
diff --git a/spec/features/admin/admin_sees_projects_statistics_spec.rb b/spec/features/admin/admin_sees_projects_statistics_spec.rb
index 82361a985ae..3363a67ea90 100644
--- a/spec/features/admin/admin_sees_projects_statistics_spec.rb
+++ b/spec/features/admin/admin_sees_projects_statistics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin > Admin sees projects statistics", feature_category: :projects do
+RSpec.describe "Admin > Admin sees projects statistics", feature_category: :groups_and_projects do
let(:current_user) { create(:admin) }
before do
@@ -16,6 +16,6 @@ RSpec.describe "Admin > Admin sees projects statistics", feature_category: :proj
end
it "shows project statistics for projects that have them" do
- expect(page.all('.stats').map(&:text)).to contain_exactly("0 Bytes", "Unknown")
+ expect(page.all('.stats').map(&:text)).to contain_exactly("0 B", "Unknown")
end
end
diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb
index 1f43caf37e7..3e08d2277c1 100644
--- a/spec/features/admin/admin_settings_spec.rb
+++ b/spec/features/admin/admin_settings_spec.rb
@@ -116,7 +116,7 @@ RSpec.describe 'Admin updates settings', feature_category: :shared do
it 'change Maximum export size' do
page.within(find('[data-testid="account-limit"]')) do
- fill_in 'Maximum export size (MB)', with: 25
+ fill_in 'Maximum export size (MiB)', with: 25
click_button 'Save changes'
end
@@ -126,7 +126,7 @@ RSpec.describe 'Admin updates settings', feature_category: :shared do
it 'change Maximum import size' do
page.within(find('[data-testid="account-limit"]')) do
- fill_in 'Maximum import size (MB)', with: 15
+ fill_in 'Maximum import size (MiB)', with: 15
click_button 'Save changes'
end
@@ -905,7 +905,7 @@ RSpec.describe 'Admin updates settings', feature_category: :shared do
it 'change Pages settings' do
page.within('.as-pages') do
- fill_in 'Maximum size of pages (MB)', with: 15
+ fill_in 'Maximum size of pages (MiB)', with: 15
check 'Require users to prove ownership of custom domains'
click_button 'Save changes'
end
@@ -977,14 +977,24 @@ RSpec.describe 'Admin updates settings', feature_category: :shared do
end
end
- context 'Service usage data page' do
+ context 'Service usage data page', :with_license do
before do
stub_usage_data_connections
stub_database_flavor_check
end
context 'when service data cached', :use_clean_rails_memory_store_caching do
+ let(:usage_data) { { uuid: "1111", hostname: "localhost", counts: { issue: 0 } }.deep_stringify_keys }
+
before do
+ # We are mocking Gitlab::Usage::ServicePingReport because this dataset generation
+ # takes a very long time, and is not what we're testing in this context.
+ #
+ # See https://gitlab.com/gitlab-org/gitlab/-/issues/414929
+ allow(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ allow(Gitlab::Usage::ServicePingReport).to receive(:with_instrumentation_classes)
+ .with(usage_data, :with_value).and_return(usage_data)
+
visit usage_data_admin_application_settings_path
visit service_usage_data_admin_application_settings_path
end
diff --git a/spec/features/admin/admin_system_info_spec.rb b/spec/features/admin/admin_system_info_spec.rb
index 21a001f12c3..71a0b829932 100644
--- a/spec/features/admin/admin_system_info_spec.rb
+++ b/spec/features/admin/admin_system_info_spec.rb
@@ -22,7 +22,7 @@ RSpec.describe 'Admin System Info', feature_category: :shared do
it 'shows system info page' do
expect(page).to have_content 'CPU 2 cores'
- expect(page).to have_content 'Memory Usage 4 GB / 16 GB'
+ expect(page).to have_content 'Memory Usage 4 GiB / 16 GiB'
expect(page).to have_content 'Disk Usage'
expect(page).to have_content 'System started'
end
@@ -37,7 +37,7 @@ RSpec.describe 'Admin System Info', feature_category: :shared do
it 'shows system info page with no CPU info' do
expect(page).to have_content 'CPU Unable to collect CPU info'
- expect(page).to have_content 'Memory Usage 4 GB / 16 GB'
+ expect(page).to have_content 'Memory Usage 4 GiB / 16 GiB'
expect(page).to have_content 'Disk Usage'
expect(page).to have_content 'System started'
end
diff --git a/spec/features/boards/new_issue_spec.rb b/spec/features/boards/new_issue_spec.rb
index 6753f0ea009..1fcea45c7ae 100644
--- a/spec/features/boards/new_issue_spec.rb
+++ b/spec/features/boards/new_issue_spec.rb
@@ -245,15 +245,15 @@ RSpec.describe 'Issue Boards new issue', :js, feature_category: :team_planning d
end
it 'lists a project which is a direct descendant of the top-level group' do
- expect(project_select_dropdown).to have_button("root project")
+ expect(project_select_dropdown).to have_selector("li", text: "root project")
end
it 'lists a project that belongs to a subgroup' do
- expect(project_select_dropdown).to have_button("sub project1")
+ expect(project_select_dropdown).to have_selector("li", text: "sub project1")
end
it "does not list projects to which user doesn't have access" do
- expect(project_select_dropdown).not_to have_button("sub project2")
+ expect(project_select_dropdown).not_to have_selector("li", text: "sub project2")
end
end
end
diff --git a/spec/features/boards/sidebar_assignee_spec.rb b/spec/features/boards/sidebar_assignee_spec.rb
index e3de594f856..a912ea28ddc 100644
--- a/spec/features/boards/sidebar_assignee_spec.rb
+++ b/spec/features/boards/sidebar_assignee_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project issue boards sidebar assignee', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/332230',
+RSpec.describe 'Project issue boards sidebar assignee', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/332078',
feature_category: :team_planning do
include BoardHelpers
diff --git a/spec/features/broadcast_messages_spec.rb b/spec/features/broadcast_messages_spec.rb
index 2fad15c8a1f..2e0f4e3b83b 100644
--- a/spec/features/broadcast_messages_spec.rb
+++ b/spec/features/broadcast_messages_spec.rb
@@ -4,10 +4,11 @@ require 'spec_helper'
RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
let_it_be(:user) { create(:user) }
+ let(:path) { explore_projects_path }
shared_examples 'a Broadcast Messages' do |type|
it 'shows broadcast message' do
- visit explore_projects_path
+ visit path
expect(page).to have_content 'SampleMessage'
end
@@ -15,7 +16,7 @@ RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
it 'renders styled links' do
create(:broadcast_message, type, message: "<a href='gitlab.com' style='color: purple'>click me</a>")
- visit explore_projects_path
+ visit path
expected_html = "<p><a href=\"gitlab.com\" style=\"color: purple\">click me</a></p>"
expect(page.body).to include(expected_html)
@@ -23,26 +24,28 @@ RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
end
shared_examples 'a dismissible Broadcast Messages' do
- it 'hides broadcast message after dismiss', :js,
- quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/390900' do
- visit explore_projects_path
+ it 'hides broadcast message after dismiss', :js do
+ visit path
- find('.js-dismiss-current-broadcast-notification').click
+ expect_to_be_on_explore_projects_page
- expect(page).not_to have_content 'SampleMessage'
+ find('body.page-initialised .js-dismiss-current-broadcast-notification').click
+
+ expect_message_dismissed
end
- it 'broadcast message is still hidden after refresh', :js,
- quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/391406' do
- visit explore_projects_path
+ it 'broadcast message is still hidden after refresh', :js do
+ visit path
+
+ expect_to_be_on_explore_projects_page
- find('.js-dismiss-current-broadcast-notification').click
+ find('body.page-initialised .js-dismiss-current-broadcast-notification').click
- wait_for_cookie_set("hide_broadcast_message_#{broadcast_message.id}")
+ expect_message_dismissed
- visit explore_projects_path
+ visit path
- expect(page).not_to have_content 'SampleMessage'
+ expect_message_dismissed
end
end
@@ -52,7 +55,7 @@ RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
it_behaves_like 'a Broadcast Messages'
it 'is not dismissible' do
- visit explore_projects_path
+ visit path
expect(page).not_to have_selector('.js-dismiss-current-broadcast-notification')
end
@@ -60,9 +63,9 @@ RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
it 'does not replace placeholders' do
create(:broadcast_message, message: 'Hi {{name}}')
- sign_in(user)
+ gitlab_sign_in(user)
- visit explore_projects_path
+ visit path
expect(page).to have_content 'Hi {{name}}'
end
@@ -86,11 +89,76 @@ RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
it 'replaces placeholders' do
create(:broadcast_message, :notification, message: 'Hi {{name}}')
- sign_in(user)
+ gitlab_sign_in(user)
- visit explore_projects_path
+ visit path
expect(page).to have_content "Hi #{user.name}"
end
end
+
+ context 'with GitLab revision changes', :js, :use_clean_rails_redis_caching do
+ it 'properly shows effects of delete from any revision' do
+ text = 'my_broadcast_message'
+ message = create(:broadcast_message, broadcast_type: :banner, message: text)
+ new_strategy_value = { revision: 'abc123', version: '_version_' }
+
+ visit path
+
+ expect_broadcast_message(text)
+
+ # seed the other cache
+ original_strategy_value = Gitlab::Cache::JsonCache::STRATEGY_KEY_COMPONENTS
+ stub_const('Gitlab::Cache::JsonCaches::JsonKeyed::STRATEGY_KEY_COMPONENTS', new_strategy_value)
+
+ page.refresh
+
+ expect_broadcast_message(text)
+
+ # delete on original cache
+ stub_const('Gitlab::Cache::JsonCaches::JsonKeyed::STRATEGY_KEY_COMPONENTS', original_strategy_value)
+ admin = create(:admin)
+ sign_in(admin)
+ gitlab_enable_admin_mode_sign_in(admin)
+
+ visit admin_broadcast_messages_path
+
+ page.within('[data-testid="message-row"]', match: :first) do
+ find("[data-testid='delete-message-#{message.id}']").click
+ end
+
+ visit path
+
+ expect_no_broadcast_message
+
+ # other revision of GitLab does gets cache destroyed
+ stub_const('Gitlab::Cache::JsonCaches::JsonKeyed::STRATEGY_KEY_COMPONENTS', new_strategy_value)
+
+ page.refresh
+
+ expect_no_broadcast_message
+ end
+ end
+
+ def expect_broadcast_message(text)
+ page.within('[data-testid="banner-broadcast-message"]') do
+ expect(page).to have_content text
+ end
+ end
+
+ def expect_no_broadcast_message
+ expect_to_be_on_explore_projects_page
+
+ expect(page).not_to have_selector('[data-testid="banner-broadcast-message"]')
+ end
+
+ def expect_to_be_on_explore_projects_page
+ page.within('[data-testid="explore-projects-title"]') do
+ expect(page).to have_content 'Explore projects'
+ end
+ end
+
+ def expect_message_dismissed
+ expect(page).not_to have_content 'SampleMessage'
+ end
end
diff --git a/spec/features/calendar_spec.rb b/spec/features/calendar_spec.rb
index 67baed5dc91..8ad27b65f11 100644
--- a/spec/features/calendar_spec.rb
+++ b/spec/features/calendar_spec.rb
@@ -155,14 +155,12 @@ RSpec.describe 'Contributions Calendar', :js, feature_category: :user_profile do
Issues::CreateService.new(
container: contributed_project,
current_user: user,
- params: issue_params,
- spam_params: nil
+ params: issue_params
).execute
WorkItems::CreateService.new(
container: contributed_project,
current_user: user,
- params: { title: 'new task' },
- spam_params: nil
+ params: { title: 'new task' }
).execute
end
@@ -204,8 +202,7 @@ RSpec.describe 'Contributions Calendar', :js, feature_category: :user_profile do
Issues::CreateService.new(
container: contributed_project,
current_user: user,
- params: issue_params,
- spam_params: nil
+ params: issue_params
).execute
end
end
@@ -301,14 +298,12 @@ RSpec.describe 'Contributions Calendar', :js, feature_category: :user_profile do
Issues::CreateService.new(
container: contributed_project,
current_user: user,
- params: issue_params,
- spam_params: nil
+ params: issue_params
).execute
WorkItems::CreateService.new(
container: contributed_project,
current_user: user,
- params: { title: 'new task' },
- spam_params: nil
+ params: { title: 'new task' }
).execute
end
@@ -339,8 +334,7 @@ RSpec.describe 'Contributions Calendar', :js, feature_category: :user_profile do
Issues::CreateService.new(
container: contributed_project,
current_user: user,
- params: issue_params,
- spam_params: nil
+ params: issue_params
).execute
end
end
diff --git a/spec/features/clusters/cluster_health_dashboard_spec.rb b/spec/features/clusters/cluster_health_dashboard_spec.rb
deleted file mode 100644
index e932f8c6b98..00000000000
--- a/spec/features/clusters/cluster_health_dashboard_spec.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Cluster Health board', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline,
-feature_category: :deployment_management do
- include KubernetesHelpers
- include PrometheusHelpers
-
- let_it_be(:current_user) { create(:user) }
- let_it_be(:clusterable) { create(:project) }
- let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [clusterable]) }
- let_it_be(:cluster_path) { project_cluster_path(clusterable, cluster) }
-
- before do
- stub_feature_flags(remove_monitor_metrics: false)
-
- clusterable.add_maintainer(current_user)
-
- sign_in(current_user)
- end
-
- it 'shows cluster board section within the page' do
- visit cluster_path
-
- expect(page).to have_text('Health')
-
- click_link 'Health'
-
- expect(page).to have_css('.cluster-health-graphs')
- end
-
- context 'feature remove_monitor_metrics enabled' do
- before do
- stub_feature_flags(remove_monitor_metrics: true)
- end
-
- it 'does not show the cluster health tab' do
- visit cluster_path
-
- expect(page).not_to have_text('Health')
- end
-
- it 'does not show the cluster health section' do
- visit project_cluster_path(clusterable, cluster, { tab: 'health' })
-
- expect(page).not_to have_text('you must first enable Prometheus in the Integrations tab')
- end
- end
-
- context 'no prometheus available' do
- it 'shows enable Prometheus message' do
- visit cluster_path
-
- click_link 'Health'
-
- expect(page).to have_text('you must first enable Prometheus in the Integrations tab')
- end
- end
-
- context 'when there is cluster with enabled prometheus' do
- before do
- create(:clusters_integrations_prometheus, enabled: true, cluster: cluster)
- stub_kubeclient_discover(cluster.platform.api_url)
- end
-
- context 'waiting for data' do
- before do
- stub_empty_response
- end
-
- it 'shows container and waiting for data message' do
- visit cluster_path
-
- click_link 'Health'
-
- wait_for_requests
-
- expect(page).to have_css('.prometheus-graphs')
- expect(page).to have_text('Waiting for performance data')
- end
- end
-
- context 'connected, prometheus returns data' do
- before do
- stub_connected
-
- visit cluster_path
-
- click_link 'Health'
-
- wait_for_requests
- end
-
- it 'renders charts' do
- expect(page).to have_css('.prometheus-graphs')
- expect(page).to have_css('.prometheus-graph')
- expect(page).to have_css('.prometheus-graph-title')
- expect(page).to have_css('[_echarts_instance_]')
- expect(page).to have_css('.prometheus-graph', count: 2)
- expect(page).to have_content('Avg')
- end
-
- it 'focuses the single panel on toggle' do
- click_button('More actions', match: :first)
- click_button('Expand panel')
-
- expect(page).to have_css('.prometheus-graph', count: 1)
-
- click_button('Collapse panel')
-
- expect(page).to have_css('.prometheus-graph', count: 2)
- end
- end
-
- def stub_empty_response
- stub_prometheus_request(/prometheus-prometheus-server/, status: 204, body: {})
- stub_prometheus_request(%r{prometheus/api/v1}, status: 204, body: {})
- end
-
- def stub_connected
- stub_prometheus_request(/prometheus-prometheus-server/, body: prometheus_values_body)
- stub_prometheus_request(%r{prometheus/api/v1}, body: prometheus_values_body)
- end
- end
-end
diff --git a/spec/features/commit_spec.rb b/spec/features/commit_spec.rb
index dd96b763e55..61792ea5a58 100644
--- a/spec/features/commit_spec.rb
+++ b/spec/features/commit_spec.rb
@@ -70,7 +70,6 @@ RSpec.describe 'Commit', feature_category: :source_code_management do
context "when super sidebar is enabled" do
before do
user.update!(use_new_navigation: true)
- stub_feature_flags(super_sidebar_nav: true)
end
it_behaves_like "single commit view"
diff --git a/spec/features/commits/user_view_commits_spec.rb b/spec/features/commits/user_view_commits_spec.rb
index b58d7cf3741..e13bd90ff04 100644
--- a/spec/features/commits/user_view_commits_spec.rb
+++ b/spec/features/commits/user_view_commits_spec.rb
@@ -7,10 +7,6 @@ RSpec.describe 'Commit > User view commits', feature_category: :source_code_mana
let_it_be(:group) { create(:group, :public) }
shared_examples 'can view commits' do
- it 'displays the correct number of commits per day in the header' do
- expect(first('.js-commit-header').find('.commits-count').text).to eq('1 commit')
- end
-
it 'lists the correct number of commits' do
expect(page).to have_selector('#commits-list > li:nth-child(2) > ul', count: 1)
end
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index c38ae0c2b0d..fd09a7f7343 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe 'Commits', feature_category: :source_code_management do
describe 'CI' do
before do
+ stub_feature_flags(pipeline_details_header_vue: false)
sign_in(user)
stub_ci_pipeline_to_return_yaml_file
end
@@ -186,6 +187,13 @@ RSpec.describe 'Commits', feature_category: :source_code_management do
visit project_commits_path(project, branch_name)
end
+ it 'includes a date on which the commits were authored' do
+ commits = project.repository.commits(branch_name, limit: 40)
+ commits.chunk { |c| c.committed_date.in_time_zone.to_date }.each do |day, _daily_commits|
+ expect(page).to have_content(day.strftime("%b %d, %Y"))
+ end
+ end
+
it 'includes the committed_date for each commit' do
commits = project.repository.commits(branch_name, limit: 40)
diff --git a/spec/features/dashboard/archived_projects_spec.rb b/spec/features/dashboard/archived_projects_spec.rb
index d3992d34506..b56f942d906 100644
--- a/spec/features/dashboard/archived_projects_spec.rb
+++ b/spec/features/dashboard/archived_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Archived Project', feature_category: :projects do
+RSpec.describe 'Dashboard Archived Project', feature_category: :groups_and_projects do
let(:user) { create :user }
let(:project) { create :project }
let(:archived_project) { create(:project, :archived) }
diff --git a/spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb b/spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb
index 3040c97a16f..c1849cbee83 100644
--- a/spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb
+++ b/spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'The group dashboard', :js, feature_category: :subgroups do
+RSpec.describe 'The group dashboard', :js, feature_category: :groups_and_projects do
include ExternalAuthorizationServiceHelpers
include Features::TopNavSpecHelpers
diff --git a/spec/features/dashboard/group_spec.rb b/spec/features/dashboard/group_spec.rb
index f363007f0d7..ea600758607 100644
--- a/spec/features/dashboard/group_spec.rb
+++ b/spec/features/dashboard/group_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Group', feature_category: :subgroups do
+RSpec.describe 'Dashboard Group', feature_category: :groups_and_projects do
before do
sign_in(create(:user))
end
diff --git a/spec/features/dashboard/groups_list_spec.rb b/spec/features/dashboard/groups_list_spec.rb
index 7112b30957a..b077b554773 100644
--- a/spec/features/dashboard/groups_list_spec.rb
+++ b/spec/features/dashboard/groups_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Groups page', :js, feature_category: :subgroups do
+RSpec.describe 'Dashboard Groups page', :js, feature_category: :groups_and_projects do
let(:user) { create :user }
let(:group) { create(:group) }
let(:nested_group) { create(:group, :nested) }
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index 32bce32ec6c..04b7f1ca821 100644
--- a/spec/features/dashboard/projects_spec.rb
+++ b/spec/features/dashboard/projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Projects', feature_category: :projects do
+RSpec.describe 'Dashboard Projects', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project, reload: true) { create(:project, :repository, creator: build(:user)) } # ensure creator != owner to avoid N+1 false-positive
let_it_be(:project2) { create(:project, :public) }
diff --git a/spec/features/dashboard/shortcuts_spec.rb b/spec/features/dashboard/shortcuts_spec.rb
index 155f7e93961..2e01c1304de 100644
--- a/spec/features/dashboard/shortcuts_spec.rb
+++ b/spec/features/dashboard/shortcuts_spec.rb
@@ -20,7 +20,11 @@ RSpec.describe 'Dashboard shortcuts', :js, feature_category: :shared do
find('body').send_keys([:shift, 'M'])
- check_page_title('Merge requests')
+ check_page_title('Assigned merge requests')
+
+ find('body').send_keys([:shift, 'R'])
+
+ check_page_title('Review requests')
find('body').send_keys([:shift, 'T'])
diff --git a/spec/features/dashboard/user_filters_projects_spec.rb b/spec/features/dashboard/user_filters_projects_spec.rb
index 8ec9b98c3b3..bf9fe18ee75 100644
--- a/spec/features/dashboard/user_filters_projects_spec.rb
+++ b/spec/features/dashboard/user_filters_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > User filters projects', feature_category: :projects do
+RSpec.describe 'Dashboard > User filters projects', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'Victorialand', namespace: user.namespace, created_at: 2.seconds.ago, updated_at: 2.seconds.ago) }
let(:user2) { create(:user) }
diff --git a/spec/features/explore/groups_list_spec.rb b/spec/features/explore/groups_list_spec.rb
index 3ffa0dc5b64..39cd3c80307 100644
--- a/spec/features/explore/groups_list_spec.rb
+++ b/spec/features/explore/groups_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Explore Groups page', :js, feature_category: :subgroups do
+RSpec.describe 'Explore Groups page', :js, feature_category: :groups_and_projects do
let!(:user) { create :user }
let!(:group) { create(:group) }
let!(:public_group) { create(:group, :public) }
diff --git a/spec/features/explore/groups_spec.rb b/spec/features/explore/groups_spec.rb
index 57a7e8ea523..9a3ae918bb9 100644
--- a/spec/features/explore/groups_spec.rb
+++ b/spec/features/explore/groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Explore Groups', :js, feature_category: :subgroups do
+RSpec.describe 'Explore Groups', :js, feature_category: :groups_and_projects do
let(:user) { create :user }
let(:group) { create :group }
let!(:private_project) do
diff --git a/spec/features/file_uploads/attachment_spec.rb b/spec/features/file_uploads/attachment_spec.rb
index cff0c0b52b4..6c433b49b8b 100644
--- a/spec/features/file_uploads/attachment_spec.rb
+++ b/spec/features/file_uploads/attachment_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload an attachment', :api, :js, feature_category: :projects do
+RSpec.describe 'Upload an attachment', :api, :js, feature_category: :groups_and_projects do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/group_import_spec.rb b/spec/features/file_uploads/group_import_spec.rb
index f5082e31c06..02e6488f324 100644
--- a/spec/features/file_uploads/group_import_spec.rb
+++ b/spec/features/file_uploads/group_import_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a group export archive', :api, :js, feature_category: :subgroups do
+RSpec.describe 'Upload a group export archive', :api, :js, feature_category: :groups_and_projects do
include_context 'file upload requests helpers'
let_it_be(:user) { create(:user, :admin) }
diff --git a/spec/features/file_uploads/project_import_spec.rb b/spec/features/file_uploads/project_import_spec.rb
index 3934e0319ad..acb4d43a373 100644
--- a/spec/features/file_uploads/project_import_spec.rb
+++ b/spec/features/file_uploads/project_import_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a project export archive', :api, :js, feature_category: :projects do
+RSpec.describe 'Upload a project export archive', :api, :js, feature_category: :groups_and_projects do
include_context 'file upload requests helpers'
let_it_be(:user) { create(:user, :admin) }
diff --git a/spec/features/file_uploads/user_avatar_spec.rb b/spec/features/file_uploads/user_avatar_spec.rb
index 062c47d5310..3f7d69afa0b 100644
--- a/spec/features/file_uploads/user_avatar_spec.rb
+++ b/spec/features/file_uploads/user_avatar_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe 'Upload a user avatar', :js, feature_category: :user_profile do
let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
before do
+ stub_feature_flags(edit_user_profile_vue: false)
sign_in(user)
visit(profile_path)
attach_file('user_avatar-trigger', file.path, make_visible: true)
diff --git a/spec/features/groups/activity_spec.rb b/spec/features/groups/activity_spec.rb
index 7e592b3f48b..12224566f35 100644
--- a/spec/features/groups/activity_spec.rb
+++ b/spec/features/groups/activity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group activity page', feature_category: :subgroups do
+RSpec.describe 'Group activity page', feature_category: :groups_and_projects do
let(:user) { create(:group_member, :developer, user: create(:user), group: group).user }
let(:group) { create(:group) }
let(:path) { activity_group_path(group) }
diff --git a/spec/features/groups/board_sidebar_spec.rb b/spec/features/groups/board_sidebar_spec.rb
index 8216bc3249d..6a1b7d20a25 100644
--- a/spec/features/groups/board_sidebar_spec.rb
+++ b/spec/features/groups/board_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Issue Boards', :js, feature_category: :subgroups do
+RSpec.describe 'Group Issue Boards', :js, feature_category: :groups_and_projects do
include BoardHelpers
let(:group) { create(:group) }
diff --git a/spec/features/groups/board_spec.rb b/spec/features/groups/board_spec.rb
index 8acf3ffe441..25f7d4d968c 100644
--- a/spec/features/groups/board_spec.rb
+++ b/spec/features/groups/board_spec.rb
@@ -37,9 +37,9 @@ RSpec.describe 'Group Boards', feature_category: :team_planning do
fill_in 'issue_title', with: issue_title
page.within("[data-testid='project-select-dropdown']") do
- find('button.gl-dropdown-toggle').click
+ find('button.gl-new-dropdown-toggle').click
- find('.gl-dropdown-item button').click
+ find('.gl-new-dropdown-item').click
end
click_button 'Create issue'
diff --git a/spec/features/groups/empty_states_spec.rb b/spec/features/groups/empty_states_spec.rb
index e123e223ae5..30074f421e5 100644
--- a/spec/features/groups/empty_states_spec.rb
+++ b/spec/features/groups/empty_states_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group empty states', feature_category: :subgroups do
+RSpec.describe 'Group empty states', feature_category: :groups_and_projects do
let(:group) { create(:group) }
let(:user) { create(:group_member, :developer, user: create(:user), group: group).user }
diff --git a/spec/features/groups/group_page_with_external_authorization_service_spec.rb b/spec/features/groups/group_page_with_external_authorization_service_spec.rb
index dce5b67d694..5b373aecce8 100644
--- a/spec/features/groups/group_page_with_external_authorization_service_spec.rb
+++ b/spec/features/groups/group_page_with_external_authorization_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'The group page', feature_category: :subgroups do
+RSpec.describe 'The group page', feature_category: :groups_and_projects do
include ExternalAuthorizationServiceHelpers
let(:user) { create(:user) }
diff --git a/spec/features/groups/group_settings_spec.rb b/spec/features/groups/group_settings_spec.rb
index 6443f4a6c38..a248a2b471a 100644
--- a/spec/features/groups/group_settings_spec.rb
+++ b/spec/features/groups/group_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Edit group settings', feature_category: :subgroups do
+RSpec.describe 'Edit group settings', feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
diff --git a/spec/features/groups/integrations/group_integrations_spec.rb b/spec/features/groups/integrations/group_integrations_spec.rb
index 8cddda91e89..de6403210bb 100644
--- a/spec/features/groups/integrations/group_integrations_spec.rb
+++ b/spec/features/groups/integrations/group_integrations_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group integrations', :js do
+RSpec.describe 'Group integrations', :js, feature_category: :integrations do
include_context 'group integration activation'
before do
diff --git a/spec/features/groups/issues_spec.rb b/spec/features/groups/issues_spec.rb
index 6d0d768d356..0d7e9df031c 100644
--- a/spec/features/groups/issues_spec.rb
+++ b/spec/features/groups/issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group issues page', feature_category: :subgroups do
+RSpec.describe 'Group issues page', feature_category: :groups_and_projects do
include FilteredSearchHelpers
include DragTo
diff --git a/spec/features/groups/members/filter_members_spec.rb b/spec/features/groups/members/filter_members_spec.rb
index c2ec709576b..bf9efd06a03 100644
--- a/spec/features/groups/members/filter_members_spec.rb
+++ b/spec/features/groups/members/filter_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Filter members', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Filter members', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:user) { create(:user) }
diff --git a/spec/features/groups/members/leave_group_spec.rb b/spec/features/groups/members/leave_group_spec.rb
index e1c2d8c0547..d864852e0d4 100644
--- a/spec/features/groups/members/leave_group_spec.rb
+++ b/spec/features/groups/members/leave_group_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Leave group', feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Leave group', feature_category: :groups_and_projects do
include Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/groups/members/list_members_spec.rb b/spec/features/groups/members/list_members_spec.rb
index 6e20f92c16b..b16d61a5fe4 100644
--- a/spec/features/groups/members/list_members_spec.rb
+++ b/spec/features/groups/members/list_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > List members', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > List members', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:user1) { create(:user, name: 'John Doe') }
diff --git a/spec/features/groups/members/manage_groups_spec.rb b/spec/features/groups/members/manage_groups_spec.rb
index f9c11dd0183..87de0e2e46b 100644
--- a/spec/features/groups/members/manage_groups_spec.rb
+++ b/spec/features/groups/members/manage_groups_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Manage groups', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Manage groups', :js, feature_category: :groups_and_projects do
+ include ListboxHelpers
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -75,8 +76,7 @@ RSpec.describe 'Groups > Members > Manage groups', :js, feature_category: :subgr
click_groups_tab
page.within(first_row) do
- click_button('Developer')
- click_button('Maintainer')
+ select_from_listbox('Maintainer', from: 'Developer')
wait_for_requests
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb
index 2d5a3dbb8f8..138031ffaac 100644
--- a/spec/features/groups/members/manage_members_spec.rb
+++ b/spec/features/groups/members/manage_members_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Manage members', feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Manage members', feature_category: :groups_and_projects do
+ include ListboxHelpers
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -35,8 +36,7 @@ RSpec.describe 'Groups > Members > Manage members', feature_category: :subgroups
visit group_group_members_path(group)
page.within(second_row) do
- click_button('Developer')
- click_button('Owner')
+ select_from_listbox('Owner', from: 'Developer')
expect(page).to have_button('Owner')
end
diff --git a/spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb b/spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb
index 4f56c807ec8..c2eedfb4063 100644
--- a/spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb
+++ b/spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Owner adds member with expiration date', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Owner adds member with expiration date', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
diff --git a/spec/features/groups/members/master_manages_access_requests_spec.rb b/spec/features/groups/members/master_manages_access_requests_spec.rb
index 951dc59feca..1b33a28d823 100644
--- a/spec/features/groups/members/master_manages_access_requests_spec.rb
+++ b/spec/features/groups/members/master_manages_access_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Maintainer manages access requests', feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Maintainer manages access requests', feature_category: :groups_and_projects do
it_behaves_like 'Maintainer manages access requests' do
let(:entity) { create(:group, :public) }
let(:members_page_path) { group_group_members_path(entity) }
diff --git a/spec/features/groups/members/request_access_spec.rb b/spec/features/groups/members/request_access_spec.rb
index 35eb085a195..cd0c9bfe3eb 100644
--- a/spec/features/groups/members/request_access_spec.rb
+++ b/spec/features/groups/members/request_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Request access', feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Request access', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:owner) { create(:user) }
let(:group) { create(:group, :public) }
diff --git a/spec/features/groups/members/search_members_spec.rb b/spec/features/groups/members/search_members_spec.rb
index 80de1cabd1e..ed2e0cd7b09 100644
--- a/spec/features/groups/members/search_members_spec.rb
+++ b/spec/features/groups/members/search_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Search group member', :js, feature_category: :subgroups do
+RSpec.describe 'Search group member', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:user) { create :user }
diff --git a/spec/features/groups/members/sort_members_spec.rb b/spec/features/groups/members/sort_members_spec.rb
index d2e5445deae..fd367b8e763 100644
--- a/spec/features/groups/members/sort_members_spec.rb
+++ b/spec/features/groups/members/sort_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Sort members', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Sort members', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:owner) { create(:user, name: 'John Doe', created_at: 5.days.ago, last_activity_on: Date.today) }
diff --git a/spec/features/groups/members/tabs_spec.rb b/spec/features/groups/members/tabs_spec.rb
index 2dc116842b3..cc97b367313 100644
--- a/spec/features/groups/members/tabs_spec.rb
+++ b/spec/features/groups/members/tabs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Tabs', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > Members > Tabs', :js, feature_category: :groups_and_projects do
using RSpec::Parameterized::TableSyntax
shared_examples 'active "Members" tab' do
diff --git a/spec/features/groups/milestone_spec.rb b/spec/features/groups/milestone_spec.rb
index 376e1e6063f..0a697eaa798 100644
--- a/spec/features/groups/milestone_spec.rb
+++ b/spec/features/groups/milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group milestones', feature_category: :subgroups do
+RSpec.describe 'Group milestones', feature_category: :groups_and_projects do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project_empty_repo, group: group) }
let_it_be(:user) { create(:group_member, :maintainer, user: create(:user), group: group).user }
diff --git a/spec/features/groups/milestones/milestone_showing_spec.rb b/spec/features/groups/milestones/milestone_showing_spec.rb
new file mode 100644
index 00000000000..ca556cf159c
--- /dev/null
+++ b/spec/features/groups/milestones/milestone_showing_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Group milestone', :js, feature_category: :team_planning do
+ let_it_be(:group) { create(:group, owner: user) }
+ let_it_be(:user) { create(:group_member, :maintainer, user: create(:user), group: group).user }
+
+ let(:milestone) { create(:milestone, group: group) }
+
+ before do
+ sign_in(user)
+ end
+
+ it_behaves_like 'milestone with interactive markdown task list items in description' do
+ let(:milestone_path) { group_milestone_path(group, milestone) }
+ end
+end
diff --git a/spec/features/groups/new_group_page_spec.rb b/spec/features/groups/new_group_page_spec.rb
index 1efdc3fff07..c3731565ddf 100644
--- a/spec/features/groups/new_group_page_spec.rb
+++ b/spec/features/groups/new_group_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New group page', :js, feature_category: :subgroups do
+RSpec.describe 'New group page', :js, feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:parent_group) { create(:group) }
@@ -11,24 +11,6 @@ RSpec.describe 'New group page', :js, feature_category: :subgroups do
sign_in(user)
end
- 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
- visit new_group_path(anchor: 'create-group-pane')
-
- expect(page).to have_selector('[data-testid="new-top-level-alert"]')
- end
- end
-
- context 'when a user visits the new sub group page' do
- it 'does not show the new top level group alert' do
- visit new_group_path(parent_id: parent_group.id, anchor: 'create-group-pane')
-
- expect(page).not_to have_selector('[data-testid="new-top-level-alert"]')
- end
- end
- end
-
describe 'sidebar' do
context 'in the current navigation' do
before do
diff --git a/spec/features/groups/settings/group_badges_spec.rb b/spec/features/groups/settings/group_badges_spec.rb
index 07c8451f8fb..4a4cb297fcf 100644
--- a/spec/features/groups/settings/group_badges_spec.rb
+++ b/spec/features/groups/settings/group_badges_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Badges', feature_category: :subgroups do
+RSpec.describe 'Group Badges', feature_category: :groups_and_projects do
include WaitForRequests
let(:user) { create(:user) }
diff --git a/spec/features/groups/settings/manage_applications_spec.rb b/spec/features/groups/settings/manage_applications_spec.rb
index e7b87cda506..94adeaa14d2 100644
--- a/spec/features/groups/settings/manage_applications_spec.rb
+++ b/spec/features/groups/settings/manage_applications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User manages applications', feature_category: :subgroups do
+RSpec.describe 'User manages applications', feature_category: :groups_and_projects do
let_it_be(:group) { create(:group) }
let_it_be(:user) { create(:user) }
let_it_be(:new_application_path) { group_settings_applications_path(group) }
diff --git a/spec/features/groups/settings/user_searches_in_settings_spec.rb b/spec/features/groups/settings/user_searches_in_settings_spec.rb
index 374ac236e20..6e94042185d 100644
--- a/spec/features/groups/settings/user_searches_in_settings_spec.rb
+++ b/spec/features/groups/settings/user_searches_in_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches group settings', :js, feature_category: :subgroups do
+RSpec.describe 'User searches group settings', :js, feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
diff --git a/spec/features/groups/share_lock_spec.rb b/spec/features/groups/share_lock_spec.rb
index 2f5a5e6ba16..34af5ee8b09 100644
--- a/spec/features/groups/share_lock_spec.rb
+++ b/spec/features/groups/share_lock_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group share with group lock', feature_category: :subgroups do
+RSpec.describe 'Group share with group lock', feature_category: :groups_and_projects do
let(:root_owner) { create(:user) }
let(:root_group) { create(:group) }
diff --git a/spec/features/groups/show_spec.rb b/spec/features/groups/show_spec.rb
index 0f936173e5d..8450322945c 100644
--- a/spec/features/groups/show_spec.rb
+++ b/spec/features/groups/show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group show page', feature_category: :subgroups do
+RSpec.describe 'Group show page', feature_category: :groups_and_projects do
include Features::InviteMembersModalHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/groups/user_browse_projects_group_page_spec.rb b/spec/features/groups/user_browse_projects_group_page_spec.rb
index 38b879bb5b2..c3b8b81da68 100644
--- a/spec/features/groups/user_browse_projects_group_page_spec.rb
+++ b/spec/features/groups/user_browse_projects_group_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User browse group projects page', feature_category: :subgroups do
+RSpec.describe 'User browse group projects page', feature_category: :groups_and_projects do
let(:user) { create :user }
let(:group) { create :group }
diff --git a/spec/features/groups/user_sees_package_sidebar_spec.rb b/spec/features/groups/user_sees_package_sidebar_spec.rb
index 64422f5cca5..6a91dfb92bf 100644
--- a/spec/features/groups/user_sees_package_sidebar_spec.rb
+++ b/spec/features/groups/user_sees_package_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > sidebar', feature_category: :subgroups do
+RSpec.describe 'Groups > sidebar', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:group) { create(:group) }
diff --git a/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb b/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
index e5e30ed1a55..9a3232990ec 100644
--- a/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
+++ b/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > User sees users dropdowns in issuables list', :js, feature_category: :subgroups do
+RSpec.describe 'Groups > User sees users dropdowns in issuables list', :js, feature_category: :groups_and_projects do
include FilteredSearchHelpers
let(:group) { create(:group) }
diff --git a/spec/features/groups_spec.rb b/spec/features/groups_spec.rb
index 088b5b11a9a..de4b9964b98 100644
--- a/spec/features/groups_spec.rb
+++ b/spec/features/groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group', feature_category: :subgroups do
+RSpec.describe 'Group', feature_category: :groups_and_projects do
let(:user) { create(:user) }
before do
diff --git a/spec/features/ics/group_issues_spec.rb b/spec/features/ics/group_issues_spec.rb
index 70ec156a7b0..164f5df7cc5 100644
--- a/spec/features/ics/group_issues_spec.rb
+++ b/spec/features/ics/group_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Issues Calendar Feed', feature_category: :subgroups do
+RSpec.describe 'Group Issues Calendar Feed', feature_category: :groups_and_projects do
describe 'GET /issues' do
let!(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/ics/project_issues_spec.rb b/spec/features/ics/project_issues_spec.rb
index 4bbd966d72a..daad6f1df2f 100644
--- a/spec/features/ics/project_issues_spec.rb
+++ b/spec/features/ics/project_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Issues Calendar Feed', feature_category: :projects do
+RSpec.describe 'Project Issues Calendar Feed', feature_category: :groups_and_projects do
describe 'GET /issues' do
let!(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/incidents/user_views_incident_spec.rb b/spec/features/incidents/user_views_incident_spec.rb
index 0265960fce7..8739c99bdd0 100644
--- a/spec/features/incidents/user_views_incident_spec.rb
+++ b/spec/features/incidents/user_views_incident_spec.rb
@@ -18,6 +18,7 @@ RSpec.describe "User views incident", feature_category: :incident_management do
before do
sign_in(user)
+ stub_feature_flags(moved_mr_sidebar: false)
visit(incident_project_issues_path(project, incident))
end
diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb
index a3d4b30b59c..a1e75a94326 100644
--- a/spec/features/invites_spec.rb
+++ b/spec/features/invites_spec.rb
@@ -195,7 +195,8 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures, feature_cate
context 'when the user sign-up using a different email address' do
let(:invite_email) { build_stubbed(:user).email }
- it 'signs up and redirects to the activity page' do
+ it 'signs up and redirects to the activity page',
+ quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/414971' do
fill_in_sign_up_form(new_user)
fill_in_welcome_form
diff --git a/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb b/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
index c982052fc0e..7f6a044a575 100644
--- a/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
+++ b/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
@@ -20,7 +20,6 @@ RSpec.describe 'Resolving all open threads in a merge request from an issue', :j
before do
stub_feature_flags(moved_mr_sidebar: false)
- stub_feature_flags(hide_create_issue_resolve_all: false)
end
describe 'as a user with access to the project' do
@@ -45,7 +44,6 @@ RSpec.describe 'Resolving all open threads in a merge request from an issue', :j
it 'hides the link for creating a new issue' do
expect(page).not_to have_selector resolve_all_discussions_link_selector
- expect(page).not_to have_content "Resolve all with new issue"
end
end
@@ -67,6 +65,7 @@ RSpec.describe 'Resolving all open threads in a merge request from an issue', :j
before do
project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
visit project_merge_request_path(project, merge_request)
+ find('.discussions-counter .dropdown-toggle').click
end
it 'does not show a link to create a new issue' do
@@ -82,22 +81,6 @@ RSpec.describe 'Resolving all open threads in a merge request from an issue', :j
it 'shows a warning that the merge request contains unresolved threads' do
expect(page).to have_content 'all threads must be resolved'
end
-
- it 'has a link to resolve all threads by creating an issue' do
- expect(page).to have_link 'Resolve all with new issue', href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
- end
-
- context 'creating an issue for threads' do
- before do
- page.within '.mr-state-widget' do
- page.click_link 'Resolve all with new issue', href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
-
- wait_for_all_requests
- end
- end
-
- it_behaves_like 'creating an issue for a thread'
- end
end
end
end
diff --git a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
index a89c36a2b78..57270e8f7c7 100644
--- a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
@@ -110,8 +110,8 @@ RSpec.describe 'Dropdown assignee', :js, feature_category: :team_planning do
expect(page).to have_text group_user.name
expect(page).to have_text subgroup_user.name
expect(page).to have_text invited_to_project_group_user.name
+ expect(page).to have_text invited_to_group_group_user.name
expect(page).not_to have_text subsubgroup_user.name
- expect(page).not_to have_text invited_to_group_group_user.name
end
end
end
diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb
index ee71181fba2..4cf558b04cc 100644
--- a/spec/features/issues/issue_sidebar_spec.rb
+++ b/spec/features/issues/issue_sidebar_spec.rb
@@ -162,7 +162,7 @@ RSpec.describe 'Issue Sidebar', feature_category: :team_planning do
open_assignees_dropdown
page.within '.dropdown-menu-user' do
- find('.js-dropdown-input-field').find('input').set(user2.name)
+ find('[data-testid="user-search-input"]').set(user2.name)
wait_for_requests
@@ -182,7 +182,7 @@ RSpec.describe 'Issue Sidebar', feature_category: :team_planning do
it 'keeps your filtered term after filtering and dismissing the dropdown' do
open_assignees_dropdown
- find('.js-dropdown-input-field').find('input').set(user2.name)
+ find('[data-testid="user-search-input"]').set(user2.name)
wait_for_requests
page.within '.dropdown-menu-user' do
@@ -199,7 +199,7 @@ RSpec.describe 'Issue Sidebar', feature_category: :team_planning do
expect(page.all('[data-testid="selected-participant"]').length).to eq(1)
end
- expect(find('.js-dropdown-input-field').find('input').value).to eq(user2.name)
+ expect(find('[data-testid="user-search-input"]').value).to eq(user2.name)
end
end
end
diff --git a/spec/features/issues/user_bulk_edits_issues_spec.rb b/spec/features/issues/user_bulk_edits_issues_spec.rb
index 3e119d86c05..4c93a8e1c7a 100644
--- a/spec/features/issues/user_bulk_edits_issues_spec.rb
+++ b/spec/features/issues/user_bulk_edits_issues_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Multiple issue updating from issues#index', :js, feature_category: :team_planning do
+ include ListboxHelpers
+
let!(:project) { create(:project) }
let!(:issue) { create(:issue, project: project) }
let!(:user) { create(:user) }
@@ -18,8 +20,7 @@ RSpec.describe 'Multiple issue updating from issues#index', :js, feature_categor
click_button 'Bulk edit'
check 'Select all'
- click_button 'Select status'
- click_button 'Closed'
+ select_from_listbox('Closed', from: 'Select status')
click_update_issues_button
expect(page).to have_selector('.issue', count: 0)
@@ -31,8 +32,7 @@ RSpec.describe 'Multiple issue updating from issues#index', :js, feature_categor
click_button 'Bulk edit'
check 'Select all'
- click_button 'Select status'
- click_button 'Open'
+ select_from_listbox('Open', from: 'Select status')
click_update_issues_button
expect(page).to have_selector('.issue', count: 0)
diff --git a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
index 6d9eb3a7191..1050bc2456f 100644
--- a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
+++ b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
@@ -31,7 +31,7 @@ RSpec.describe 'User creates branch and merge request on issue page', :js, featu
end
# In order to improve tests performance, all UI checks are placed in this test.
- it 'shows elements', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/27993' do
+ it 'shows elements' do
button_create_merge_request = find('.js-create-merge-request')
button_toggle_dropdown = find('.create-mr-dropdown-wrap .dropdown-toggle')
diff --git a/spec/features/issues/user_sorts_issue_comments_spec.rb b/spec/features/issues/user_sorts_issue_comments_spec.rb
index 153066343f2..8ca9d2003ee 100644
--- a/spec/features/issues/user_sorts_issue_comments_spec.rb
+++ b/spec/features/issues/user_sorts_issue_comments_spec.rb
@@ -17,7 +17,6 @@ RSpec.describe 'Comment sort direction', feature_category: :team_planning do
# open dropdown, and select 'Newest first'
page.within('.issuable-details') do
click_button('Sort or filter')
- click_button('Oldest first')
click_button('Newest first')
end
diff --git a/spec/features/markdown/markdown_spec.rb b/spec/features/markdown/markdown_spec.rb
index a31ad5a868e..eb86393d59e 100644
--- a/spec/features/markdown/markdown_spec.rb
+++ b/spec/features/markdown/markdown_spec.rb
@@ -59,7 +59,7 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_p
aggregate_failures 'allows Markdown in tables' do
expect(doc.at_css('td:contains("Baz")').children.to_html)
- .to eq '<strong>Baz</strong>'
+ .to eq_no_sourcepos '<strong>Baz</strong>'
end
aggregate_failures 'parses fenced code blocks' do
@@ -167,13 +167,13 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_p
it 'allows markup inside link elements' do
aggregate_failures do
expect(doc.at_css('a[href="#link-emphasis"]').to_html)
- .to eq %{<a href="#link-emphasis"><em>text</em></a>}
+ .to eq_no_sourcepos %{<a href="#link-emphasis"><em>text</em></a>}
expect(doc.at_css('a[href="#link-strong"]').to_html)
- .to eq %{<a href="#link-strong"><strong>text</strong></a>}
+ .to eq_no_sourcepos %{<a href="#link-strong"><strong>text</strong></a>}
expect(doc.at_css('a[href="#link-code"]').to_html)
- .to eq %{<a href="#link-code"><code>text</code></a>}
+ .to eq_no_sourcepos %{<a href="#link-code"><code>text</code></a>}
end
end
end
@@ -221,11 +221,25 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_p
context 'default pipeline' do
before do
+ stub_feature_flags(disable_all_mention: false)
+
@html = markdown(@feat.raw_markdown)
end
it_behaves_like 'all pipelines'
+ context 'when `disable_all_mention` FF is enabled' do
+ before do
+ stub_feature_flags(disable_all_mention: true)
+
+ @html = markdown(@feat.raw_markdown)
+ end
+
+ it 'includes custom filters' do
+ expect(doc).to reference_users_excluding_all
+ end
+ end
+
it 'includes custom filters' do
aggregate_failures 'UploadLinkFilter' do
expect(doc).to parse_upload_links
@@ -308,6 +322,8 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_p
context 'wiki pipeline' do
before do
+ stub_feature_flags(disable_all_mention: false)
+
@wiki = @feat.wiki
@wiki_page = @feat.wiki_page
@@ -320,6 +336,27 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_p
@html = markdown(@feat.raw_markdown, { pipeline: :wiki, wiki: @wiki, page_slug: @wiki_page.slug })
end
+ context 'when `disable_all_mention` FF is enabled' do
+ before do
+ stub_feature_flags(disable_all_mention: true)
+
+ @wiki = @feat.wiki
+ @wiki_page = @feat.wiki_page
+
+ name = 'example.jpg'
+ path = "images/#{name}"
+ blob = double(name: name, path: path, mime_type: 'image/jpeg', data: nil)
+ expect(@wiki).to receive(:find_file).with(path, load_content: false).and_return(Gitlab::Git::WikiFile.new(blob))
+ allow(@wiki).to receive(:wiki_base_path) { '/namespace1/gitlabhq/wikis' }
+
+ @html = markdown(@feat.raw_markdown, { pipeline: :wiki, wiki: @wiki, page_slug: @wiki_page.slug })
+ end
+
+ it 'includes custom filters' do
+ expect(doc).to reference_users_excluding_all
+ end
+ end
+
it_behaves_like 'all pipelines'
it 'includes custom filters' do
diff --git a/spec/features/markdown/metrics_spec.rb b/spec/features/markdown/metrics_spec.rb
deleted file mode 100644
index 1b68f78e993..00000000000
--- a/spec/features/markdown/metrics_spec.rb
+++ /dev/null
@@ -1,244 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Metrics rendering', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline, feature_category: :metrics do
- include PrometheusHelpers
- include KubernetesHelpers
- include GrafanaApiHelpers
- include MetricsDashboardUrlHelpers
-
- let_it_be(:user) { create(:user) }
- let_it_be(:project) { create(:project, :with_prometheus_integration) }
- let_it_be(:environment) { create(:environment, project: project) }
-
- let(:issue) { create(:issue, project: project, description: description) }
- let(:description) { "See [metrics dashboard](#{metrics_url}) for info." }
- let(:metrics_url) { urls.metrics_project_environment_url(project, environment) }
-
- before do
- stub_feature_flags(remove_monitor_metrics: false)
- clear_host_from_memoized_variables
- stub_gitlab_domain
-
- project.add_developer(user)
- sign_in(user)
- end
-
- after do
- clear_host_from_memoized_variables
- end
-
- shared_examples_for 'metrics dashboard unavailable' do
- context 'when metrics dashboard feature is unavailable' do
- before do
- stub_feature_flags(remove_monitor_metrics: true)
- end
-
- it 'shows no embedded metrics' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_no_css('div.prometheus-graph')
- end
- end
- end
-
- context 'internal metrics embeds' do
- before do
- import_common_metrics
- stub_any_prometheus_request_with_response
-
- allow(Prometheus::ProxyService).to receive(:new).and_call_original
- end
-
- include_examples 'metrics dashboard unavailable'
-
- it 'shows embedded metrics' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text('Memory Usage (Total)')
- expect(page).to have_text('Core Usage (Total)')
-
- # Ensure that the FE is calling the BE with expected params
- expect(Prometheus::ProxyService)
- .to have_received(:new)
- .with(environment, 'GET', 'query_range', hash_including('start', 'end', 'step'))
- .at_least(:once)
- end
-
- context 'with remove_monitor_metrics flag enabled' do
- before do
- stub_feature_flags(remove_monitor_metrics: true)
- end
-
- it 'does not show embedded metrics' do
- visit project_issue_path(project, issue)
-
- expect(page).not_to have_css('div.prometheus-graph')
- expect(page).not_to have_text('Memory Usage (Total)')
- expect(page).not_to have_text('Core Usage (Total)')
- end
- end
-
- context 'when dashboard params are in included the url' do
- let(:metrics_url) { urls.metrics_project_environment_url(project, environment, **chart_params) }
-
- let(:chart_params) do
- {
- group: 'System metrics (Kubernetes)',
- title: 'Memory Usage (Pod average)',
- y_label: 'Memory Used per Pod (MB)'
- }
- end
-
- it 'shows embedded metrics for the specific chart' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text(chart_params[:title])
- expect(page).to have_text(chart_params[:y_label])
-
- # Ensure that the FE is calling the BE with expected params
- expect(Prometheus::ProxyService)
- .to have_received(:new)
- .with(environment, 'GET', 'query_range', hash_including('start', 'end', 'step'))
- .at_least(:once)
- end
-
- context 'when two dashboard urls are included' do
- let(:chart_params_2) do
- {
- group: 'System metrics (Kubernetes)',
- title: 'Core Usage (Total)',
- y_label: 'Total Cores'
- }
- end
-
- let(:metrics_url_2) { urls.metrics_project_environment_url(project, environment, **chart_params_2) }
- let(:description) { "See [metrics dashboard](#{metrics_url}) for info. \n See [metrics dashboard](#{metrics_url_2}) for info." }
- let(:issue) { create(:issue, project: project, description: description) }
-
- it 'shows embedded metrics for both urls' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text(chart_params[:title])
- expect(page).to have_text(chart_params[:y_label])
- expect(page).to have_text(chart_params_2[:title])
- expect(page).to have_text(chart_params_2[:y_label])
-
- # Ensure that the FE is calling the BE with expected params
- expect(Prometheus::ProxyService)
- .to have_received(:new)
- .with(environment, 'GET', 'query_range', hash_including('start', 'end', 'step'))
- .at_least(:once)
- end
- end
- end
- end
-
- context 'grafana metrics embeds' do
- let(:grafana_integration) { create(:grafana_integration, project: project) }
- let(:grafana_base_url) { grafana_integration.grafana_url }
- let(:metrics_url) { valid_grafana_dashboard_link(grafana_base_url) }
-
- before do
- stub_dashboard_request(grafana_base_url)
- stub_datasource_request(grafana_base_url)
- stub_all_grafana_proxy_requests(grafana_base_url)
-
- allow(Grafana::ProxyService).to receive(:new).and_call_original
- end
-
- include_examples 'metrics dashboard unavailable'
-
- it 'shows embedded metrics', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/402973' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text('Expired / Evicted')
- expect(page).to have_text('expired - test-attribute-value')
-
- # Ensure that the FE is calling the BE with expected params
- expect(Grafana::ProxyService)
- .to have_received(:new)
- .with(project, anything, anything, hash_including('query', 'start', 'end', 'step'))
- .at_least(:once)
- end
- end
-
- context 'transient metrics embeds' do
- let(:metrics_url) { urls.metrics_dashboard_project_environment_url(project, environment, embed_json: embed_json) }
- let(:title) { 'Important Metrics' }
- let(:embed_json) do
- {
- panel_groups: [{
- panels: [{
- type: 'area-chart',
- title: title,
- y_label: 'metric',
- metrics: [{
- query_range: 'metric * 0.5 < 1'
- }]
- }]
- }]
- }.to_json
- end
-
- before do
- stub_any_prometheus_request_with_response
- end
-
- include_examples 'metrics dashboard unavailable'
-
- it 'shows embedded metrics' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text(title)
- end
- end
-
- context 'for GitLab embedded cluster health metrics' do
- before do
- project.add_maintainer(user)
- import_common_metrics
- stub_any_prometheus_request_with_response
-
- allow(Prometheus::ProxyService).to receive(:new).and_call_original
-
- create(:clusters_integrations_prometheus, cluster: cluster)
- stub_kubeclient_discover(cluster.platform.api_url)
- stub_prometheus_request(/prometheus-prometheus-server/, body: prometheus_values_body)
- stub_prometheus_request(%r{prometheus/api/v1}, body: prometheus_values_body)
- end
-
- let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [project], user: user) }
-
- let(:params) { [project.namespace.path, project.path, cluster.id] }
- let(:query_params) { { group: 'Cluster Health', title: 'CPU Usage', y_label: 'CPU (cores)' } }
- let(:metrics_url) { urls.namespace_project_cluster_url(*params, **query_params) }
- let(:description) { "# Summary \n[](#{metrics_url})" }
-
- include_examples 'metrics dashboard unavailable'
-
- it 'shows embedded metrics' do
- visit project_issue_path(project, issue)
-
- expect(page).to have_css('div.prometheus-graph')
- expect(page).to have_text(query_params[:title])
- expect(page).to have_text(query_params[:y_label])
- expect(page).not_to have_text(metrics_url)
-
- expect(Prometheus::ProxyService)
- .to have_received(:new)
- .with(cluster, 'GET', 'query_range', hash_including('start', 'end', 'step'))
- .at_least(:once)
- end
- end
-
- def import_common_metrics
- ::Gitlab::DatabaseImporters::CommonMetrics::Importer.new.execute
- end
-end
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 9b8e50a31e3..07d9ddde910 100644
--- a/spec/features/merge_request/close_reopen_report_toggle_spec.rb
+++ b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
before do
project.add_maintainer(user)
login_as user
+ stub_feature_flags(moved_mr_sidebar: false)
end
context 'when user has permission to update', :js do
@@ -24,15 +25,16 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
context 'close/reopen/report toggle' do
it 'opens a dropdown when toggle is clicked' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
- expect(container).to have_link("Close merge request")
- expect(container).to have_button('Report abuse to administrator')
+ expect(container).to have_button("Close merge request")
+ expect(container).to have_button('Report abuse')
end
it 'links to Report Abuse' do
- find('[data-testid="merge-request-actions"]').click
- click_button 'Report abuse to administrator'
+ find('#new-actions-header-dropdown button').click
+
+ click_button 'Report abuse'
expect(page).to have_content('Report abuse to administrator')
end
@@ -42,13 +44,13 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
let(:issuable) { create(:merge_request, :opened, source_project: project) }
it 'shows the `Edit` and `Mark as draft` buttons' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
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_button('Report abuse to administrator')
- expect(container).not_to have_link('Reopen merge request')
+ expect(container).to have_button('Mark as draft')
+ expect(container).to have_button('Close merge request')
+ expect(container).to have_button('Report abuse')
+ expect(container).not_to have_button('Reopen merge request')
end
end
@@ -56,24 +58,24 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
let(:issuable) { create(:merge_request, :closed, source_project: project) }
it 'shows both the `Edit` and `Reopen` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(container).to have_link('Edit')
- 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')
+ expect(container).to have_button('Report abuse')
+ expect(container).to have_button('Reopen merge request')
+ expect(container).not_to have_button('Close merge request')
end
context 'when the merge request author is the current user' do
let(:issuable) { create(:merge_request, :closed, source_project: project, author: user) }
it 'shows both the `Edit` and `Reopen` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
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_button('Report abuse to administrator')
+ expect(container).to have_button('Reopen merge request')
+ expect(container).not_to have_button('Close merge request')
+ expect(container).not_to have_button('Report abuse')
end
end
end
@@ -83,7 +85,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_button('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -93,7 +95,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_button('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -112,9 +114,9 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
end
it 'only shows a `Report abuse` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
- expect(container).to have_button('Report abuse to administrator')
+ expect(container).to have_button('Report abuse')
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/merge_request_discussion_lock_spec.rb b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
index 11ec2a86b43..782c4af58ac 100644
--- a/spec/features/merge_request/merge_request_discussion_lock_spec.rb
+++ b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
@@ -90,7 +90,7 @@ RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_rev
end
it 'the user can lock the merge_request' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_content('Lock merge request')
end
@@ -103,7 +103,7 @@ RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_rev
end
it 'the user can unlock the merge_request' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_content('Unlock merge request')
end
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 e113e305af5..3aa2ce2a154 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
@@ -6,12 +6,15 @@ RSpec.describe 'User comments on a merge request', :js, feature_category: :code_
include RepoHelpers
let(:project) { create(:project, :repository) }
+ let(:diagramsnet_url) { 'https://embed.diagrams.net' }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }
before do
project.add_maintainer(user)
sign_in(user)
+ allow(Gitlab::CurrentSettings).to receive(:diagramsnet_enabled).and_return(true)
+ allow(Gitlab::CurrentSettings).to receive(:diagramsnet_url).and_return(diagramsnet_url)
visit(merge_request_path(merge_request))
end
diff --git a/spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb b/spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb
new file mode 100644
index 00000000000..c13fe8d1e45
--- /dev/null
+++ b/spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'User comments on a diff with whitespace changes', :js, feature_category: :code_review_workflow do
+ include MergeRequestDiffHelpers
+
+ let_it_be(:project) { create(:project, :repository) }
+ let(:merge_request) do
+ create(:merge_request_with_diffs, source_project: project, target_project: project,
+ source_branch: 'changes-with-whitespace')
+ end
+
+ let(:user) { create(:user) }
+
+ before do
+ project.add_maintainer(user)
+ sign_in(user)
+
+ visit(diffs_project_merge_request_path(project, merge_request, view: 'parallel'))
+ end
+
+ context 'when hiding whitespace changes' do
+ before do
+ find('.js-show-diff-settings').click
+ find('[data-testid="show-whitespace"]').click
+ wait_for_requests
+ end
+
+ context 'when commenting on line combinations that are not present in the real diff' do
+ before do
+ # Comment on line combination old: 19, new 20
+ # This line combination does not exist when whitespace is shown
+ click_diff_line(
+ find_by_scrolling('div[data-path="files/ruby/popen.rb"] .left-side a[data-linenumber="19"]').find(:xpath,
+ '../..'), 'left')
+ page.within('.js-discussion-note-form') do
+ fill_in(:note_note, with: 'Comment on diff with whitespace')
+ click_button('Add comment now')
+ end
+
+ wait_for_requests
+ end
+
+ it 'shows the comments in the diff' do
+ page.within('.notes_holder') do
+ expect(page).to have_content('Comment on diff with whitespace')
+ end
+ end
+
+ it 'allows replies to comments in the diff' do
+ click_button('Reply to comment')
+ fill_in(:note_note, with: 'reply to whitespace comment')
+ click_button('Add comment now')
+ wait_for_requests
+ page.within('.notes_holder') do
+ expect(page).to have_content('reply to whitespace comment')
+ end
+ end
+ end
+ end
+end
diff --git a/spec/features/merge_request/user_creates_discussion_on_diff_file_spec.rb b/spec/features/merge_request/user_creates_discussion_on_diff_file_spec.rb
new file mode 100644
index 00000000000..bb41ea6f6ed
--- /dev/null
+++ b/spec/features/merge_request/user_creates_discussion_on_diff_file_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'User creates discussion on diff file', :js, feature_category: :code_review_workflow do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let_it_be(:merge_request) do
+ create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
+ end
+
+ before do
+ project.add_maintainer(user)
+ sign_in(user)
+
+ visit(diffs_project_merge_request_path(project, merge_request))
+ end
+
+ it 'creates discussion on diff file' do
+ first('.diff-file [data-testid="comment-files-button"]').click
+
+ send_keys "Test comment"
+
+ click_button "Add comment now"
+
+ expect(first('.diff-file')).to have_selector('.note-text', text: 'Test comment')
+ end
+end
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 faef4f6f517..fa713bdbc5d 100644
--- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
@@ -5,7 +5,17 @@ require 'spec_helper'
RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review_workflow do
include Features::InviteMembersModalHelpers
- let(:project) { create(:project, :public, :repository) }
+ let(:owner) { create(:user) }
+ let(:shared_into_ancestor_user) { create(:user) }
+ let(:invited_group) { create(:group) { |group| group.add_maintainer(shared_into_ancestor_user) } }
+ let(:parent_group) do
+ create(:group) { |group| create(:group_group_link, shared_group: group, shared_with_group: invited_group) }
+ end
+
+ let(:project) do
+ create(:project, :public, :repository, group: parent_group) { |project| project.add_owner(owner) }
+ end
+
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) }
@@ -38,7 +48,7 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_cate
before do
stub_const('Autocomplete::UsersFinder::LIMIT', users_find_limit)
- sign_in(project.first_owner)
+ sign_in(owner)
merge_request.assignees << assignee
@@ -82,6 +92,24 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_cate
end
end
+ context 'with members shared into ancestors of the project' do
+ before do
+ sign_in(owner)
+
+ visit project_merge_request_path(project, merge_request)
+ wait_for_requests
+
+ sidebar_assignee_block.click_link('Edit')
+ wait_for_requests
+ end
+
+ it 'contains the members shared into ancestors of the projects' do
+ page.within '.dropdown-menu-user' do
+ expect(page).to have_content shared_into_ancestor_user.name
+ end
+ end
+ end
+
context 'with invite members considerations' do
let_it_be(:user) { create(:user) }
@@ -103,7 +131,7 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_cate
before do
stub_const('Autocomplete::UsersFinder::LIMIT', users_find_limit)
- sign_in(project.first_owner)
+ sign_in(owner)
merge_request.assignees << assignee
@@ -145,6 +173,23 @@ RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_cate
end
end
+ context 'with members shared into ancestors of the project' do
+ before do
+ sign_in(owner)
+
+ visit project_merge_request_path(project, merge_request)
+ wait_for_requests
+
+ open_assignees_dropdown
+ end
+
+ it 'contains the members shared into ancestors of the projects' do
+ page.within '.dropdown-menu-user' do
+ expect(page).to have_content shared_into_ancestor_user.name
+ end
+ end
+ end
+
context 'with invite members considerations' do
let_it_be(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb
index 3bcc8255ab7..84387965989 100644
--- a/spec/features/merge_request/user_manages_subscription_spec.rb
+++ b/spec/features/merge_request/user_manages_subscription_spec.rb
@@ -45,15 +45,15 @@ RSpec.describe 'User manages subscription', :js, feature_category: :code_review_
it 'toggles subscription' do
wait_for_requests
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_selector('.gl-toggle:not(.is-checked)')
- find('[data-testid="notifications-toggle"] .gl-toggle').click
+ find('[data-testid="notification-toggle"] .gl-toggle').click
wait_for_requests
expect(page).to have_selector('.gl-toggle.is-checked')
- find('[data-testid="notifications-toggle"] .gl-toggle').click
+ find('[data-testid="notification-toggle"] .gl-toggle').click
wait_for_requests
diff --git a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
index 8cbc2b975e4..70962890bc5 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
@@ -16,15 +16,15 @@ RSpec.describe 'Merge request > User marks merge request as draft', :js, feature
end
it 'toggles draft status' do
- find('[data-testid="merge-request-actions"]').click
- click_link 'Mark as draft'
+ find('#new-actions-header-dropdown button').click
+ click_button 'Mark as draft'
expect(page).to have_content("Draft: #{merge_request.title}")
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
page.within('.detail-page-header-actions') do
- click_link 'Mark as ready'
+ click_button 'Mark as ready'
end
expect(page).to have_content(merge_request.title)
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 5c00da1f569..e42e4735ee2 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
@@ -111,7 +111,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
describe 'enabling Merge when pipeline succeeds' do
shared_examples 'Set to auto-merge activator' do
- it 'activates the Merge when pipeline succeeds feature' do
+ it 'activates the Merge when pipeline succeeds feature', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410055' do
click_button "Set to auto-merge"
expect(page).to have_content "Set by #{user.name} to be merged automatically when the pipeline succeeds"
@@ -182,7 +182,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
visit project_merge_request_path(project, merge_request)
end
- it 'allows to cancel the automatic merge' do
+ it 'allows to cancel the automatic merge', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/412416' do
click_button "Cancel auto-merge"
expect(page).to have_button "Merge when pipeline succeeds"
diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb
index 03b01ef4b7a..a749821b083 100644
--- a/spec/features/merge_request/user_posts_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_notes_spec.rb
@@ -87,7 +87,7 @@ RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_
it 'shows a reply button' do
reply_button = find('.js-reply-button', match: :first)
- expect(reply_button).to have_selector('[data-testid="comment-icon"]')
+ expect(reply_button).to have_selector('[data-testid="reply-icon"]')
end
it 'shows reply placeholder when clicking reply button' do
diff --git a/spec/features/merge_request/user_sees_deployment_widget_spec.rb b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
index 40ab06937ff..6dcebad300c 100644
--- a/spec/features/merge_request/user_sees_deployment_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
@@ -120,6 +120,7 @@ RSpec.describe 'Merge request > User sees deployment widget', :js, feature_categ
end
before do
+ stub_feature_flags(review_apps_redeploy_mr_widget: false)
build.success!
deployment.update!(on_stop: manual.name)
visit project_merge_request_path(project, merge_request)
@@ -142,5 +143,56 @@ RSpec.describe 'Merge request > User sees deployment widget', :js, feature_categ
end
end
end
+
+ context 'with stop action with the review_apps_redeploy_mr_widget feature flag turned on' do
+ let(:manual) do
+ create(:ci_build, :manual, pipeline: pipeline,
+ name: 'close_app', environment: environment.name)
+ end
+
+ before do
+ stub_feature_flags(review_apps_redeploy_mr_widget: true)
+ build.success!
+ deployment.update!(on_stop: manual.name)
+ visit project_merge_request_path(project, merge_request)
+ wait_for_requests
+ end
+
+ it 'displays the re-deploy button' do
+ accept_gl_confirm(button_text: 'Stop environment') do
+ find('.js-stop-env').click
+ end
+
+ expect(page).to have_selector('.js-redeploy-action')
+ end
+
+ context 'for reporter' do
+ let(:role) { :reporter }
+
+ it 'does not show stop button' do
+ expect(page).not_to have_selector('.js-stop-env')
+ end
+ end
+ end
+
+ context 'with redeploy action and with the review_apps_redeploy_mr_widget feature flag turned on' do
+ before do
+ stub_feature_flags(review_apps_redeploy_mr_widget: true)
+ build.success!
+ environment.update!(state: 'stopped')
+ visit project_merge_request_path(project, merge_request)
+ wait_for_requests
+ end
+
+ it 'begins redeploying the deployment' do
+ accept_gl_confirm(button_text: 'Re-deploy') do
+ find('.js-redeploy-action').click
+ end
+
+ wait_for_requests
+
+ expect(page).to have_content('Will deploy to')
+ end
+ end
end
end
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 5f815bffb22..338e4329190 100644
--- a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
+++ b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
@@ -1,10 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-
-RSpec.describe 'Merge request > User sees discussions navigation',
- :js, feature_category: :code_review_workflow,
- quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410678' 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) }
@@ -44,7 +41,7 @@ RSpec.describe 'Merge request > User sees discussions navigation',
shared_examples 'a page with a thread navigation' do
context 'with active threads' do
- it 'navigates to the first thread', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410144' do
+ it 'navigates to the first thread' do
goto_next_thread
expect(page).to have_selector(first_discussion_selector, obscured: false)
end
@@ -54,13 +51,13 @@ RSpec.describe 'Merge request > User sees discussions navigation',
expect(page).to have_selector(second_discussion_selector, obscured: false)
end
- it 'navigates through active threads', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/391912' do
+ it 'navigates through active threads' do
goto_next_thread
goto_next_thread
expect(page).to have_selector(second_discussion_selector, obscured: false)
end
- it 'cycles back to the first thread', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/391604' do
+ it 'cycles back to the first thread' do
goto_next_thread
goto_next_thread
goto_next_thread
@@ -135,24 +132,18 @@ RSpec.describe 'Merge request > User sees discussions navigation',
end
describe 'Merge request discussions' do
- shared_examples 'a page with no code discussions' do
- let!(:first_discussion) do
- create(:discussion_note_on_merge_request,
- noteable: merge_request,
- project: project
- ).to_discussion
- end
+ let_it_be(:first_discussion) do
+ create(:discussion_note_on_merge_request, noteable: merge_request, project: project).to_discussion
+ end
- let!(:second_discussion) do
- create(:discussion_note_on_merge_request,
- noteable: merge_request,
- project: project
- ).to_discussion
- end
+ let_it_be(:second_discussion) do
+ create(:discussion_note_on_merge_request, noteable: merge_request, project: project).to_discussion
+ end
- let(:first_discussion_selector) { ".discussion[data-discussion-id='#{first_discussion.id}']" }
- let(:second_discussion_selector) { ".discussion[data-discussion-id='#{second_discussion.id}']" }
+ let(:first_discussion_selector) { ".discussion[data-discussion-id='#{first_discussion.id}']" }
+ let(:second_discussion_selector) { ".discussion[data-discussion-id='#{second_discussion.id}']" }
+ shared_examples 'a page with no code discussions' do
describe "Changes page discussions navigation" do
it 'navigates to the first discussion on the Overview page' do
goto_next_thread
@@ -196,9 +187,13 @@ RSpec.describe 'Merge request > User sees discussions navigation',
def goto_next_thread
click_button 'Go to next unresolved thread', obscured: false
+ # Wait for scroll
+ sleep(1)
end
def goto_previous_thread
click_button 'Go to previous unresolved thread', obscured: false
+ # Wait for scroll
+ sleep(1)
end
end
diff --git a/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb b/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb
new file mode 100644
index 00000000000..c385def6762
--- /dev/null
+++ b/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Merge request > User sees merge request file tree sidebar', :js, feature_category: :code_review_workflow do
+ include MergeRequestDiffHelpers
+
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let_it_be(:merge_request) { create(:merge_request, source_project: project) }
+ let(:user) { project.creator }
+ let(:sidebar) { find('.diff-tree-list') }
+ let(:sidebar_scroller) { sidebar.find('.vue-recycle-scroller') }
+
+ before do
+ sign_in(user)
+ visit diffs_project_merge_request_path(project, merge_request)
+ wait_for_requests
+ scroll_into_view
+ end
+
+ it 'sees file tree sidebar' do
+ expect(page).to have_selector('.file-row[role=button]')
+ end
+
+ # TODO: fix this test
+ # For some reason the browser in CI doesn't update the file tree sidebar when review bar is shown
+ # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118378#note_1403906356
+ #
+ # it 'has last entry visible with discussions enabled' do
+ # add_diff_line_draft_comment('foo', find('.line_holder', match: :first))
+ # scroll_into_view
+ # scroll_to_end
+ # button = find_all('.file-row[role=button]').last
+ # expect(button.obscured?).to be_falsy
+ # end
+
+ shared_examples 'shows last visible file in sidebar' do
+ it 'shows last file' do
+ scroll_to_end
+ button = find_all('.file-row[role=button]').last
+ title = button.find('[data-testid=file-row-name-container]')[:title]
+ button.click
+ expect(page).to have_selector(".file-title-name[title*=\"#{title}\"]")
+ end
+ end
+
+ it_behaves_like 'shows last visible file in sidebar'
+
+ context 'when viewing using file-by-file mode' do
+ let(:user) { create(:user, view_diffs_file_by_file: true) }
+
+ it_behaves_like 'shows last visible file in sidebar'
+ end
+
+ def scroll_into_view
+ sidebar.execute_script("this.scrollIntoView({ block: 'end' })")
+ end
+
+ def scroll_to_end
+ sidebar_scroller.execute_script('this.scrollBy(0,99999)')
+ end
+end
diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
index 7d024103943..ca12e0e2b65 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
@@ -67,7 +67,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees branch pipelines and detached merge request pipelines in correct order' do
page.within('.ci-table') do
- expect(page).to have_selector('.ci-created', count: 2)
+ expect(page).to have_selector('[data-testid="ci-badge-created"]', count: 2)
expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}")
end
end
@@ -103,7 +103,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees branch pipelines and detached merge request pipelines in correct order' do
page.within('.ci-table') do
- expect(page).to have_selector('.ci-pending', count: 4)
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]', count: 4)
expect(all('[data-testid="pipeline-url-link"]')[0])
.to have_content("##{detached_merge_request_pipeline_2.id}")
@@ -246,7 +246,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees a branch pipeline in pipeline tab' do
page.within('.ci-table') do
- expect(page).to have_selector('.ci-created', count: 1)
+ expect(page).to have_selector('[data-testid="ci-badge-created"]', count: 1)
expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{push_pipeline.id}")
end
end
@@ -299,7 +299,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees branch pipelines and detached merge request pipelines in correct order' do
page.within('.ci-table') do
- expect(page).to have_selector('.ci-pending', count: 2)
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]', count: 2)
expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}")
end
end
@@ -315,7 +315,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees pipeline list in forked project' do
visit project_pipelines_path(forked_project)
- expect(page).to have_selector('.ci-pending', count: 2)
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]', count: 2)
end
context 'when a user updated a merge request from a forked project to the parent project' do
@@ -341,7 +341,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees branch pipelines and detached merge request pipelines in correct order' do
page.within('.ci-table') do
- expect(page).to have_selector('.ci-pending', count: 4)
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]', count: 4)
expect(all('[data-testid="pipeline-url-link"]')[0])
.to have_content("##{detached_merge_request_pipeline_2.id}")
@@ -384,7 +384,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request',
it 'sees pipeline list in forked project' do
visit project_pipelines_path(forked_project)
- expect(page).to have_selector('.ci-pending', count: 4)
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]', count: 4)
end
end
diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb
index f92ce3865a9..faa46ff4df1 100644
--- a/spec/features/merge_request/user_sees_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_pipelines_spec.rb
@@ -41,8 +41,8 @@ RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :co
wait_for_requests
- page.within('[data-testid="pipeline-table-row"]') do
- expect(page).to have_selector('.ci-success')
+ page.within(find('[data-testid="pipeline-table-row"]', match: :first)) do
+ expect(page).to have_selector('[data-testid="ci-badge-passed"]')
expect(page).to have_content(pipeline.id)
expect(page).to have_content('API')
expect(page).to have_css('[data-testid="pipeline-mini-graph"]')
@@ -161,7 +161,7 @@ RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :co
create_merge_request_pipeline
act_on_security_warning(action: 'Cancel')
- check_no_pipelines
+ check_no_new_pipeline_created
end
end
@@ -198,9 +198,9 @@ RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :co
def check_pipeline(expected_project:)
page.within('.ci-table') do
- expect(page).to have_selector('.commit', count: 2)
+ expect(page).to have_selector('[data-testid="pipeline-table-row"]', count: 4)
- page.within(first('.commit')) do
+ page.within(first('[data-testid="pipeline-table-row"]')) do
page.within('.pipeline-tags') do
expect(page.find('[data-testid="pipeline-url-link"]')[:href]).to include(expected_project.full_path)
expect(page).to have_content('merge request')
@@ -227,9 +227,9 @@ RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :co
end
end
- def check_no_pipelines
+ def check_no_new_pipeline_created
page.within('.ci-table') do
- expect(page).to have_selector('.commit', count: 1)
+ expect(page).to have_selector('[data-testid="pipeline-table-row"]', count: 2)
end
end
end
diff --git a/spec/features/merge_requests/user_mass_updates_spec.rb b/spec/features/merge_requests/user_mass_updates_spec.rb
index 45d57cf8374..2fa70b14957 100644
--- a/spec/features/merge_requests/user_mass_updates_spec.rb
+++ b/spec/features/merge_requests/user_mass_updates_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review_workflow do
+ include ListboxHelpers
+
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
let(:user2) { create(:user) }
@@ -110,8 +112,7 @@ RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :cod
def change_status(text)
click_button 'Bulk edit'
check 'Select all'
- click_button 'Select status'
- click_button text
+ select_from_listbox(text, from: 'Select status')
click_update_merge_requests_button
end
diff --git a/spec/features/monitor_sidebar_link_spec.rb b/spec/features/monitor_sidebar_link_spec.rb
index 6a1413c04f6..6e464cb8752 100644
--- a/spec/features/monitor_sidebar_link_spec.rb
+++ b/spec/features/monitor_sidebar_link_spec.rb
@@ -11,7 +11,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
before do
project.add_role(user, role) if role
sign_in(user)
- stub_feature_flags(remove_monitor_metrics: false)
end
shared_examples 'shows Monitor menu based on the access level' do
@@ -53,7 +52,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
expect(page).to have_link('Incidents', href: project_incidents_path(project))
expect(page).to have_link('Environments', href: project_environments_path(project))
- expect(page).not_to have_link('Metrics', href: project_metrics_dashboard_path(project))
expect(page).not_to have_link('Alerts', href: project_alert_management_index_path(project))
expect(page).not_to have_link('Error Tracking', href: project_error_tracking_index_path(project))
expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project))
@@ -85,7 +83,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
expect(page).to have_link('Incidents', href: project_incidents_path(project))
expect(page).to have_link('Environments', href: project_environments_path(project))
- expect(page).not_to have_link('Metrics', href: project_metrics_dashboard_path(project))
expect(page).not_to have_link('Alerts', href: project_alert_management_index_path(project))
expect(page).not_to have_link('Error Tracking', href: project_error_tracking_index_path(project))
expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project))
@@ -99,7 +96,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
it 'has the correct `Monitor` menu items' do
visit project_issues_path(project)
- expect(page).to have_link('Metrics', href: project_metrics_dashboard_path(project))
expect(page).to have_link('Incidents', href: project_incidents_path(project))
expect(page).to have_link('Environments', href: project_environments_path(project))
expect(page).to have_link('Error Tracking', href: project_error_tracking_index_path(project))
@@ -116,7 +112,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
it 'has the correct `Monitor` menu items' do
visit project_issues_path(project)
- expect(page).to have_link('Metrics', href: project_metrics_dashboard_path(project))
expect(page).to have_link('Alerts', href: project_alert_management_index_path(project))
expect(page).to have_link('Incidents', href: project_incidents_path(project))
expect(page).to have_link('Environments', href: project_environments_path(project))
@@ -132,7 +127,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category
it 'has the correct `Monitor` menu items' do
visit project_issues_path(project)
- expect(page).to have_link('Metrics', href: project_metrics_dashboard_path(project))
expect(page).to have_link('Alerts', href: project_alert_management_index_path(project))
expect(page).to have_link('Incidents', href: project_incidents_path(project))
expect(page).to have_link('Environments', href: project_environments_path(project))
diff --git a/spec/features/nav/new_nav_callout_spec.rb b/spec/features/nav/new_nav_callout_spec.rb
new file mode 100644
index 00000000000..22e7fd6b9f9
--- /dev/null
+++ b/spec/features/nav/new_nav_callout_spec.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'new navigation callout', :js, feature_category: :navigation do
+ let_it_be(:callout_title) { _('Welcome to a new navigation experience') }
+ let(:dot_com) { false }
+
+ before do
+ allow(Gitlab).to receive(:com?).and_return(dot_com)
+ sign_in(user)
+ visit root_path
+ end
+
+ context 'with new navigation toggled on' do
+ let_it_be(:user) { create(:user, created_at: Date.new(2023, 6, 1), use_new_navigation: true) }
+
+ it 'shows a callout about the new navigation' do
+ expect(page).to have_content callout_title
+ end
+
+ context 'when user dismisses callout' do
+ it 'hides callout' do
+ expect(page).to have_content callout_title
+
+ page.within(find('[data-feature-id="new_navigation_callout"]')) do
+ find('[data-testid="close-icon"]').click
+ end
+
+ wait_for_requests
+
+ visit root_path
+
+ expect(page).not_to have_content callout_title
+ end
+ end
+ end
+
+ context 'when user registered on or after June 2nd 2023' do
+ let_it_be(:user) { create(:user, created_at: Date.new(2023, 6, 2), use_new_navigation: true) }
+
+ context 'when on GitLab.com' do
+ let(:dot_com) { true }
+
+ it 'does not show the callout about the new navigation' do
+ expect(page).not_to have_content callout_title
+ end
+ end
+
+ context 'when on a self-managed instance' do
+ it 'shows the callout about the new navigation' do
+ expect(page).to have_content callout_title
+ end
+ end
+ end
+
+ context 'with new navigation toggled off' do
+ let_it_be(:user) { create(:user, created_at: Date.new(2023, 6, 1), use_new_navigation: false) }
+
+ it 'does not show the callout' do
+ expect(page).not_to have_content callout_title
+ end
+ end
+end
diff --git a/spec/features/nav/new_nav_toggle_spec.rb b/spec/features/nav/new_nav_toggle_spec.rb
index 2cdaf12bb15..6872058be8e 100644
--- a/spec/features/nav/new_nav_toggle_spec.rb
+++ b/spec/features/nav/new_nav_toggle_spec.rb
@@ -7,75 +7,53 @@ RSpec.describe 'new navigation toggle', :js, feature_category: :navigation do
before do
user.update!(use_new_navigation: user_preference)
- stub_feature_flags(super_sidebar_nav: new_nav_ff)
sign_in(user)
visit explore_projects_path
end
- context 'with feature flag off' do
- let(:new_nav_ff) { false }
+ context 'when user has new nav disabled' do
+ let(:user_preference) { false }
- where(:user_preference) do
- [true, false]
- end
+ it 'allows to enable new nav', :aggregate_failures do
+ within '.js-nav-user-dropdown' do
+ find('a[data-toggle="dropdown"]').click
+ expect(page).to have_content('Navigation redesign')
- with_them do
- it 'shows old topbar user dropdown with no way to toggle to new nav' do
- within '.js-header-content .js-nav-user-dropdown' do
- find('a[data-toggle="dropdown"]').click
- expect(page).not_to have_content('Navigation redesign')
- end
+ toggle = page.find('.gl-toggle:not(.is-checked)')
+ toggle.click # reloads the page
end
- end
- end
-
- context 'with feature flag on' do
- let(:new_nav_ff) { true }
- context 'when user has new nav disabled' do
- let(:user_preference) { false }
+ wait_for_requests
- it 'allows to enable new nav', :aggregate_failures do
- within '.js-nav-user-dropdown' do
- find('a[data-toggle="dropdown"]').click
- expect(page).to have_content('Navigation redesign')
-
- toggle = page.find('.gl-toggle:not(.is-checked)')
- toggle.click # reloads the page
- end
-
- wait_for_requests
-
- expect(user.reload.use_new_navigation).to eq true
- end
+ 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
+ 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 }
+ context 'when user has new nav enabled' do
+ let(:user_preference) { true }
- it 'allows to disable new nav', :aggregate_failures do
- within '[data-testid="super-sidebar"] [data-testid="user-dropdown"]' do
- click_button "#{user.name} user’s menu"
- expect(page).to have_content('Navigation redesign')
+ it 'allows to disable new nav', :aggregate_failures do
+ within '[data-testid="super-sidebar"] [data-testid="user-dropdown"]' do
+ click_button "#{user.name} user’s menu"
+ expect(page).to have_content('Navigation redesign')
- toggle = page.find('.gl-toggle.is-checked')
- toggle.click # reloads the page
- end
+ toggle = page.find('.gl-toggle.is-checked')
+ toggle.click # reloads the page
+ end
- wait_for_requests
+ wait_for_requests
- expect(user.reload.use_new_navigation).to eq false
- end
+ 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
+ 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
diff --git a/spec/features/nav/pinned_nav_items_spec.rb b/spec/features/nav/pinned_nav_items_spec.rb
index 308350d5166..cf53e0a322a 100644
--- a/spec/features/nav/pinned_nav_items_spec.rb
+++ b/spec/features/nav/pinned_nav_items_spec.rb
@@ -89,7 +89,7 @@ RSpec.describe 'Navigation menu item pinning', :js, feature_category: :navigatio
before do
within '#super-sidebar' do
click_on 'Operate'
- add_pin('Package Registry')
+ add_pin('Terraform states')
add_pin('Terraform modules')
wait_for_requests
end
@@ -97,8 +97,8 @@ RSpec.describe 'Navigation menu item pinning', :js, feature_category: :navigatio
it 'can be unpinned from within the pinned section' do
within '[data-testid="pinned-nav-items"]' do
- remove_pin('Package Registry')
- expect(page).not_to have_content 'Package Registry'
+ remove_pin('Terraform states')
+ expect(page).not_to have_content 'Terraform states'
end
end
@@ -117,7 +117,7 @@ RSpec.describe 'Navigation menu item pinning', :js, feature_category: :navigatio
it 'can be reordered' do
within '[data-testid="pinned-nav-items"]' do
pinned_items = page.find_all('a').map(&:text)
- item2 = page.find('a', text: 'Package Registry')
+ item2 = page.find('a', text: 'Terraform states')
item3 = page.find('a', text: 'Terraform modules')
expect(pinned_items[1..2]).to eq [item2.text, item3.text]
drag_item(item3, to: item2)
diff --git a/spec/features/participants_autocomplete_spec.rb b/spec/features/participants_autocomplete_spec.rb
index 272365ac7ee..084bf609a0d 100644
--- a/spec/features/participants_autocomplete_spec.rb
+++ b/spec/features/participants_autocomplete_spec.rb
@@ -2,12 +2,13 @@
require 'spec_helper'
-RSpec.describe 'Member autocomplete', :js, feature_category: :team_planning do
+RSpec.describe 'Member autocomplete', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:user) { create(:user) }
let_it_be(:author) { create(:user) }
let(:note) { create(:note, noteable: noteable, project: noteable.project) }
+ let(:noteable) { create(:issue, author: author, project: project) }
before do
note # actually create the note
@@ -29,9 +30,27 @@ RSpec.describe 'Member autocomplete', :js, feature_category: :team_planning do
end
end
- context 'adding a new note on a Issue' do
- let(:noteable) { create(:issue, author: author, project: project) }
+ context 'for a member of a private group invited to the project' do
+ let_it_be(:private_group) { create(:group, :private) }
+ let_it_be(:private_group_member) { create(:user, username: 'private-a') }
+
+ before_all do
+ project.add_developer user
+
+ private_group.add_developer private_group_member
+ create(:project_group_link, group: private_group, project: project)
+ end
+
+ it 'suggests member of private group' do
+ visit project_issue_path(project, noteable)
+ fill_in 'Comment', with: '@priv'
+
+ expect(find_autocomplete_menu).to have_text(private_group_member.username)
+ end
+ end
+
+ context 'adding a new note on a Issue' do
before do
visit project_issue_path(project, noteable)
end
diff --git a/spec/features/profiles/password_spec.rb b/spec/features/profiles/password_spec.rb
index c0c573d2f20..05e492e7021 100644
--- a/spec/features/profiles/password_spec.rb
+++ b/spec/features/profiles/password_spec.rb
@@ -86,10 +86,11 @@ RSpec.describe 'Profile > Password', feature_category: :user_profile do
Rails.application.reload_routes!
end
- it 'renders 404' do
+ it 'renders 404', :js do
visit edit_profile_password_path
- expect(page).to have_gitlab_http_status(:not_found)
+ expect(page).to have_title('Not Found')
+ expect(page).to have_content('Page Not Found')
end
end
end
diff --git a/spec/features/profiles/two_factor_auths_spec.rb b/spec/features/profiles/two_factor_auths_spec.rb
index e8ff8416722..b52f66cfcee 100644
--- a/spec/features/profiles/two_factor_auths_spec.rb
+++ b/spec/features/profiles/two_factor_auths_spec.rb
@@ -62,6 +62,40 @@ RSpec.describe 'Two factor auths', feature_category: :user_profile do
expect(page).to have_link('Try the troubleshooting steps here.', href: help_page_path('user/profile/account/two_factor_authentication.md', anchor: 'troubleshooting'))
end
end
+
+ context 'when two factor is enforced in global settings' do
+ before do
+ stub_application_setting(require_two_factor_authentication: true)
+ end
+
+ context 'when invalid pin is provided' do
+ let_it_be(:user) { create(:omniauth_user) }
+
+ it 'renders alert for global settings' do
+ visit profile_two_factor_auth_path
+
+ fill_in 'pin_code', with: '123'
+ click_button 'Register with two-factor app'
+
+ expect(page).to have_content('The global settings require you to enable Two-Factor Authentication for your account. You need to do this before ')
+ end
+ end
+
+ context 'when invalid password is provided' do
+ let_it_be(:user) { create(:user) }
+
+ it 'renders a error alert with a link to the troubleshooting section' do
+ visit profile_two_factor_auth_path
+
+ register_2fa(user.current_otp, 'abc')
+ click_button 'Register with two-factor app'
+
+ expect(page).to have_content(
+ 'The global settings require you to enable Two-Factor Authentication for your account'
+ )
+ end
+ end
+ end
end
context 'when user has two-factor authentication enabled' do
diff --git a/spec/features/profiles/user_edit_profile_spec.rb b/spec/features/profiles/user_edit_profile_spec.rb
index a6dcbc31dc4..de8719630ee 100644
--- a/spec/features/profiles/user_edit_profile_spec.rb
+++ b/spec/features/profiles/user_edit_profile_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe 'User edit profile', feature_category: :user_profile do
let_it_be(:user) { create(:user) }
before do
+ stub_feature_flags(edit_user_profile_vue: false)
sign_in(user)
visit(profile_path)
end
@@ -529,13 +530,13 @@ RSpec.describe 'User edit profile', feature_category: :user_profile do
end
it 'allows the user to select a time zone from a dropdown list of options' do
- expect(page.find('.user-time-preferences .dropdown')).not_to have_css('.show')
+ expect(page).not_to have_selector('.user-time-preferences [data-testid="base-dropdown-menu"]')
- page.find('.user-time-preferences .dropdown').click
+ page.find('.user-time-preferences .gl-new-dropdown-toggle').click
- expect(page.find('.user-time-preferences .dropdown')).to have_css('.show')
+ expect(page.find('.user-time-preferences [data-testid="base-dropdown-menu"]')).to be_visible
- page.find("button", text: "Arizona").click
+ page.find("li", text: "Arizona").click
expect(page).to have_field(:user_timezone, with: 'America/Phoenix', type: :hidden)
end
diff --git a/spec/features/profiles/user_search_settings_spec.rb b/spec/features/profiles/user_search_settings_spec.rb
index 932ea11075a..96fe01cd0c2 100644
--- a/spec/features/profiles/user_search_settings_spec.rb
+++ b/spec/features/profiles/user_search_settings_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe 'User searches their settings', :js, feature_category: :user_prof
before do
sign_in(user)
+ stub_feature_flags(edit_user_profile_vue: false)
end
context 'in profile page' do
diff --git a/spec/features/profiles/user_visits_profile_spec.rb b/spec/features/profiles/user_visits_profile_spec.rb
index ad265fbae9e..578025e1494 100644
--- a/spec/features/profiles/user_visits_profile_spec.rb
+++ b/spec/features/profiles/user_visits_profile_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe 'User visits their profile', feature_category: :user_profile do
before do
stub_feature_flags(profile_tabs_vue: false)
+ stub_feature_flags(edit_user_profile_vue: false)
sign_in(user)
end
diff --git a/spec/features/project_group_variables_spec.rb b/spec/features/project_group_variables_spec.rb
index 966c05bb4cb..cc01de736cb 100644
--- a/spec/features/project_group_variables_spec.rb
+++ b/spec/features/project_group_variables_spec.rb
@@ -13,9 +13,22 @@ RSpec.describe 'Project group variables', :js, feature_category: :secrets_manage
let(:key1) { 'test_key' }
let(:key2) { 'test_key2' }
let(:key3) { 'test_key3' }
- let!(:ci_variable) { create(:ci_group_variable, group: group, key: key1) }
- let!(:ci_variable2) { create(:ci_group_variable, group: subgroup, key: key2) }
- let!(:ci_variable3) { create(:ci_group_variable, group: subgroup_nested, key: key3) }
+ let(:env1) { 'test_env' }
+ let(:env2) { 'test_env2' }
+ let(:env3) { 'test_env3' }
+ let(:attributes1) { 'Expanded' }
+ let(:attributes2) { 'Protected' }
+ let(:attributes3) { 'Masked' }
+ let!(:ci_variable) { create(:ci_group_variable, group: group, key: key1, environment_scope: env1) }
+
+ let!(:ci_variable2) do
+ create(:ci_group_variable, group: subgroup, key: key2, environment_scope: env2, protected: true, raw: true)
+ end
+
+ let!(:ci_variable3) do
+ create(:ci_group_variable, group: subgroup_nested, key: key3, environment_scope: env3, masked: true, raw: true)
+ end
+
let(:project_path) { project_settings_ci_cd_path(project) }
let(:project2_path) { project_settings_ci_cd_path(project2) }
let(:project3_path) { project_settings_ci_cd_path(project3) }
@@ -26,39 +39,70 @@ RSpec.describe 'Project group variables', :js, feature_category: :secrets_manage
group.add_owner(user)
end
- it 'project in group shows inherited vars from ancestor group' do
- visit project_path
- expect(page).to have_content(key1)
- expect(page).to have_content(group.name)
- end
+ shared_examples 'renders correct column headers' do
+ it "shows inherited CI variables table with correct columns" do
+ page.within('[data-testid="inherited-ci-variable-table"]') do
+ # Wait for vue app to load
+ wait_for_requests
+
+ columns = find_all('[role=columnheader]')
- it 'project in subgroup shows inherited vars from all ancestor groups' do
- visit project2_path
- expect(page).to have_content(key1)
- expect(page).to have_content(key2)
- expect(page).to have_content(group.name)
- expect(page).to have_content(subgroup.name)
+ expect(columns[0].text).to eq('Key')
+ expect(columns[1].text).to eq('Attributes')
+ expect(columns[2].text).to eq('Environments')
+ expect(columns[3].text).to eq('Group')
+ end
+ end
end
- it 'project in nested subgroup shows inherited vars from all ancestor groups' do
- visit project3_path
- expect(page).to have_content(key1)
- expect(page).to have_content(key2)
- expect(page).to have_content(key3)
- expect(page).to have_content(group.name)
- expect(page).to have_content(subgroup.name)
- expect(page).to have_content(subgroup_nested.name)
+ describe 'project in group' do
+ before do
+ visit project_path
+ end
+
+ it_behaves_like 'renders correct column headers'
+
+ it 'shows inherited variable info from ancestor group' do
+ expect(page).to have_content(key1)
+ expect(page).to have_content(attributes1)
+ expect(page).to have_content(group.name)
+ end
end
- it 'project origin keys link to ancestor groups ci_cd settings' do
- visit project_path
+ describe 'project in subgroup' do
+ before do
+ visit project2_path
+ end
+
+ it_behaves_like 'renders correct column headers'
- find('.group-origin-link').click
+ it 'shows inherited variable info from all ancestor groups' do
+ expect(page).to have_content(key1)
+ expect(page).to have_content(key2)
+ expect(page).to have_content(attributes1)
+ expect(page).to have_content(attributes2)
+ expect(page).to have_content(group.name)
+ expect(page).to have_content(subgroup.name)
+ end
+ end
+
+ describe 'project in nested subgroup' do
+ before do
+ visit project3_path
+ end
- wait_for_requests
+ it_behaves_like 'renders correct column headers'
- page.within('[data-testid="ci-variable-table"]') do
- expect(find('.js-ci-variable-row:nth-child(1) [data-label="Key"]').text).to eq(key1)
+ it 'shows inherited variable info from all ancestor groups' do
+ expect(page).to have_content(key1)
+ expect(page).to have_content(key2)
+ expect(page).to have_content(key3)
+ expect(page).to have_content(attributes1)
+ expect(page).to have_content(attributes2)
+ expect(page).to have_content(attributes3)
+ expect(page).to have_content(group.name)
+ expect(page).to have_content(subgroup.name)
+ expect(page).to have_content(subgroup_nested.name)
end
end
end
diff --git a/spec/features/projects/active_tabs_spec.rb b/spec/features/projects/active_tabs_spec.rb
index c27c9530f61..594c2b442aa 100644
--- a/spec/features/projects/active_tabs_spec.rb
+++ b/spec/features/projects/active_tabs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project active tab', feature_category: :projects do
+RSpec.describe 'Project active tab', feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository, :with_namespace_settings) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/activity/rss_spec.rb b/spec/features/projects/activity/rss_spec.rb
index 5297f30220d..fdb70092917 100644
--- a/spec/features/projects/activity/rss_spec.rb
+++ b/spec/features/projects/activity/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Activity RSS', feature_category: :projects do
+RSpec.describe 'Project Activity RSS', feature_category: :groups_and_projects do
let(:project) { create(:project, :public) }
let(:user) { project.first_owner }
let(:path) { activity_project_path(project) }
diff --git a/spec/features/projects/activity/user_sees_activity_spec.rb b/spec/features/projects/activity/user_sees_activity_spec.rb
index cfa62415c49..5335b9d0e95 100644
--- a/spec/features/projects/activity/user_sees_activity_spec.rb
+++ b/spec/features/projects/activity/user_sees_activity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Activity > User sees activity', feature_category: :projects do
+RSpec.describe 'Projects > Activity > User sees activity', feature_category: :groups_and_projects do
let(:project) { create(:project, :repository, :public) }
let(:user) { project.creator }
let(:issue) { create(:issue, project: project) }
diff --git a/spec/features/projects/activity/user_sees_private_activity_spec.rb b/spec/features/projects/activity/user_sees_private_activity_spec.rb
index e0aaf1dbbc3..f475cb6d941 100644
--- a/spec/features/projects/activity/user_sees_private_activity_spec.rb
+++ b/spec/features/projects/activity/user_sees_private_activity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > Activity > User sees private activity', :js, feature_category: :projects do
+RSpec.describe 'Project > Activity > User sees private activity', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :public) }
let(:author) { create(:user) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/artifacts/user_browses_artifacts_spec.rb b/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
index 6948a26196b..04d93b11ca9 100644
--- a/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
+++ b/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
@@ -33,8 +33,8 @@ RSpec.describe "User browses artifacts", feature_category: :build_artifacts do
page.within(".tree-table") do
expect(page).to have_no_content("..")
.and have_content("other_artifacts_0.1.2")
- .and have_content("ci_artifacts.txt 27 Bytes")
- .and have_content("rails_sample.jpg 34.4 KB")
+ .and have_content("ci_artifacts.txt 27 B")
+ .and have_content("rails_sample.jpg 34.4 KiB")
end
page.within(".build-header") do
diff --git a/spec/features/projects/blobs/blame_spec.rb b/spec/features/projects/blobs/blame_spec.rb
index 9f061a2ff14..798cd401dac 100644
--- a/spec/features/projects/blobs/blame_spec.rb
+++ b/spec/features/projects/blobs/blame_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'File blame', :js, feature_category: :projects do
+RSpec.describe 'File blame', :js, feature_category: :groups_and_projects do
include TreeHelper
let_it_be(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
index 48ee39dad19..f0058e75e52 100644
--- a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
+++ b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js, feature_category: :projects do
+RSpec.describe 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js, feature_category: :groups_and_projects do
include TreeHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/projects/blobs/blob_show_spec.rb b/spec/features/projects/blobs/blob_show_spec.rb
index cd1dde55e30..62cd9fd9a56 100644
--- a/spec/features/projects/blobs/blob_show_spec.rb
+++ b/spec/features/projects/blobs/blob_show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'File blob', :js, feature_category: :projects do
+RSpec.describe 'File blob', :js, feature_category: :groups_and_projects do
include MobileHelpers
let(:project) { create(:project, :public, :repository) }
@@ -579,66 +579,6 @@ RSpec.describe 'File blob', :js, feature_category: :projects do
end
end
- describe '.gitlab/dashboards/custom-dashboard.yml' do
- let(:remove_monitor_metrics) { false }
-
- before do
- stub_feature_flags(remove_monitor_metrics: remove_monitor_metrics)
-
- project.add_maintainer(project.creator)
-
- Files::CreateService.new(
- project,
- project.creator,
- start_branch: 'master',
- branch_name: 'master',
- commit_message: "Add .gitlab/dashboards/custom-dashboard.yml",
- file_path: '.gitlab/dashboards/custom-dashboard.yml',
- file_content: file_content
- ).execute
-
- visit_blob('.gitlab/dashboards/custom-dashboard.yml')
- end
-
- context 'valid dashboard file' do
- let(:file_content) { File.read(Rails.root.join('config/prometheus/common_metrics.yml')) }
-
- it 'displays an auxiliary viewer' do
- aggregate_failures do
- # shows that dashboard yaml is valid
- expect(page).to have_content('Metrics Dashboard YAML definition is valid.')
-
- # shows a learn more link
- expect(page).to have_link('Learn more')
- end
- end
-
- context 'when metrics dashboard feature is unavailable' do
- let(:remove_monitor_metrics) { true }
-
- it 'displays the blob without an auxiliary viewer' do
- expect(page).to have_content('Environment metrics')
- expect(page).not_to have_content('Metrics Dashboard YAML definition', wait: 0)
- end
- end
- end
-
- context 'invalid dashboard file' do
- let(:file_content) { "dashboard: 'invalid'" }
-
- it 'displays an auxiliary viewer' do
- aggregate_failures do
- # shows that dashboard yaml is invalid
- expect(page).to have_content('Metrics Dashboard YAML definition is invalid:')
- expect(page).to have_content("panel_groups: should be an array of panel_groups objects")
-
- # shows a learn more link
- expect(page).to have_link('Learn more')
- end
- end
- end
- end
-
context 'LICENSE' do
before do
visit_blob('LICENSE')
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index 6e335871ed1..e8a9edcc0cc 100644
--- a/spec/features/projects/blobs/edit_spec.rb
+++ b/spec/features/projects/blobs/edit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Editing file blob', :js, feature_category: :projects do
+RSpec.describe 'Editing file blob', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
include TreeHelper
include Features::BlobSpecHelpers
@@ -23,15 +23,11 @@ RSpec.describe 'Editing file blob', :js, feature_category: :projects do
end
def edit_and_commit(commit_changes: true, is_diff: false)
- set_default_button('edit')
- refresh
- wait_for_requests
-
if is_diff
first('.js-diff-more-actions').click
click_link('Edit in single-file editor')
else
- click_link('Edit')
+ edit_in_single_file_editor
end
fill_editor(content: 'class NextFeature\\nend\\n')
@@ -83,29 +79,20 @@ RSpec.describe 'Editing file blob', :js, feature_category: :projects do
end
context 'blob edit toolbar' do
- toolbar_buttons = [
- "Add bold text",
- "Add italic text",
- "Add strikethrough text",
- "Insert a quote",
- "Insert code",
- "Add a link",
- "Add a bullet list",
- "Add a numbered list",
- "Add a checklist",
- "Add a collapsible section",
- "Add a table"
- ]
-
- it "does not have any buttons" do
- stub_feature_flags(source_editor_toolbar: true)
- visit project_edit_blob_path(project, tree_join(branch, readme_file_path))
- buttons = page.all('.file-buttons .md-header-toolbar button[type="button"]')
- expect(buttons.length).to eq(0)
- end
-
- it "has defined set of toolbar buttons when the flag is off" do
- stub_feature_flags(source_editor_toolbar: false)
+ def has_toolbar_buttons
+ toolbar_buttons = [
+ "Add bold text",
+ "Add italic text",
+ "Add strikethrough text",
+ "Insert a quote",
+ "Insert code",
+ "Add a link",
+ "Add a bullet list",
+ "Add a numbered list",
+ "Add a checklist",
+ "Add a collapsible section",
+ "Add a table"
+ ]
visit project_edit_blob_path(project, tree_join(branch, readme_file_path))
buttons = page.all('.file-buttons .md-header-toolbar button[type="button"]')
expect(buttons.length).to eq(toolbar_buttons.length)
@@ -113,6 +100,16 @@ RSpec.describe 'Editing file blob', :js, feature_category: :projects do
expect(buttons[i]['title']).to include(button_title)
end
end
+
+ it "has defined set of toolbar buttons when the flag is on" do
+ stub_feature_flags(source_editor_toolbar: true)
+ has_toolbar_buttons
+ end
+
+ it "has defined set of toolbar buttons when the flag is off" do
+ stub_feature_flags(source_editor_toolbar: false)
+ has_toolbar_buttons
+ end
end
context 'from blob file path' do
diff --git a/spec/features/projects/blobs/shortcuts_blob_spec.rb b/spec/features/projects/blobs/shortcuts_blob_spec.rb
index 03276a737da..162066540d9 100644
--- a/spec/features/projects/blobs/shortcuts_blob_spec.rb
+++ b/spec/features/projects/blobs/shortcuts_blob_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Blob shortcuts', :js, feature_category: :projects do
+RSpec.describe 'Blob shortcuts', :js, feature_category: :groups_and_projects do
include TreeHelper
let(:project) { create(:project, :public, :repository) }
let(:path) { project.repository.ls_files(project.repository.root_ref)[0] }
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 b723bd5690a..1990526b5fc 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled', :js, feature_category: :projects do
+RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled', :js, feature_category: :groups_and_projects do
include CookieHelper
let(:project) { create(:project, :empty_repo) }
diff --git a/spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb b/spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb
index 3b383793de2..bef4e5f89b1 100644
--- a/spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb
+++ b/spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views pipeline editor button on root ci config file', :js, feature_category: :projects do
+RSpec.describe 'User views pipeline editor button on root ci config file', :js, feature_category: :groups_and_projects do
include Features::BlobSpecHelpers
let_it_be(:user) { create(:user) }
@@ -19,6 +19,8 @@ RSpec.describe 'User views pipeline editor button on root ci config file', :js,
project.repository.create_file(user, project.ci_config_path_or_default, 'test', message: 'testing', branch_name: 'master')
visit project_blob_path(project, File.join('master', '.my-config.yml'))
+ click_button 'Edit'
+
expect(page).to have_content('Edit in pipeline editor')
end
@@ -26,6 +28,8 @@ RSpec.describe 'User views pipeline editor button on root ci config file', :js,
project.repository.create_file(user, '.my-sub-config.yml', 'test', message: 'testing', branch_name: 'master')
visit project_blob_path(project, File.join('master', '.my-sub-config.yml'))
+ click_button 'Edit'
+
expect(page).not_to have_content('Edit in pipeline editor')
end
end
@@ -36,6 +40,9 @@ RSpec.describe 'User views pipeline editor button on root ci config file', :js,
end
it 'does not shows the Pipeline Editor button' do
visit project_blob_path(project, File.join('master', '.my-config.yml'))
+
+ click_button 'Edit'
+
expect(page).not_to have_content('Edit in pipeline editor')
end
end
diff --git a/spec/features/projects/branches/download_buttons_spec.rb b/spec/features/projects/branches/download_buttons_spec.rb
index 80ccd9c1417..2092af537e8 100644
--- a/spec/features/projects/branches/download_buttons_spec.rb
+++ b/spec/features/projects/branches/download_buttons_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Download buttons in branches page', feature_category: :projects do
+RSpec.describe 'Download buttons in branches page', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:role) { :developer }
let(:status) { 'success' }
diff --git a/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb b/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
index 9afd8b3263a..0badde99bdb 100644
--- a/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
+++ b/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New Branch Ref Dropdown', :js, feature_category: :projects do
+RSpec.describe 'New Branch Ref Dropdown', :js, feature_category: :groups_and_projects do
include ListboxHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/branches/user_creates_branch_spec.rb b/spec/features/projects/branches/user_creates_branch_spec.rb
index 5aa10a8d4b0..8d636dacb75 100644
--- a/spec/features/projects/branches/user_creates_branch_spec.rb
+++ b/spec/features/projects/branches/user_creates_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates branch', :js, feature_category: :projects do
+RSpec.describe 'User creates branch', :js, feature_category: :groups_and_projects do
include Features::BranchesHelpers
let_it_be(:group) { create(:group, :public) }
diff --git a/spec/features/projects/branches/user_deletes_branch_spec.rb b/spec/features/projects/branches/user_deletes_branch_spec.rb
index 92b5f176d2d..7e7ab4b2a47 100644
--- a/spec/features/projects/branches/user_deletes_branch_spec.rb
+++ b/spec/features/projects/branches/user_deletes_branch_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User deletes branch", :js, feature_category: :projects do
+RSpec.describe "User deletes branch", :js, feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:user) }
@@ -23,7 +23,8 @@ RSpec.describe "User deletes branch", :js, feature_category: :projects do
branch_search.native.send_keys(:enter)
page.within(".js-branch-improve\\/awesome") do
- find('.js-delete-branch-button').click
+ click_button 'More actions'
+ find('[data-testid="delete-branch-button"]').click
end
accept_gl_confirm(button_text: 'Yes, delete branch')
diff --git a/spec/features/projects/branches/user_views_branches_spec.rb b/spec/features/projects/branches/user_views_branches_spec.rb
index f0a1ba84ec6..52327cc6543 100644
--- a/spec/features/projects/branches/user_views_branches_spec.rb
+++ b/spec/features/projects/branches/user_views_branches_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User views branches", :js, feature_category: :projects do
+RSpec.describe "User views branches", :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { project.first_owner }
@@ -10,22 +10,41 @@ RSpec.describe "User views branches", :js, feature_category: :projects do
sign_in(user)
end
- context "all branches", :js do
+ context "all branches" do
before do
visit(project_branches_path(project))
- branch_search = find('input[data-testid="branch-search"]')
- branch_search.set('master')
- branch_search.native.send_keys(:enter)
end
- it "shows branches" do
- expect(page).to have_content("Branches").and have_content("master")
+ describe 'default branch' do
+ before do
+ search_branches('master')
+ end
- expect(page.all(".graph-side")).to all(have_content(/\d+/))
+ it "shows the default branch" do
+ expect(page).to have_content("Branches").and have_content("master")
+
+ expect(page.all(".graph-side")).to all(have_content(/\d+/))
+ end
+
+ it "does not show the \"More actions\" dropdown" do
+ expect(page).not_to have_selector('[data-testid="branch-more-actions"]')
+ end
end
- it "displays a disabled button with a tooltip for the default branch that cannot be deleted", :js do
- expect(page).to have_button('The default branch cannot be deleted', disabled: true)
+ describe 'non-default branch' do
+ before do
+ search_branches('feature')
+ end
+
+ it "shows the branches" do
+ expect(page).to have_content("Branches").and have_content("feature")
+
+ expect(page.all(".graph-side")).to all(have_content(/\d+/))
+ end
+
+ it "shows the \"More actions\" dropdown" do
+ expect(page).to have_button('More actions')
+ end
end
end
@@ -42,4 +61,10 @@ RSpec.describe "User views branches", :js, feature_category: :projects do
end
end
end
+
+ def search_branches(query)
+ branch_search = find('input[data-testid="branch-search"]')
+ branch_search.set(query)
+ branch_search.native.send_keys(:enter)
+ end
end
diff --git a/spec/features/projects/branches_spec.rb b/spec/features/projects/branches_spec.rb
index e1f1a63565c..6a13d5637af 100644
--- a/spec/features/projects/branches_spec.rb
+++ b/spec/features/projects/branches_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Branches', feature_category: :projects do
+RSpec.describe 'Branches', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public, :repository) }
let(:repository) { project.repository }
@@ -231,7 +231,7 @@ RSpec.describe 'Branches', feature_category: :projects do
visit project_branches_path(project)
page.within first('.all-branches li') do
- expect(page).to have_content 'Merge request'
+ expect(page).to have_content 'New'
end
end
@@ -242,7 +242,7 @@ RSpec.describe 'Branches', feature_category: :projects do
visit project_branches_path(project)
page.within first('.all-branches li') do
- expect(page).not_to have_content 'Merge request'
+ expect(page).not_to have_content 'New'
end
end
@@ -266,7 +266,7 @@ RSpec.describe 'Branches', feature_category: :projects do
it 'does not show merge request button' do
page.within first('.all-branches li') do
- expect(page).not_to have_content 'Merge request'
+ expect(page).not_to have_content 'New'
end
end
end
@@ -294,7 +294,7 @@ RSpec.describe 'Branches', feature_category: :projects do
it 'displays a placeholder when not available' do
page.all('.all-branches li') do |li|
- expect(li).to have_css 'svg.s24'
+ expect(li).to have_css '.pipeline-status svg.s16'
end
end
end
@@ -306,7 +306,7 @@ RSpec.describe 'Branches', feature_category: :projects do
it 'does not show placeholder or pipeline status' do
page.all('.all-branches') do |branches|
- expect(branches).not_to have_css 'svg.s24'
+ expect(branches).not_to have_css '.pipeline-status svg.s16'
end
end
end
@@ -322,6 +322,8 @@ RSpec.describe 'Branches', feature_category: :projects do
visit project_branches_path(project)
page.within first('.all-branches li') do
+ wait_for_requests
+ find('[data-testid="branch-more-actions"] .gl-new-dropdown-toggle').click
click_link 'Compare'
end
@@ -329,7 +331,7 @@ RSpec.describe 'Branches', feature_category: :projects do
end
end
- context 'on a read-only instance' do
+ context 'on a read-only instance', :js do
before do
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
end
@@ -337,7 +339,7 @@ RSpec.describe 'Branches', feature_category: :projects do
it_behaves_like 'compares branches'
end
- context 'on a read-write instance' do
+ context 'on a read-write instance', :js do
it_behaves_like 'compares branches'
end
end
@@ -364,7 +366,9 @@ RSpec.describe 'Branches', feature_category: :projects do
end
def delete_branch_and_confirm
- find('.js-delete-branch-button', match: :first).click
+ wait_for_requests
+ find('[data-testid="branch-more-actions"] .gl-new-dropdown-toggle', match: :first).click
+ find('[data-testid="delete-branch-button"]').click
within '.modal-footer' do
click_button 'Yes, delete branch'
diff --git a/spec/features/projects/classification_label_on_project_pages_spec.rb b/spec/features/projects/classification_label_on_project_pages_spec.rb
index 662b2296234..fc3e2993cc8 100644
--- a/spec/features/projects/classification_label_on_project_pages_spec.rb
+++ b/spec/features/projects/classification_label_on_project_pages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Classification label on project pages', feature_category: :projects do
+RSpec.describe 'Classification label on project pages', feature_category: :groups_and_projects do
let(:project) do
create(:project, external_authorization_classification_label: 'authorized label')
end
diff --git a/spec/features/projects/cluster_agents_spec.rb b/spec/features/projects/cluster_agents_spec.rb
index 43046db2b6c..baef26e3e63 100644
--- a/spec/features/projects/cluster_agents_spec.rb
+++ b/spec/features/projects/cluster_agents_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'ClusterAgents', :js, feature_category: :projects do
+RSpec.describe 'ClusterAgents', :js, feature_category: :groups_and_projects do
let_it_be(:token) { create(:cluster_agent_token, description: 'feature test token') }
let(:agent) { token.agent }
diff --git a/spec/features/projects/clusters_spec.rb b/spec/features/projects/clusters_spec.rb
index 3fb586bd143..e2737d62749 100644
--- a/spec/features/projects/clusters_spec.rb
+++ b/spec/features/projects/clusters_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Clusters', :js, feature_category: :projects do
+RSpec.describe 'Clusters', :js, feature_category: :groups_and_projects do
include GoogleApi::CloudPlatformHelpers
let(:project) { create(:project) }
diff --git a/spec/features/projects/commit/user_sees_pipelines_tab_spec.rb b/spec/features/projects/commit/user_sees_pipelines_tab_spec.rb
index da83bbcb63a..e44364c7f2d 100644
--- a/spec/features/projects/commit/user_sees_pipelines_tab_spec.rb
+++ b/spec/features/projects/commit/user_sees_pipelines_tab_spec.rb
@@ -36,7 +36,7 @@ RSpec.describe 'Commit > Pipelines tab', :js, feature_category: :source_code_man
wait_for_requests
page.within('[data-testid="pipeline-table-row"]') do
- expect(page).to have_selector('.ci-success')
+ expect(page).to have_selector('[data-testid="ci-badge-passed"]')
expect(page).to have_content(pipeline.id)
expect(page).to have_content('API')
expect(page).to have_css('[data-testid="pipeline-mini-graph"]')
diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb
index 4c13d23559b..beb5fa7822b 100644
--- a/spec/features/projects/compare_spec.rb
+++ b/spec/features/projects/compare_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "Compare", :js, feature_category: :projects do
+RSpec.describe "Compare", :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
@@ -189,7 +189,6 @@ RSpec.describe "Compare", :js, feature_category: :projects do
context "when super sidebar is enabled" do
before do
user.update!(use_new_navigation: true)
- stub_feature_flags(super_sidebar_nav: true)
end
it_behaves_like "compare view of branches"
diff --git a/spec/features/projects/container_registry_spec.rb b/spec/features/projects/container_registry_spec.rb
index 5306a9f15c6..493435d3439 100644
--- a/spec/features/projects/container_registry_spec.rb
+++ b/spec/features/projects/container_registry_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Container Registry', :js, feature_category: :projects do
+RSpec.describe 'Container Registry', :js, feature_category: :groups_and_projects do
include_context 'container registry tags'
let(:user) { create(:user) }
diff --git a/spec/features/projects/deploy_keys_spec.rb b/spec/features/projects/deploy_keys_spec.rb
index bd48fb68304..219e47e3f0e 100644
--- a/spec/features/projects/deploy_keys_spec.rb
+++ b/spec/features/projects/deploy_keys_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project deploy keys', :js, feature_category: :projects do
+RSpec.describe 'Project deploy keys', :js, feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project_empty_repo) }
let_it_be(:deploy_keys_project) { create(:deploy_keys_project, project: project) }
diff --git a/spec/features/projects/environments/environment_metrics_spec.rb b/spec/features/projects/environments/environment_metrics_spec.rb
deleted file mode 100644
index e212d464029..00000000000
--- a/spec/features/projects/environments/environment_metrics_spec.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Environment > Metrics', feature_category: :projects do
- include PrometheusHelpers
-
- let(:user) { create(:user) }
- let(:project) { create(:project, :with_prometheus_integration, :repository) }
- let(:pipeline) { create(:ci_pipeline, project: project) }
- let(:build) { create(:ci_build, pipeline: pipeline) }
- let(:environment) { create(:environment, project: project) }
- let(:current_time) { Time.now.utc }
- let!(:staging) { create(:environment, name: 'staging', project: project) }
-
- before do
- stub_feature_flags(remove_monitor_metrics: false)
-
- project.add_developer(user)
- stub_any_prometheus_request
-
- sign_in(user)
- stub_feature_flags(remove_monitor_metrics: false)
- end
-
- around do |example|
- travel_to(current_time) { example.run }
- end
-
- shared_examples 'has environment selector' do
- it 'has a working environment selector', :js do
- visit_environment(environment)
- click_link 'Monitoring'
-
- expect(page).to have_current_path(project_metrics_dashboard_path(project, environment: environment.id))
- expect(page).to have_css('[data-testid="environments-dropdown"]')
-
- within('[data-testid="environments-dropdown"]') do
- # Click on the dropdown
- click_on(environment.name)
-
- # Select the staging environment
- click_on(staging.name)
- end
-
- expect(page).to have_current_path(project_metrics_dashboard_path(project, environment: staging.id))
-
- wait_for_requests
- end
- end
-
- context 'without deployments' do
- it_behaves_like 'has environment selector'
- end
-
- context 'with deployments and related deployable present' do
- before do
- create(:deployment, environment: environment, deployable: build)
- end
-
- it 'shows metrics', :js do
- visit_environment(environment)
- click_link 'Monitoring'
-
- expect(page).to have_css('[data-testid="prometheus-graphs"]')
- end
-
- it_behaves_like 'has environment selector'
- end
-
- context 'when metrics dashboard feature is unavailable' do
- before do
- stub_feature_flags(remove_monitor_metrics: true)
- end
-
- it 'does not provide a link to the monitoring dashboard' do
- visit_environment(environment)
-
- expect(page).not_to have_link('Monitoring')
- end
- end
-
- def visit_environment(environment)
- visit project_environment_path(environment.project, environment)
- end
-end
diff --git a/spec/features/projects/environments/environment_spec.rb b/spec/features/projects/environments/environment_spec.rb
index 527a146ff73..0f903901984 100644
--- a/spec/features/projects/environments/environment_spec.rb
+++ b/spec/features/projects/environments/environment_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Environment', feature_category: :projects do
+RSpec.describe 'Environment', feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository) }
let(:user) { create(:user) }
let(:role) { :developer }
@@ -479,7 +479,10 @@ RSpec.describe 'Environment', feature_category: :projects do
visit project_branches_filtered_path(project, state: 'all', search: 'feature')
remove_branch_with_hooks(project, user, 'feature') do
- page.within('.js-branch-feature') { find('.js-delete-branch-button').click }
+ page.within('.js-branch-feature') do
+ find('[data-testid="branch-more-actions"] .gl-new-dropdown-toggle').click
+ find('[data-testid="delete-branch-button"]').click
+ end
end
visit_environment(environment)
diff --git a/spec/features/projects/environments/environments_spec.rb b/spec/features/projects/environments/environments_spec.rb
index b50fc59ac32..2490b1fde8e 100644
--- a/spec/features/projects/environments/environments_spec.rb
+++ b/spec/features/projects/environments/environments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Environments page', :js, feature_category: :projects do
+RSpec.describe 'Environments page', :js, feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let(:project) { create(:project) }
diff --git a/spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb b/spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb
index 6383c3196c4..687af894168 100644
--- a/spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb
+++ b/spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User deletes feature flag user list', :js, feature_category: :projects do
+RSpec.describe 'User deletes feature flag user list', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb b/spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb
index 8ab9e9baab9..8d0052c4ee1 100644
--- a/spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb
+++ b/spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edits feature flag user list', :js, feature_category: :projects do
+RSpec.describe 'User edits feature flag user list', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb b/spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb
index 7614349c5a4..672c4eb714c 100644
--- a/spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb
+++ b/spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sees feature flag user list details', :js, feature_category: :projects do
+RSpec.describe 'User sees feature flag user list details', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/projects/features_visibility_spec.rb b/spec/features/projects/features_visibility_spec.rb
index 5e0998412ed..b798524b9c4 100644
--- a/spec/features/projects/features_visibility_spec.rb
+++ b/spec/features/projects/features_visibility_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Edit Project Settings', feature_category: :projects do
+RSpec.describe 'Edit Project Settings', feature_category: :groups_and_projects do
let(:member) { create(:user) }
let!(:project) { create(:project, :public, :repository) }
let!(:issue) { create(:issue, project: project) }
diff --git a/spec/features/projects/files/dockerfile_dropdown_spec.rb b/spec/features/projects/files/dockerfile_dropdown_spec.rb
index ec1f03570d9..a74cde35be6 100644
--- a/spec/features/projects/files/dockerfile_dropdown_spec.rb
+++ b/spec/features/projects/files/dockerfile_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User wants to add a Dockerfile file', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User wants to add a Dockerfile file', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
before do
diff --git a/spec/features/projects/files/download_buttons_spec.rb b/spec/features/projects/files/download_buttons_spec.rb
index 2710e2efa94..9b3d19cfea3 100644
--- a/spec/features/projects/files/download_buttons_spec.rb
+++ b/spec/features/projects/files/download_buttons_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Download buttons in files tree', feature_category: :projects do
+RSpec.describe 'Projects > Files > Download buttons in files tree', feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/projects/files/edit_file_soft_wrap_spec.rb b/spec/features/projects/files/edit_file_soft_wrap_spec.rb
index f6342257847..8f7c09aac69 100644
--- a/spec/features/projects/files/edit_file_soft_wrap_spec.rb
+++ b/spec/features/projects/files/edit_file_soft_wrap_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User uses soft wrap while editing file', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User uses soft wrap while editing file', :js, feature_category: :groups_and_projects do
before do
project = create(:project, :repository)
user = project.first_owner
diff --git a/spec/features/projects/files/editing_a_file_spec.rb b/spec/features/projects/files/editing_a_file_spec.rb
index 1f928da0427..b4edd5c2729 100644
--- a/spec/features/projects/files/editing_a_file_spec.rb
+++ b/spec/features/projects/files/editing_a_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User wants to edit a file', feature_category: :projects do
+RSpec.describe 'Projects > Files > User wants to edit a file', feature_category: :groups_and_projects do
include ProjectForksHelper
let(:project) { create(:project, :repository, :public) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb b/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
index d791e22e4f8..ce63afe58d1 100644
--- a/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
+++ b/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User views files page', feature_category: :projects do
+RSpec.describe 'Projects > Files > User views files page', feature_category: :groups_and_projects do
let(:project) { create(:forked_project_with_submodules) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/find_file_keyboard_spec.rb b/spec/features/projects/files/find_file_keyboard_spec.rb
index 19813396435..85ecd1c2d96 100644
--- a/spec/features/projects/files/find_file_keyboard_spec.rb
+++ b/spec/features/projects/files/find_file_keyboard_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Find file keyboard shortcuts', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > Find file keyboard shortcuts', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/gitignore_dropdown_spec.rb b/spec/features/projects/files/gitignore_dropdown_spec.rb
index eedb79167bd..36b02b9b948 100644
--- a/spec/features/projects/files/gitignore_dropdown_spec.rb
+++ b/spec/features/projects/files/gitignore_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User wants to add a .gitignore file', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User wants to add a .gitignore file', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
before do
diff --git a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
index f2d657b3513..929554ff0d6 100644
--- a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
+++ b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User wants to add a .gitlab-ci.yml file', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User wants to add a .gitlab-ci.yml file', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
let(:params) { {} }
diff --git a/spec/features/projects/files/project_owner_creates_license_file_spec.rb b/spec/features/projects/files/project_owner_creates_license_file_spec.rb
index 7ac9cb33060..8ec9adaeb9a 100644
--- a/spec/features/projects/files/project_owner_creates_license_file_spec.rb
+++ b/spec/features/projects/files/project_owner_creates_license_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Project owner creates a license file', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > Project owner creates a license file', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:project_maintainer) { project.first_owner }
diff --git a/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb b/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
index cfa55eba188..bfe1fd073c5 100644
--- a/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
+++ b/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects > Files > Project owner sees a link to create a license file in empty project', :js,
-feature_category: :projects do
+feature_category: :groups_and_projects do
include Features::WebIdeSpecHelpers
let(:project) { create(:project_empty_repo) }
diff --git a/spec/features/projects/files/template_selector_menu_spec.rb b/spec/features/projects/files/template_selector_menu_spec.rb
index 8dbfa3afb0b..46c4b69bc89 100644
--- a/spec/features/projects/files/template_selector_menu_spec.rb
+++ b/spec/features/projects/files/template_selector_menu_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Template selector menu', :js, feature_category: :projects do
+RSpec.describe 'Template selector menu', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb
index 0dfed209ce9..4b6e6b7282c 100644
--- a/spec/features/projects/files/undo_template_spec.rb
+++ b/spec/features/projects/files/undo_template_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Template Undo Button', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > Template Undo Button', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb b/spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb
index 8b60d21a77e..645bfeb14e3 100644
--- a/spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb
+++ b/spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
# This is a regression test for https://gitlab.com/gitlab-org/gitlab-foss/issues/37569
RSpec.describe 'Projects > Files > User browses a tree with a folder containing only a folder', :js,
-feature_category: :projects do
+feature_category: :groups_and_projects do
let(:project) { create(:project, :empty_repo) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/user_browses_files_spec.rb b/spec/features/projects/files/user_browses_files_spec.rb
index 9b9c2158432..bb14b9c4e31 100644
--- a/spec/features/projects/files/user_browses_files_spec.rb
+++ b/spec/features/projects/files/user_browses_files_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User browses files", :js, feature_category: :projects do
+RSpec.describe "User browses files", :js, feature_category: :groups_and_projects do
include RepoHelpers
include ListboxHelpers
diff --git a/spec/features/projects/files/user_browses_lfs_files_spec.rb b/spec/features/projects/files/user_browses_lfs_files_spec.rb
index 6b401d6d789..d8c1c8e4f2a 100644
--- a/spec/features/projects/files/user_browses_lfs_files_spec.rb
+++ b/spec/features/projects/files/user_browses_lfs_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User browses LFS files', feature_category: :projects do
+RSpec.describe 'Projects > Files > User browses LFS files', feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
@@ -71,7 +71,9 @@ RSpec.describe 'Projects > Files > User browses LFS files', feature_category: :p
expect(page).not_to have_content('Annotate')
expect(page).not_to have_content('Blame')
- expect(page).not_to have_selector(:link_or_button, text: /^Edit$/)
+ click_button 'Edit'
+
+ expect(page).not_to have_selector(:link_or_button, text: /^Edit single file$/)
expect(page).to have_selector(:link_or_button, 'Open in Web IDE')
end
end
diff --git a/spec/features/projects/files/user_creates_directory_spec.rb b/spec/features/projects/files/user_creates_directory_spec.rb
index 4dd579ba8e9..070b6dbec7d 100644
--- a/spec/features/projects/files/user_creates_directory_spec.rb
+++ b/spec/features/projects/files/user_creates_directory_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User creates a directory', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User creates a directory', :js, feature_category: :groups_and_projects do
let(:fork_message) do
"You're not allowed to make changes to this project directly. "\
"A fork of this project has been created that you can make changes in, so you can submit a merge request."
diff --git a/spec/features/projects/files/user_creates_files_spec.rb b/spec/features/projects/files/user_creates_files_spec.rb
index 42aceef256a..de82f3062a2 100644
--- a/spec/features/projects/files/user_creates_files_spec.rb
+++ b/spec/features/projects/files/user_creates_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User creates files', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User creates files', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
include Features::BlobSpecHelpers
@@ -105,8 +105,6 @@ RSpec.describe 'Projects > Files > User creates files', :js, feature_category: :
end
it 'creates and commit a new file with new lines at the end of file' do
- set_default_button('edit')
-
editor_set_value('Sample\n\n\n')
fill_in(:file_name, with: 'not_a_file.md')
fill_in(:commit_message, with: 'New commit message', visible: true)
@@ -116,7 +114,7 @@ RSpec.describe 'Projects > Files > User creates files', :js, feature_category: :
expect(page).to have_current_path(new_file_path, ignore_query: true)
- click_link('Edit')
+ edit_in_single_file_editor
expect(find('.monaco-editor')).to have_content('Sample\n\n\n')
end
diff --git a/spec/features/projects/files/user_deletes_files_spec.rb b/spec/features/projects/files/user_deletes_files_spec.rb
index 61152a8badc..c526084b35d 100644
--- a/spec/features/projects/files/user_deletes_files_spec.rb
+++ b/spec/features/projects/files/user_deletes_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User deletes files', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User deletes files', :js, feature_category: :groups_and_projects do
let(:fork_message) do
"You're not allowed to make changes to this project directly. "\
"A fork of this project has been created that you can make changes in, so you can submit a merge request."
diff --git a/spec/features/projects/files/user_edits_files_spec.rb b/spec/features/projects/files/user_edits_files_spec.rb
index 779257b2e2b..10fa4a21359 100644
--- a/spec/features/projects/files/user_edits_files_spec.rb
+++ b/spec/features/projects/files/user_edits_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :groups_and_projects do
include Features::SourceEditorSpecHelpers
include ProjectForksHelper
include Features::BlobSpecHelpers
@@ -19,10 +19,6 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
sign_in(user)
end
- after do
- unset_default_button
- end
-
shared_examples 'unavailable for an archived project' do
it 'does not show the edit link for an archived project', :js do
project.update!(archived: true)
@@ -48,9 +44,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'inserts a content of a file' do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
find('.file-editor', match: :first)
editor_set_value('*.rbca')
@@ -69,9 +64,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'commits an edited file' do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
find('.file-editor', match: :first)
editor_set_value('*.rbca')
@@ -86,9 +80,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'commits an edited file to a new branch' do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
find('.file-editor', match: :first)
@@ -105,10 +98,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'shows loader on commit changes' do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
-
+ edit_in_single_file_editor
# why: We don't want the form to actually submit, so that we can assert the button's changed state
page.execute_script("document.querySelector('.js-edit-blob-form').addEventListener('submit', e => e.preventDefault())")
@@ -120,9 +111,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'shows the diff of an edited file' do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
find('.file-editor', match: :first)
editor_set_value('*.rbca')
@@ -158,9 +148,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'inserts a content of a file in a forked project', :sidekiq_might_not_need_inline do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
expect_fork_prompt
@@ -176,9 +165,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'opens the Web IDE in a forked project', :sidekiq_might_not_need_inline do
- set_default_button('webide')
click_link('.gitignore')
- click_link_or_button('Web IDE')
+ edit_in_web_ide
expect_fork_prompt
@@ -191,9 +179,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'commits an edited file in a forked project', :sidekiq_might_not_need_inline do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
expect_fork_prompt
click_link_or_button('Fork')
@@ -222,9 +209,8 @@ RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :pr
end
it 'links to the forked project for editing', :sidekiq_might_not_need_inline do
- set_default_button('edit')
click_link('.gitignore')
- click_link_or_button('Edit')
+ edit_in_single_file_editor
expect(page).not_to have_link('Fork')
diff --git a/spec/features/projects/files/user_find_file_spec.rb b/spec/features/projects/files/user_find_file_spec.rb
index 9cc2ce6a7b4..5406726eb6e 100644
--- a/spec/features/projects/files/user_find_file_spec.rb
+++ b/spec/features/projects/files/user_find_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User find project file', feature_category: :projects do
+RSpec.describe 'User find project file', feature_category: :groups_and_projects do
include ListboxHelpers
let(:user) { create :user }
diff --git a/spec/features/projects/files/user_reads_pipeline_status_spec.rb b/spec/features/projects/files/user_reads_pipeline_status_spec.rb
index 18a5fb71b10..ce3f0541139 100644
--- a/spec/features/projects/files/user_reads_pipeline_status_spec.rb
+++ b/spec/features/projects/files/user_reads_pipeline_status_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'user reads pipeline status', :js, feature_category: :projects do
+RSpec.describe 'user reads pipeline status', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
let(:v110_pipeline) { create_pipeline('v1.1.0', 'success') }
diff --git a/spec/features/projects/files/user_replaces_files_spec.rb b/spec/features/projects/files/user_replaces_files_spec.rb
index 9fa3ddf92c6..bd951b974d1 100644
--- a/spec/features/projects/files/user_replaces_files_spec.rb
+++ b/spec/features/projects/files/user_replaces_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User replaces files', :js, feature_category: :projects do
+RSpec.describe 'Projects > Files > User replaces files', :js, feature_category: :groups_and_projects do
include DropzoneHelper
let(:fork_message) do
diff --git a/spec/features/projects/files/user_searches_for_files_spec.rb b/spec/features/projects/files/user_searches_for_files_spec.rb
index b438b203141..25456593fc4 100644
--- a/spec/features/projects/files/user_searches_for_files_spec.rb
+++ b/spec/features/projects/files/user_searches_for_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User searches for files', feature_category: :projects do
+RSpec.describe 'Projects > Files > User searches for files', feature_category: :groups_and_projects do
let(:user) { project.first_owner }
before do
diff --git a/spec/features/projects/files/user_uploads_files_spec.rb b/spec/features/projects/files/user_uploads_files_spec.rb
index 575a6290a32..22c3f73add5 100644
--- a/spec/features/projects/files/user_uploads_files_spec.rb
+++ b/spec/features/projects/files/user_uploads_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User uploads files', feature_category: :projects do
+RSpec.describe 'Projects > Files > User uploads files', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, name: 'Shop', creator: user) }
let(:project2) { create(:project, :repository, name: 'Another Project', path: 'another-project') }
diff --git a/spec/features/projects/fork_spec.rb b/spec/features/projects/fork_spec.rb
index 39cdc8faa85..7d734d5d2df 100644
--- a/spec/features/projects/fork_spec.rb
+++ b/spec/features/projects/fork_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project fork', feature_category: :projects do
+RSpec.describe 'Project fork', feature_category: :groups_and_projects do
include ListboxHelpers
include ProjectForksHelper
diff --git a/spec/features/projects/forks/fork_list_spec.rb b/spec/features/projects/forks/fork_list_spec.rb
index 18424c18cbc..966147637f5 100644
--- a/spec/features/projects/forks/fork_list_spec.rb
+++ b/spec/features/projects/forks/fork_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'listing forks of a project', feature_category: :projects do
+RSpec.describe 'listing forks of a project', feature_category: :groups_and_projects do
include ProjectForksHelper
include ExternalAuthorizationServiceHelpers
diff --git a/spec/features/projects/gfm_autocomplete_load_spec.rb b/spec/features/projects/gfm_autocomplete_load_spec.rb
index bb9f4e121d8..35ab0094d51 100644
--- a/spec/features/projects/gfm_autocomplete_load_spec.rb
+++ b/spec/features/projects/gfm_autocomplete_load_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GFM autocomplete loading', :js, feature_category: :projects do
+RSpec.describe 'GFM autocomplete loading', :js, feature_category: :groups_and_projects do
let(:project) { create(:project) }
before do
diff --git a/spec/features/projects/graph_spec.rb b/spec/features/projects/graph_spec.rb
index a1f047d9b43..16a3686215f 100644
--- a/spec/features/projects/graph_spec.rb
+++ b/spec/features/projects/graph_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Graph', :js, feature_category: :projects do
+RSpec.describe 'Project Graph', :js, feature_category: :groups_and_projects do
let(:user) { create :user }
let(:project) { create(:project, :repository, namespace: user.namespace) }
let(:branch_name) { 'master' }
diff --git a/spec/features/projects/hook_logs/user_reads_log_spec.rb b/spec/features/projects/hook_logs/user_reads_log_spec.rb
index 92ddc559cf4..cffa76924f5 100644
--- a/spec/features/projects/hook_logs/user_reads_log_spec.rb
+++ b/spec/features/projects/hook_logs/user_reads_log_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Hook logs', feature_category: :projects do
+RSpec.describe 'Hook logs', feature_category: :groups_and_projects do
let(:project) { create(:project) }
let(:project_hook) { create(:project_hook, project: project) }
let(:web_hook_log) { create(:web_hook_log, web_hook: project_hook, response_body: 'Hello World') }
diff --git a/spec/features/projects/infrastructure_registry_spec.rb b/spec/features/projects/infrastructure_registry_spec.rb
index e1619726c8d..a648a4fc1ce 100644
--- a/spec/features/projects/infrastructure_registry_spec.rb
+++ b/spec/features/projects/infrastructure_registry_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Infrastructure Registry', feature_category: :projects do
+RSpec.describe 'Infrastructure Registry', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
diff --git a/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb b/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb
index d2c48cb2af0..9fc91e03c94 100644
--- a/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb
+++ b/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb
@@ -89,4 +89,5 @@ RSpec.describe 'User activates issue tracker', :js, feature_category: :integrati
it_behaves_like 'external issue tracker activation', tracker: 'Bugzilla'
it_behaves_like 'external issue tracker activation', tracker: 'Custom issue tracker'
it_behaves_like 'external issue tracker activation', tracker: 'EWM', skip_test: true
+ it_behaves_like 'external issue tracker activation', tracker: 'ClickUp', skip_new_issue_url: true
end
diff --git a/spec/features/projects/integrations/user_activates_jira_spec.rb b/spec/features/projects/integrations/user_activates_jira_spec.rb
index e4b10aeb340..03d5e68d2aa 100644
--- a/spec/features/projects/integrations/user_activates_jira_spec.rb
+++ b/spec/features/projects/integrations/user_activates_jira_spec.rb
@@ -48,7 +48,7 @@ RSpec.describe 'User activates Jira', :js, feature_category: :integrations do
it 'activates the Jira integration' do
stub_request(:get, test_url).with(basic_auth: %w(username password))
- .to_raise(JIRA::HTTPError.new(double(message: 'message')))
+ .to_raise(JIRA::HTTPError.new(double(message: 'message', code: '200')))
visit_project_integration('Jira')
fill_form
diff --git a/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb b/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb
index 9ff344bcc88..9d9620c1461 100644
--- a/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb
+++ b/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
RSpec.describe 'User uses inherited settings', :js, feature_category: :integrations do
include JiraIntegrationHelpers
+ include ListboxHelpers
include_context 'project integration activation'
@@ -22,17 +23,16 @@ RSpec.describe 'User uses inherited settings', :js, feature_category: :integrati
expect(page).not_to have_button('Use custom settings')
expect(page).to have_field('Web URL', with: parent_settings[:url], readonly: true)
- expect(page).to have_field('New API token, password, or Jira personal access token', with: '', readonly: true)
+ expect(page).to have_field('New API token or password', with: '', readonly: true)
- click_on 'Use default settings'
- click_on 'Use custom settings'
+ select_from_listbox('Use custom settings', from: 'Use default settings')
expect(page).not_to have_button('Use default settings')
expect(page).to have_field('Web URL', with: project_settings[:url], readonly: false)
- expect(page).to have_field('New API token, password, or Jira personal access token', with: '', readonly: false)
+ expect(page).to have_field('New API token or password', with: '', readonly: false)
fill_in 'Web URL', with: 'http://custom.com'
- fill_in 'New API token, password, or Jira personal access token', with: 'custom'
+ fill_in 'New API token or password', with: 'custom'
click_save_integration
@@ -53,14 +53,13 @@ RSpec.describe 'User uses inherited settings', :js, feature_category: :integrati
expect(page).not_to have_button('Use default settings')
expect(page).to have_field('URL', with: project_settings[:url], readonly: false)
- expect(page).to have_field('New API token, password, or Jira personal access token', with: '', readonly: false)
+ expect(page).to have_field('New API token or password', with: '', readonly: false)
- click_on 'Use custom settings'
- click_on 'Use default settings'
+ select_from_listbox('Use default settings', from: 'Use custom settings')
expect(page).not_to have_button('Use custom settings')
expect(page).to have_field('URL', with: parent_settings[:url], readonly: true)
- expect(page).to have_field('New API token, password, or Jira personal access token', with: '', readonly: true)
+ expect(page).to have_field('New API token or password', with: '', readonly: true)
click_save_integration
diff --git a/spec/features/projects/issuable_templates_spec.rb b/spec/features/projects/issuable_templates_spec.rb
index 77f88994bfb..72695680809 100644
--- a/spec/features/projects/issuable_templates_spec.rb
+++ b/spec/features/projects/issuable_templates_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issuable templates', :js, feature_category: :projects do
+RSpec.describe 'issuable templates', :js, feature_category: :groups_and_projects do
include ProjectForksHelper
include CookieHelper
diff --git a/spec/features/projects/jobs/permissions_spec.rb b/spec/features/projects/jobs/permissions_spec.rb
index dce86c9f0a4..e1bcc160092 100644
--- a/spec/features/projects/jobs/permissions_spec.rb
+++ b/spec/features/projects/jobs/permissions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Jobs Permissions', feature_category: :projects do
+RSpec.describe 'Project Jobs Permissions', feature_category: :groups_and_projects do
using RSpec::Parameterized::TableSyntax
let_it_be_with_reload(:group) { create(:group, name: 'some group') }
diff --git a/spec/features/projects/jobs/user_browses_job_spec.rb b/spec/features/projects/jobs/user_browses_job_spec.rb
index dd57b4117f9..795084f8008 100644
--- a/spec/features/projects/jobs/user_browses_job_spec.rb
+++ b/spec/features/projects/jobs/user_browses_job_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User browses a job', :js, feature_category: :projects do
+RSpec.describe 'User browses a job', :js, feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/jobs/user_browses_jobs_spec.rb b/spec/features/projects/jobs/user_browses_jobs_spec.rb
index 1634f6dee74..aeba53c22b6 100644
--- a/spec/features/projects/jobs/user_browses_jobs_spec.rb
+++ b/spec/features/projects/jobs/user_browses_jobs_spec.rb
@@ -8,7 +8,7 @@ def visit_jobs_page
wait_for_requests
end
-RSpec.describe 'User browses jobs', feature_category: :projects do
+RSpec.describe 'User browses jobs', feature_category: :groups_and_projects do
describe 'Jobs', :js do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
@@ -72,7 +72,7 @@ RSpec.describe 'User browses jobs', feature_category: :projects do
wait_for_requests
- expect(page).to have_selector('.ci-canceled')
+ expect(page).to have_selector('[data-testid="ci-badge-canceled"]')
expect(page).not_to have_selector('[data-testid="jobs-table-error-alert"]')
end
end
@@ -94,7 +94,7 @@ RSpec.describe 'User browses jobs', feature_category: :projects do
wait_for_requests
- expect(page).to have_selector('.ci-pending')
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]')
end
end
@@ -134,7 +134,7 @@ RSpec.describe 'User browses jobs', feature_category: :projects do
wait_for_requests
- expect(page).to have_selector('.ci-pending')
+ expect(page).to have_selector('[data-testid="ci-badge-pending"]')
end
it 'unschedules a job successfully' do
@@ -142,7 +142,7 @@ RSpec.describe 'User browses jobs', feature_category: :projects do
wait_for_requests
- expect(page).to have_selector('.ci-manual')
+ expect(page).to have_selector('[data-testid="ci-badge-manual"]')
end
end
diff --git a/spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb b/spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb
index e4394010e8c..41a21b1155b 100644
--- a/spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb
+++ b/spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User triggers manual job with variables', :js, feature_category: :projects do
+RSpec.describe 'User triggers manual job with variables', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:user_access_level) { :developer }
let(:project) { create(:project, :repository, namespace: user.namespace) }
diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb
index 796bac2e8e7..fcd07d33535 100644
--- a/spec/features/projects/jobs_spec.rb
+++ b/spec/features/projects/jobs_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require 'tempfile'
-RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :projects do
+RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :groups_and_projects do
include Gitlab::Routing
include ProjectForksHelper
@@ -66,7 +66,7 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj
wait_for_requests
- expect(page).to have_css('.ci-status.ci-success', text: 'passed')
+ expect(page).to have_css('[data-testid="ci-badge-passed"]', text: 'passed')
end
it 'shows commit`s data', :js do
@@ -548,24 +548,24 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj
end
context 'when there is a cluster used for the deployment' do
- let(:cluster) { create(:cluster, name: 'the-cluster') }
- let(:deployment) { create(:deployment, :success, cluster: cluster, environment: environment, project: environment.project) }
+ let(:deployment) { create(:deployment, :success, :on_cluster, environment: environment) }
let(:user_access_level) { :maintainer }
+ let(:cluster) { deployment.cluster }
it 'shows a link to the cluster' do
- expect(page).to have_link 'the-cluster'
+ expect(page).to have_link cluster.name
end
it 'shows the name of the cluster' do
- expect(page).to have_content 'using cluster the-cluster'
+ expect(page).to have_content "using cluster #{cluster.name}"
end
context 'when the user is not able to view the cluster' do
let(:user_access_level) { :reporter }
it 'includes only the name of the cluster without a link' do
- expect(page).to have_content 'using cluster the-cluster'
- expect(page).not_to have_link 'the-cluster'
+ expect(page).to have_content "using cluster #{cluster.name}"
+ expect(page).not_to have_link cluster.name
end
end
end
diff --git a/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb b/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
index 63dc99efc8f..97b29ee6c91 100644
--- a/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
+++ b/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Group member cannot leave group project', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Group member cannot leave group project', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
diff --git a/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb b/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
index 07886950b95..6656ca3ef18 100644
--- a/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
+++ b/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects > Members > Group member cannot request access to their group project',
-feature_category: :subgroups do
+feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
diff --git a/spec/features/projects/members/group_members_spec.rb b/spec/features/projects/members/group_members_spec.rb
index c0257446a37..3ab84b40e53 100644
--- a/spec/features/projects/members/group_members_spec.rb
+++ b/spec/features/projects/members/group_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects members', :js, feature_category: :subgroups do
+RSpec.describe 'Projects members', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
index 7a11ee61c5f..9db34cee5d6 100644
--- a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
+++ b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects > Members > Group requester cannot request access to project', :js,
-feature_category: :subgroups do
+feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:owner) { create(:user) }
let(:group) { create(:group, :public) }
diff --git a/spec/features/projects/members/groups_with_access_list_spec.rb b/spec/features/projects/members/groups_with_access_list_spec.rb
index 8238f95fd47..a2a04ada627 100644
--- a/spec/features/projects/members/groups_with_access_list_spec.rb
+++ b/spec/features/projects/members/groups_with_access_list_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Groups with access list', :js, feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Groups with access list', :js, feature_category: :groups_and_projects do
+ include ListboxHelpers
include Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
include Features::InviteMembersModalHelpers
@@ -26,8 +27,7 @@ RSpec.describe 'Projects > Members > Groups with access list', :js, feature_cate
end
it 'updates group access level' do
- click_button group_link.human_access
- click_button 'Guest'
+ select_from_listbox('Guest', from: group_link.human_access)
wait_for_requests
diff --git a/spec/features/projects/members/manage_groups_spec.rb b/spec/features/projects/members/manage_groups_spec.rb
index 5efb5abefc6..63ff1ba8455 100644
--- a/spec/features/projects/members/manage_groups_spec.rb
+++ b/spec/features/projects/members/manage_groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > Members > Manage groups', :js, feature_category: :subgroups do
+RSpec.describe 'Project > Members > Manage groups', :js, feature_category: :groups_and_projects do
include ActionView::Helpers::DateHelper
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
diff --git a/spec/features/projects/members/manage_members_spec.rb b/spec/features/projects/members/manage_members_spec.rb
index 5ae6eb83b6b..0e3ac5ff3ac 100644
--- a/spec/features/projects/members/manage_members_spec.rb
+++ b/spec/features/projects/members/manage_members_spec.rb
@@ -3,6 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :onboarding do
+ include ListboxHelpers
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -61,11 +62,8 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on
page.within find_member_row(project_developer) do
click_button('Developer')
- page.within '.dropdown-menu' do
- expect(page).not_to have_button('Owner')
- end
-
- click_button('Reporter')
+ expect_no_listbox_item('Owner')
+ select_listbox_item('Reporter')
expect(page).to have_button('Reporter')
end
@@ -87,8 +85,7 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on
visit_members_page
page.within find_member_row(project_owner) do
- click_button('Owner')
- click_button('Reporter')
+ select_from_listbox('Reporter', from: 'Owner')
expect(page).to have_button('Reporter')
end
diff --git a/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb b/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
index be778def833..b51259bea23 100644
--- a/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
+++ b/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Maintainer adds member with expiration date', :js, feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Maintainer adds member with expiration date', :js, feature_category: :groups_and_projects do
include ActiveSupport::Testing::TimeHelpers
include Features::MembersHelpers
include Features::InviteMembersModalHelpers
diff --git a/spec/features/projects/members/master_manages_access_requests_spec.rb b/spec/features/projects/members/master_manages_access_requests_spec.rb
index cea59679226..04d28022b73 100644
--- a/spec/features/projects/members/master_manages_access_requests_spec.rb
+++ b/spec/features/projects/members/master_manages_access_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Maintainer manages access requests', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Maintainer manages access requests', feature_category: :groups_and_projects do
it_behaves_like 'Maintainer manages access requests' do
let(:entity) { create(:project, :public, :with_namespace_settings) }
let(:members_page_path) { project_project_members_path(entity) }
diff --git a/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb b/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
index dc18ca88c36..91237c334cc 100644
--- a/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
+++ b/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Member cannot request access to their project', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Member cannot request access to their project', feature_category: :groups_and_projects do
let(:member) { create(:user) }
let(:project) { create(:project) }
diff --git a/spec/features/projects/members/member_leaves_project_spec.rb b/spec/features/projects/members/member_leaves_project_spec.rb
index 91e30b3396e..e0c64547e9f 100644
--- a/spec/features/projects/members/member_leaves_project_spec.rb
+++ b/spec/features/projects/members/member_leaves_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Member leaves project', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Member leaves project', feature_category: :groups_and_projects do
include Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/projects/members/owner_cannot_leave_project_spec.rb b/spec/features/projects/members/owner_cannot_leave_project_spec.rb
index 7908fd3a98f..c79d227647a 100644
--- a/spec/features/projects/members/owner_cannot_leave_project_spec.rb
+++ b/spec/features/projects/members/owner_cannot_leave_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Owner cannot leave project', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Owner cannot leave project', feature_category: :groups_and_projects do
let(:project) { create(:project) }
before do
diff --git a/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb b/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
index b5a862578d3..84cf31b526a 100644
--- a/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
+++ b/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Owner cannot request access to their own project', feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Owner cannot request access to their own project', feature_category: :groups_and_projects do
let(:project) { create(:project) }
before do
diff --git a/spec/features/projects/members/sorting_spec.rb b/spec/features/projects/members/sorting_spec.rb
index 85bf381404c..9747d499ae9 100644
--- a/spec/features/projects/members/sorting_spec.rb
+++ b/spec/features/projects/members/sorting_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
let(:maintainer) { create(:user, name: 'John Doe', created_at: 5.days.ago, last_activity_on: Date.today) }
diff --git a/spec/features/projects/members/tabs_spec.rb b/spec/features/projects/members/tabs_spec.rb
index 9ee06edc0c1..edd4a51089c 100644
--- a/spec/features/projects/members/tabs_spec.rb
+++ b/spec/features/projects/members/tabs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Tabs', :js, feature_category: :subgroups do
+RSpec.describe 'Projects > Members > Tabs', :js, feature_category: :groups_and_projects do
include Features::MembersHelpers
using RSpec::Parameterized::TableSyntax
diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb
index 11d162fabd4..6f76424e377 100644
--- a/spec/features/projects/members/user_requests_access_spec.rb
+++ b/spec/features/projects/members/user_requests_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > User requests access', :js, feature_category: :subgroups do
+RSpec.describe 'Projects > Members > User requests access', :js, feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/merge_request_button_spec.rb b/spec/features/projects/merge_request_button_spec.rb
index 56aee469252..6d6d850342a 100644
--- a/spec/features/projects/merge_request_button_spec.rb
+++ b/spec/features/projects/merge_request_button_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Request button', feature_category: :projects do
+RSpec.describe 'Merge Request button', feature_category: :groups_and_projects do
include ProjectForksHelper
let_it_be(:user) { create(:user) }
@@ -50,10 +50,17 @@ RSpec.describe 'Merge Request button', feature_category: :projects do
end
it 'does not show Create merge request button' do
+ href = project_new_merge_request_path(
+ project,
+ merge_request: {
+ source_branch: 'feature'
+ }.merge(extra_mr_params)
+ )
+
visit url
within('#content-body') do
- expect(page).not_to have_link(label)
+ expect(page).not_to have_link(label, href: href)
end
end
end
@@ -105,7 +112,7 @@ RSpec.describe 'Merge Request button', feature_category: :projects do
context 'on branches page' do
it_behaves_like 'Merge request button only shown when allowed' do
- let(:label) { 'Merge request' }
+ let(:label) { 'New' }
let(:url) { project_branches_filtered_path(project, state: 'all', search: 'feature') }
let(:fork_url) { project_branches_filtered_path(forked_project, state: 'all', search: 'feature') }
end
diff --git a/spec/features/projects/milestones/milestone_showing_spec.rb b/spec/features/projects/milestones/milestone_showing_spec.rb
new file mode 100644
index 00000000000..b68f569221a
--- /dev/null
+++ b/spec/features/projects/milestones/milestone_showing_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Project milestone', :js, feature_category: :team_planning do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, namespace: user.namespace) }
+
+ let(:milestone) { create(:milestone, project: project) }
+
+ before do
+ sign_in(user)
+ end
+
+ it_behaves_like 'milestone with interactive markdown task list items in description' do
+ let(:milestone_path) { project_milestone_path(project, milestone) }
+ end
+end
diff --git a/spec/features/projects/navbar_spec.rb b/spec/features/projects/navbar_spec.rb
index 532dd7d0a84..97dfeb6fd06 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', :with_license, feature_category: :projects do
+RSpec.describe 'Project navbar', :with_license, feature_category: :groups_and_projects do
include NavbarStructureHelper
include WaitForRequests
@@ -20,7 +20,6 @@ RSpec.describe 'Project navbar', :with_license, feature_category: :projects do
stub_config(registry: { enabled: false })
stub_feature_flags(harbor_registry_integration: false)
stub_feature_flags(ml_experiment_tracking: false)
- stub_feature_flags(remove_monitor_metrics: false)
insert_package_nav(_('Deployments'))
insert_infrastructure_registry_nav
insert_infrastructure_google_cloud_nav
diff --git a/spec/features/projects/network_graph_spec.rb b/spec/features/projects/network_graph_spec.rb
index af976b8ffb0..eff0335c891 100644
--- a/spec/features/projects/network_graph_spec.rb
+++ b/spec/features/projects/network_graph_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Network Graph', :js, feature_category: :projects do
+RSpec.describe 'Project Network Graph', :js, feature_category: :groups_and_projects do
let(:user) { create :user }
let(:project) { create :project, :repository, namespace: user.namespace }
let(:ref_selector) { '.ref-selector' }
diff --git a/spec/features/projects/new_project_from_template_spec.rb b/spec/features/projects/new_project_from_template_spec.rb
index 97304840010..8e2016ce17e 100644
--- a/spec/features/projects/new_project_from_template_spec.rb
+++ b/spec/features/projects/new_project_from_template_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New project from template', :js, feature_category: :projects do
+RSpec.describe 'New project from template', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
before do
diff --git a/spec/features/projects/new_project_spec.rb b/spec/features/projects/new_project_spec.rb
index 351662af217..d05b7649f94 100644
--- a/spec/features/projects/new_project_spec.rb
+++ b/spec/features/projects/new_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New project', :js, feature_category: :projects do
+RSpec.describe 'New project', :js, feature_category: :groups_and_projects do
include Features::TopNavSpecHelpers
before do
@@ -99,7 +99,6 @@ RSpec.describe 'New project', :js, feature_category: :projects do
context 'when the new navigation is enabled' do
before do
user.update!(use_new_navigation: true)
- stub_feature_flags(super_sidebar_nav: true)
end
include_examples '"New project" page'
diff --git a/spec/features/projects/package_files_spec.rb b/spec/features/projects/package_files_spec.rb
index 824b57db7ad..540ad745610 100644
--- a/spec/features/projects/package_files_spec.rb
+++ b/spec/features/projects/package_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'PackageFiles', feature_category: :projects do
+RSpec.describe 'PackageFiles', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project) }
let!(:package) { create(:maven_package, project: project) }
diff --git a/spec/features/projects/packages_spec.rb b/spec/features/projects/packages_spec.rb
index 5d3ebd8bec6..5073c147b6c 100644
--- a/spec/features/projects/packages_spec.rb
+++ b/spec/features/projects/packages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Packages', feature_category: :projects do
+RSpec.describe 'Packages', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
diff --git a/spec/features/projects/pipeline_schedules_spec.rb b/spec/features/projects/pipeline_schedules_spec.rb
index 81e003d7d1c..358c55376d4 100644
--- a/spec/features/projects/pipeline_schedules_spec.rb
+++ b/spec/features/projects/pipeline_schedules_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Pipeline Schedules', :js, feature_category: :projects do
+RSpec.describe 'Pipeline Schedules', :js, feature_category: :groups_and_projects do
include Spec::Support::Helpers::ModalHelpers
let!(:project) { create(:project, :repository) }
@@ -413,8 +413,8 @@ RSpec.describe 'Pipeline Schedules', :js, feature_category: :projects do
end
def select_timezone
- find('[data-testid="schedule-timezone"] .dropdown-toggle').click
- find("button", text: "Arizona").click
+ find('[data-testid="schedule-timezone"] .gl-new-dropdown-toggle').click
+ find("li", text: "Arizona").click
end
def select_target_branch
diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb
index 7167581eedf..abc9e3d30fc 100644
--- a/spec/features/projects/pipelines/pipeline_spec.rb
+++ b/spec/features/projects/pipelines/pipeline_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Pipeline', :js, feature_category: :projects do
+RSpec.describe 'Pipeline', :js, feature_category: :groups_and_projects do
include RoutesHelpers
include ProjectForksHelper
include ::ExclusiveLeaseHelpers
@@ -13,6 +13,7 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do
let(:role) { :developer }
before do
+ stub_feature_flags(pipeline_details_header_vue: false)
sign_in(user)
project.add_role(user, role)
end
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index d3ccde3d2e1..441f39e6999 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Pipelines', :js, feature_category: :projects do
+RSpec.describe 'Pipelines', :js, feature_category: :groups_and_projects do
include ListboxHelpers
include ProjectForksHelper
include Spec::Support::Helpers::ModalHelpers
@@ -10,6 +10,10 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
let(:project) { create(:project) }
let(:expected_detached_mr_tag) { 'merge request' }
+ before do
+ stub_feature_flags(pipeline_details_header_vue: false)
+ end
+
context 'when user is logged in' do
let(:user) { create(:user) }
@@ -116,7 +120,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
it 'indicates that pipeline can be canceled' do
expect(page).to have_selector('.js-pipelines-cancel-button')
- expect(page).to have_selector('.ci-running')
+ expect(page).to have_selector('[data-testid="ci-badge-running"]')
end
context 'when canceling' do
@@ -128,7 +132,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
it 'indicated that pipelines was canceled', :sidekiq_might_not_need_inline do
expect(page).not_to have_selector('.js-pipelines-cancel-button')
- expect(page).to have_selector('.ci-canceled')
+ expect(page).to have_selector('[data-testid="ci-badge-canceled"]')
end
end
end
@@ -146,7 +150,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
it 'indicates that pipeline can be retried' do
expect(page).to have_selector('.js-pipelines-retry-button')
- expect(page).to have_selector('.ci-failed')
+ expect(page).to have_selector('[data-testid="ci-badge-failed"]')
end
context 'when retrying' do
@@ -157,7 +161,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
it 'shows running pipeline that is not retryable' do
expect(page).not_to have_selector('.js-pipelines-retry-button')
- expect(page).to have_selector('.ci-running')
+ expect(page).to have_selector('[data-testid="ci-badge-running"]')
end
end
end
@@ -396,7 +400,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
end
it 'shows the pipeline as preparing' do
- expect(page).to have_selector('.ci-preparing')
+ expect(page).to have_selector('[data-testid="ci-badge-preparing"]')
end
end
@@ -417,7 +421,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
end
it 'has pipeline running' do
- expect(page).to have_selector('.ci-running')
+ expect(page).to have_selector('[data-testid="ci-badge-running"]')
end
context 'when canceling' do
@@ -428,7 +432,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
it 'indicates that pipeline was canceled', :sidekiq_might_not_need_inline do
expect(page).not_to have_selector('.js-pipelines-cancel-button')
- expect(page).to have_selector('.ci-canceled')
+ expect(page).to have_selector('[data-testid="ci-badge-canceled"]')
end
end
end
@@ -450,7 +454,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
end
it 'has failed pipeline', :sidekiq_might_not_need_inline do
- expect(page).to have_selector('.ci-failed')
+ expect(page).to have_selector('[data-testid="ci-badge-failed"]')
end
end
end
@@ -605,17 +609,17 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
wait_for_requests
end
- it 'changes the Pipeline ID column for Pipeline IID' do
- page.find('[data-testid="pipeline-key-collapsible-box"]').click
+ it 'changes the Pipeline ID column link to Pipeline IID and persists', :aggregate_failures do
+ expect(page).to have_link(text: "##{pipeline.id}")
- within '.gl-new-dropdown-contents' do
- dropdown_options = page.find_all '.gl-new-dropdown-item'
+ select_from_listbox('Show Pipeline IID', from: 'Show Pipeline ID')
- dropdown_options[1].click
- end
+ expect(page).to have_link(text: "##{pipeline.iid}")
+
+ visit project_pipelines_path(project)
+ wait_for_requests
- expect(page.find('[data-testid="pipeline-th"]')).to have_content 'Pipeline'
- expect(page.find('[data-testid="pipeline-url-link"]')).to have_content "##{pipeline.iid}"
+ expect(page).to have_link(text: "##{pipeline.iid}")
end
end
end
@@ -686,7 +690,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do
click_button project.default_branch
wait_for_requests
- find('.gl-new-dropdown-item', text: '2-mb-file').click
+ find('.gl-new-dropdown-item', text: 'spooky-stuff').click
wait_for_requests
end
diff --git a/spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb b/spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb
index fb7814285b8..0cc105353f5 100644
--- a/spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb
+++ b/spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Raw > User interacts with raw endpoint', feature_category: :projects do
+RSpec.describe 'Projects > Raw > User interacts with raw endpoint', feature_category: :groups_and_projects do
include RepoHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/releases/user_views_releases_spec.rb b/spec/features/projects/releases/user_views_releases_spec.rb
index 0a4075be02f..d0111d0b9c8 100644
--- a/spec/features/projects/releases/user_views_releases_spec.rb
+++ b/spec/features/projects/releases/user_views_releases_spec.rb
@@ -24,6 +24,17 @@ RSpec.describe 'User views releases', :js, feature_category: :continuous_deliver
stub_default_url_options(host: 'localhost')
end
+ shared_examples 'when the project does not have releases' do
+ before do
+ project.releases.delete_all
+ visit project_releases_path(project)
+ end
+
+ it 'sees an empty state' do
+ expect(page).to have_selector('[data-testid="gl-empty-state-content"]')
+ end
+ end
+
context('when the user is a maintainer') do
before do
sign_in(maintainer)
@@ -110,6 +121,8 @@ RSpec.describe 'User views releases', :js, feature_category: :continuous_deliver
it_behaves_like 'releases sort order'
end
end
+
+ it_behaves_like 'when the project does not have releases'
end
context('when the user is a guest') do
@@ -130,5 +143,7 @@ RSpec.describe 'User views releases', :js, feature_category: :continuous_deliver
expect(page).not_to have_content(release_v3.commit.short_id)
end
end
+
+ it_behaves_like 'when the project does not have releases'
end
end
diff --git a/spec/features/projects/remote_mirror_spec.rb b/spec/features/projects/remote_mirror_spec.rb
index aa0c1ead4c0..4f27ba04f37 100644
--- a/spec/features/projects/remote_mirror_spec.rb
+++ b/spec/features/projects/remote_mirror_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project remote mirror', :feature, feature_category: :projects do
+RSpec.describe 'Project remote mirror', :feature, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository, :remote_mirror) }
let(:remote_mirror) { project.remote_mirrors.first }
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/branch_names_settings_spec.rb b/spec/features/projects/settings/branch_names_settings_spec.rb
index 5d82dff1efd..cc7396513cb 100644
--- a/spec/features/projects/settings/branch_names_settings_spec.rb
+++ b/spec/features/projects/settings/branch_names_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project settings > repositories > Branch names', :js, feature_category: :projects do
+RSpec.describe 'Project settings > repositories > Branch names', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :public) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/branch_rules_settings_spec.rb b/spec/features/projects/settings/branch_rules_settings_spec.rb
index 59609fecd93..5ef80521401 100644
--- a/spec/features/projects/settings/branch_rules_settings_spec.rb
+++ b/spec/features/projects/settings/branch_rules_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Repository > Branch rules settings', feature_category: :projects do
+RSpec.describe 'Projects > Settings > Repository > Branch rules settings', feature_category: :groups_and_projects do
let(:project) { create(:project_empty_repo) }
let(:user) { create(:user) }
let(:role) { :developer }
@@ -45,14 +45,5 @@ RSpec.describe 'Projects > Settings > Repository > Branch rules settings', featu
expect(page).to have_content('Branch rules')
end
end
-
- context 'branch_rules feature flag disabled' do
- it 'does not render branch rules content' do
- stub_feature_flags(branch_rules: false)
- request
-
- expect(page).to have_gitlab_http_status(:not_found)
- end
- end
end
end
diff --git a/spec/features/projects/settings/external_authorization_service_settings_spec.rb b/spec/features/projects/settings/external_authorization_service_settings_spec.rb
index a99fd5f9788..4a56e6c8bbf 100644
--- a/spec/features/projects/settings/external_authorization_service_settings_spec.rb
+++ b/spec/features/projects/settings/external_authorization_service_settings_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Projects > Settings > External Authorization Classification Label setting',
-feature_category: :projects do
+feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project_empty_repo) }
diff --git a/spec/features/projects/settings/forked_project_settings_spec.rb b/spec/features/projects/settings/forked_project_settings_spec.rb
index 6b646bcf7d3..c2a5b36a81b 100644
--- a/spec/features/projects/settings/forked_project_settings_spec.rb
+++ b/spec/features/projects/settings/forked_project_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :groups_and_projects do
include ProjectForksHelper
let(:user) { create(:user) }
let(:original_project) { create(:project) }
diff --git a/spec/features/projects/settings/lfs_settings_spec.rb b/spec/features/projects/settings/lfs_settings_spec.rb
index 1695b49830d..bc5efecfe0d 100644
--- a/spec/features/projects/settings/lfs_settings_spec.rb
+++ b/spec/features/projects/settings/lfs_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > LFS settings', feature_category: :projects do
+RSpec.describe 'Projects > Settings > LFS settings', feature_category: :groups_and_projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:role) { :maintainer }
diff --git a/spec/features/projects/settings/merge_requests_settings_spec.rb b/spec/features/projects/settings/merge_requests_settings_spec.rb
index ca90817b0a4..8b5f9b67890 100644
--- a/spec/features/projects/settings/merge_requests_settings_spec.rb
+++ b/spec/features/projects/settings/merge_requests_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Merge requests', feature_category: :projects do
+RSpec.describe 'Projects > Settings > Merge requests', feature_category: :groups_and_projects do
include ProjectForksHelper
let(:user) { create(:user) }
@@ -98,6 +98,36 @@ RSpec.describe 'Projects > Settings > Merge requests', feature_category: :projec
end
end
+ describe 'With the fast_forward_merge_trains_support feature flag turned off' do
+ before do
+ sign_in(user)
+ stub_feature_flags(fast_forward_merge_trains_support: false)
+
+ visit(project_settings_merge_requests_path(project))
+ end
+
+ it 'does not display the fast forward merge train message' do
+ page.within '.merge-request-settings-form' do
+ expect(page).not_to have_content 'merging is only possible if the branch can be rebased without conflicts.'
+ end
+ end
+ end
+
+ describe 'With the fast_forward_merge_trains_support feature flag turned on' do
+ before do
+ sign_in(user)
+ stub_feature_flags(fast_forward_merge_trains_support: true)
+
+ visit(project_settings_merge_requests_path(project))
+ end
+
+ it 'displays the fast forward merge train message' do
+ page.within '.merge-request-settings-form' do
+ expect(page).to have_content 'merging is only possible if the branch can be rebased without conflicts.'
+ end
+ end
+ end
+
context 'when Merge Request are initially disabled', :js do
before do
project.project_feature.update_attribute('merge_requests_access_level', ProjectFeature::DISABLED)
diff --git a/spec/features/projects/settings/monitor_settings_spec.rb b/spec/features/projects/settings/monitor_settings_spec.rb
index 1367ffb0009..c5a5826a778 100644
--- a/spec/features/projects/settings/monitor_settings_spec.rb
+++ b/spec/features/projects/settings/monitor_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :groups_and_projects do
include ListboxHelpers
let_it_be(:project) { create(:project, :repository, create_templates: :issue) }
@@ -11,7 +11,6 @@ RSpec.describe 'Projects > Settings > For a forked project', :js, feature_catego
before do
sign_in(user)
- stub_feature_flags(remove_monitor_metrics: false)
end
describe 'Sidebar > Monitor' do
@@ -19,8 +18,8 @@ RSpec.describe 'Projects > Settings > For a forked project', :js, feature_catego
visit project_path(project)
wait_for_requests
- expect(page).to have_selector('.sidebar-sub-level-items a[aria-label="Monitor"]',
- text: 'Monitor', visible: :hidden)
+ expect(page).to have_selector('.sidebar-sub-level-items a[aria-label="Error Tracking"]',
+ text: 'Error Tracking', visible: :hidden)
end
end
@@ -192,30 +191,5 @@ RSpec.describe 'Projects > Settings > For a forked project', :js, feature_catego
end
end
end
-
- describe 'grafana integration settings form' do
- it 'successfully fills and completes the form' do
- visit project_settings_operations_path(project)
-
- wait_for_requests
-
- within '.js-grafana-integration' do
- click_button('Expand')
- end
-
- expect(page).to have_content('Grafana URL')
- expect(page).to have_content('API token')
- expect(page).to have_button('Save changes')
-
- fill_in('grafana-url', with: 'http://gitlab-test.grafana.net')
- fill_in('grafana-token', with: 'token')
-
- click_button('Save changes')
-
- wait_for_requests
-
- assert_text('Your changes have been saved')
- end
- end
end
end
diff --git a/spec/features/projects/settings/packages_settings_spec.rb b/spec/features/projects/settings/packages_settings_spec.rb
index bf5c779b109..564a71e9a23 100644
--- a/spec/features/projects/settings/packages_settings_spec.rb
+++ b/spec/features/projects/settings/packages_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Packages', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > Packages', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb
index 51858ddf8c5..ef1c03f4f27 100644
--- a/spec/features/projects/settings/pipelines_settings_spec.rb
+++ b/spec/features/projects/settings/pipelines_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Projects > Settings > Pipelines settings", feature_category: :projects do
+RSpec.describe "Projects > Settings > Pipelines settings", feature_category: :groups_and_projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:role) { :developer }
diff --git a/spec/features/projects/settings/project_badges_spec.rb b/spec/features/projects/settings/project_badges_spec.rb
index f4c2265c2c2..1f170300155 100644
--- a/spec/features/projects/settings/project_badges_spec.rb
+++ b/spec/features/projects/settings/project_badges_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Badges', feature_category: :projects do
+RSpec.describe 'Project Badges', feature_category: :groups_and_projects do
include WaitForRequests
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/project_settings_spec.rb b/spec/features/projects/settings/project_settings_spec.rb
index 46a41cfc6f1..1c1bbc7e85c 100644
--- a/spec/features/projects/settings/project_settings_spec.rb
+++ b/spec/features/projects/settings/project_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects settings', feature_category: :projects do
+RSpec.describe 'Projects settings', feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb b/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb
index bdfe6a06dd1..50693dda685 100644
--- a/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb
+++ b/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy',
-feature_category: :projects do
+feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project, reload: true) { create(:project, namespace: user.namespace) }
diff --git a/spec/features/projects/settings/registry_settings_spec.rb b/spec/features/projects/settings/registry_settings_spec.rb
index 68e9b0225ea..b8016a5d2df 100644
--- a/spec/features/projects/settings/registry_settings_spec.rb
+++ b/spec/features/projects/settings/registry_settings_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy',
-feature_category: :projects do
+feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project, reload: true) { create(:project, namespace: user.namespace) }
diff --git a/spec/features/projects/settings/repository_settings_spec.rb b/spec/features/projects/settings/repository_settings_spec.rb
index 08abade7d18..2439e624dd6 100644
--- a/spec/features/projects/settings/repository_settings_spec.rb
+++ b/spec/features/projects/settings/repository_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Repository settings', feature_category: :projects do
+RSpec.describe 'Projects > Settings > Repository settings', feature_category: :groups_and_projects do
include Features::MirroringHelpers
let(:project) { create(:project_empty_repo) }
@@ -10,7 +10,6 @@ RSpec.describe 'Projects > Settings > Repository settings', feature_category: :p
let(:role) { :developer }
before do
- stub_feature_flags(branch_rules: false)
stub_feature_flags(mirror_only_branches_match_regex: false)
project.add_role(user, role)
sign_in(user)
@@ -43,15 +42,7 @@ RSpec.describe 'Projects > Settings > Repository settings', feature_category: :p
end
context 'Branch rules', :js do
- context 'branch_rules feature flag disabled', :js do
- it 'does not render branch rules settings' do
- visit project_settings_repository_path(project)
- expect(page).not_to have_content('Branch rules')
- end
- end
-
it 'renders branch rules settings' do
- stub_feature_flags(branch_rules: true)
visit project_settings_repository_path(project)
expect(page).to have_content('Branch rules')
end
diff --git a/spec/features/projects/settings/secure_files_spec.rb b/spec/features/projects/settings/secure_files_spec.rb
index 9afe1f4de54..7ff1a5f3568 100644
--- a/spec/features/projects/settings/secure_files_spec.rb
+++ b/spec/features/projects/settings/secure_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Secure Files', :js, feature_category: :projects do
+RSpec.describe 'Secure Files', :js, feature_category: :groups_and_projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
@@ -12,6 +12,17 @@ RSpec.describe 'Secure Files', :js, feature_category: :projects do
sign_in(user)
end
+ context 'when disabled at the instance level' do
+ before do
+ stub_config(ci_secure_files: { enabled: false })
+ end
+
+ it 'does not show the secure files settings' do
+ visit project_settings_ci_cd_path(project)
+ expect(page).not_to have_content('Secure Files')
+ end
+ end
+
context 'authenticated user with admin permissions' do
it 'shows the secure files settings' do
visit project_settings_ci_cd_path(project)
diff --git a/spec/features/projects/settings/service_desk_setting_spec.rb b/spec/features/projects/settings/service_desk_setting_spec.rb
index 74139aa0d7f..c18da56f3ee 100644
--- a/spec/features/projects/settings/service_desk_setting_spec.rb
+++ b/spec/features/projects/settings/service_desk_setting_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Service Desk Setting', :js, :clean_gitlab_redis_cache, feature_category: :projects do
+RSpec.describe 'Service Desk Setting', :js, :clean_gitlab_redis_cache, feature_category: :groups_and_projects do
let(:project) { create(:project_empty_repo, :private, service_desk_enabled: false) }
let(:presenter) { project.present(current_user: user) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/slack_application_spec.rb b/spec/features/projects/settings/slack_application_spec.rb
new file mode 100644
index 00000000000..79291094aae
--- /dev/null
+++ b/spec/features/projects/settings/slack_application_spec.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Slack application', :js, feature_category: :integrations do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:user) { create(:user, maintainer_projects: [project]) }
+ let_it_be(:integration) { create(:gitlab_slack_application_integration, project: project) }
+ let(:slack_application_form_path) { edit_project_settings_integration_path(project, integration) }
+
+ before do
+ stub_application_setting(slack_app_enabled: true)
+
+ gitlab_sign_in(user)
+ end
+
+ it 'I can edit slack integration' do
+ visit slack_application_form_path
+
+ within '[data-testid="integration-settings-form"]' do
+ click_link 'Edit'
+ end
+
+ fill_in 'slack_integration_alias', with: 'alias-edited'
+ click_button 'Save changes'
+
+ expect(page).to have_content('The project alias was updated successfully')
+
+ within '[data-testid="integration-settings-form"]' do
+ expect(page).to have_content('alias-edited')
+ end
+ end
+
+ it 'shows the trigger form fields' do
+ visit slack_application_form_path
+
+ expect(page).to have_selector('[data-testid="trigger-fields-group"]')
+ end
+
+ context 'when the integration is disabled' do
+ before do
+ integration.update!(active: false)
+ end
+
+ it 'does not show the trigger form fields' do
+ expect(page).not_to have_selector('[data-testid="trigger-fields-group"]')
+ end
+ end
+end
diff --git a/spec/features/projects/settings/user_archives_project_spec.rb b/spec/features/projects/settings/user_archives_project_spec.rb
index a6aac02d272..e4a5249c678 100644
--- a/spec/features/projects/settings/user_archives_project_spec.rb
+++ b/spec/features/projects/settings/user_archives_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User archives a project', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User archives a project', feature_category: :groups_and_projects do
let(:user) { create(:user) }
before do
diff --git a/spec/features/projects/settings/user_changes_avatar_spec.rb b/spec/features/projects/settings/user_changes_avatar_spec.rb
index 87043aec9b6..c589366d3df 100644
--- a/spec/features/projects/settings/user_changes_avatar_spec.rb
+++ b/spec/features/projects/settings/user_changes_avatar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User changes avatar', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User changes avatar', feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/projects/settings/user_changes_default_branch_spec.rb b/spec/features/projects/settings/user_changes_default_branch_spec.rb
index 67ba16a2716..5886699a192 100644
--- a/spec/features/projects/settings/user_changes_default_branch_spec.rb
+++ b/spec/features/projects/settings/user_changes_default_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User changes default branch', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User changes default branch', feature_category: :groups_and_projects do
include ListboxHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb b/spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb
index 3a58de9aa7d..0006762a971 100644
--- a/spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb
+++ b/spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User interacts with deploy keys", :js, feature_category: :projects do
+RSpec.describe "User interacts with deploy keys", :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb b/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb
index cfefdd54c23..1189f5590f8 100644
--- a/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb
+++ b/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User manages merge request settings', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User manages merge request settings', feature_category: :groups_and_projects do
include ProjectForksHelper
let(:user) { create(:user) }
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 b7463537fb2..df571e13979 100644
--- a/spec/features/projects/settings/user_manages_project_members_spec.rb
+++ b/spec/features/projects/settings/user_manages_project_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User manages project members', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User manages project members', feature_category: :groups_and_projects do
include Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
include ListboxHelpers
diff --git a/spec/features/projects/settings/user_renames_a_project_spec.rb b/spec/features/projects/settings/user_renames_a_project_spec.rb
index a6b72e7a297..5a58c049601 100644
--- a/spec/features/projects/settings/user_renames_a_project_spec.rb
+++ b/spec/features/projects/settings/user_renames_a_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User renames a project', feature_category: :projects do
+RSpec.describe 'Projects > Settings > User renames a project', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace, path: 'gitlab', name: 'sample') }
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 923a6a10671..f0ef4a285ad 100644
--- a/spec/features/projects/settings/user_searches_in_settings_spec.rb
+++ b/spec/features/projects/settings/user_searches_in_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches project settings', :js, feature_category: :projects do
+RSpec.describe 'User searches project settings', :js, feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :repository, namespace: user.namespace, pages_https_only: false) }
diff --git a/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb b/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb
index 65aed4fd06f..1bc5af39f12 100644
--- a/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb
+++ b/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Repository Settings > User sees revoke deploy token modal', :js, feature_category: :projects do
+RSpec.describe 'Repository Settings > User sees revoke deploy token modal', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:role) { :developer }
diff --git a/spec/features/projects/settings/user_tags_project_spec.rb b/spec/features/projects/settings/user_tags_project_spec.rb
index 43e8e5a2d38..6b616b4abed 100644
--- a/spec/features/projects/settings/user_tags_project_spec.rb
+++ b/spec/features/projects/settings/user_tags_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User tags a project', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > User tags a project', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
let!(:topic) { create(:topic, name: 'topic1') }
diff --git a/spec/features/projects/settings/user_transfers_a_project_spec.rb b/spec/features/projects/settings/user_transfers_a_project_spec.rb
index 53b4ee881f9..97871eed296 100644
--- a/spec/features/projects/settings/user_transfers_a_project_spec.rb
+++ b/spec/features/projects/settings/user_transfers_a_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > User transfers a project', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > User transfers a project', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, namespace: user.namespace) }
let(:group) { create(:group) }
diff --git a/spec/features/projects/settings/visibility_settings_spec.rb b/spec/features/projects/settings/visibility_settings_spec.rb
index 5246eda976b..7d41b60199c 100644
--- a/spec/features/projects/settings/visibility_settings_spec.rb
+++ b/spec/features/projects/settings/visibility_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Visibility settings', :js, feature_category: :projects do
+RSpec.describe 'Projects > Settings > Visibility settings', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace, visibility_level: 20) }
diff --git a/spec/features/projects/settings/webhooks_settings_spec.rb b/spec/features/projects/settings/webhooks_settings_spec.rb
index e527d0c9c74..5d345c63d60 100644
--- a/spec/features/projects/settings/webhooks_settings_spec.rb
+++ b/spec/features/projects/settings/webhooks_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Webhook Settings', feature_category: :projects do
+RSpec.describe 'Projects > Settings > Webhook Settings', feature_category: :groups_and_projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:webhooks_path) { project_hooks_path(project) }
diff --git a/spec/features/projects/show/clone_button_spec.rb b/spec/features/projects/show/clone_button_spec.rb
index 48af4bf8277..e3964a37bcf 100644
--- a/spec/features/projects/show/clone_button_spec.rb
+++ b/spec/features/projects/show/clone_button_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > Clone button', feature_category: :projects do
+RSpec.describe 'Projects > Show > Clone button', feature_category: :groups_and_projects do
let_it_be(:admin) { create(:admin) }
let_it_be(:guest) { create(:user) }
let_it_be(:project) { create(:project, :private, :in_group, :repository) }
diff --git a/spec/features/projects/show/download_buttons_spec.rb b/spec/features/projects/show/download_buttons_spec.rb
index e4d50daa6f4..a4df6a56e02 100644
--- a/spec/features/projects/show/download_buttons_spec.rb
+++ b/spec/features/projects/show/download_buttons_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > Download buttons', feature_category: :projects do
+RSpec.describe 'Projects > Show > Download buttons', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:role) { :developer }
let(:status) { 'success' }
diff --git a/spec/features/projects/show/no_password_spec.rb b/spec/features/projects/show/no_password_spec.rb
index 9ead729af83..ff32f779c95 100644
--- a/spec/features/projects/show/no_password_spec.rb
+++ b/spec/features/projects/show/no_password_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'No Password Alert', feature_category: :projects do
+RSpec.describe 'No Password Alert', feature_category: :groups_and_projects do
let_it_be(:message_password_auth_enabled) { 'Your account is authenticated with SSO or SAML. To push and pull over HTTP with Git using this account, you must set a password or set up a Personal Access Token to use instead of a password. For more information, see Clone with HTTPS.' }
let_it_be(:message_password_auth_disabled) { 'Your account is authenticated with SSO or SAML. To push and pull over HTTP with Git using this account, you must set up a Personal Access Token to use instead of a password. For more information, see Clone with HTTPS.' }
diff --git a/spec/features/projects/show/redirects_spec.rb b/spec/features/projects/show/redirects_spec.rb
index d1cb896450f..ef326b92b98 100644
--- a/spec/features/projects/show/redirects_spec.rb
+++ b/spec/features/projects/show/redirects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > Redirects', feature_category: :projects do
+RSpec.describe 'Projects > Show > Redirects', feature_category: :groups_and_projects do
let(:user) { create :user }
let(:public_project) { create :project, :public }
let(:private_project) { create :project, :private }
diff --git a/spec/features/projects/show/rss_spec.rb b/spec/features/projects/show/rss_spec.rb
index c2e8a844094..f57bb5e8df3 100644
--- a/spec/features/projects/show/rss_spec.rb
+++ b/spec/features/projects/show/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > RSS', feature_category: :projects do
+RSpec.describe 'Projects > Show > RSS', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
let(:path) { project_path(project) }
diff --git a/spec/features/projects/show/schema_markup_spec.rb b/spec/features/projects/show/schema_markup_spec.rb
index 8262245c5cb..5c1b519bb6e 100644
--- a/spec/features/projects/show/schema_markup_spec.rb
+++ b/spec/features/projects/show/schema_markup_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > Schema Markup', feature_category: :projects do
+RSpec.describe 'Projects > Show > Schema Markup', feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository, :public, :with_avatar, description: 'foobar', topic_list: 'topic1, topic2') }
it 'shows SoftwareSourceCode structured markup', :js do
diff --git a/spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb b/spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb
index 2f33622d218..997a804e6ac 100644
--- a/spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb
+++ b/spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Project > Show > User interacts with auto devops implicitly enabled banner',
-feature_category: :projects do
+feature_category: :groups_and_projects do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/show/user_interacts_with_stars_spec.rb b/spec/features/projects/show/user_interacts_with_stars_spec.rb
index e2166854ba3..e231068cad0 100644
--- a/spec/features/projects/show/user_interacts_with_stars_spec.rb
+++ b/spec/features/projects/show/user_interacts_with_stars_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User interacts with project stars', feature_category: :projects do
+RSpec.describe 'Projects > Show > User interacts with project stars', feature_category: :groups_and_projects do
let(:project) { create(:project, :public, :repository) }
context 'when user is signed in', :js do
diff --git a/spec/features/projects/show/user_manages_notifications_spec.rb b/spec/features/projects/show/user_manages_notifications_spec.rb
index 8f6535fd4f0..455b931e7f3 100644
--- a/spec/features/projects/show/user_manages_notifications_spec.rb
+++ b/spec/features/projects/show/user_manages_notifications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User manages notifications', :js, feature_category: :projects do
+RSpec.describe 'Projects > Show > User manages notifications', :js, feature_category: :groups_and_projects do
let(:project) { create(:project, :public, :repository) }
before do
diff --git a/spec/features/projects/show/user_sees_collaboration_links_spec.rb b/spec/features/projects/show/user_sees_collaboration_links_spec.rb
index 145500a4c63..29fb20841fd 100644
--- a/spec/features/projects/show/user_sees_collaboration_links_spec.rb
+++ b/spec/features/projects/show/user_sees_collaboration_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :projects do
+RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :groups_and_projects do
using RSpec::Parameterized::TableSyntax
let_it_be(:project) { create(:project, :repository, :public) }
@@ -51,7 +51,8 @@ RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :
end
# The Web IDE
- expect(page).to have_link('Web IDE')
+ click_button 'Edit'
+ expect(page).to have_button('Web IDE')
end
it 'hides the links when the project is archived' do
@@ -73,7 +74,7 @@ RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :
expect(page).not_to have_selector('[data-testid="add-to-tree"]')
- expect(page).not_to have_link('Web IDE')
+ expect(page).not_to have_button('Edit')
end
end
@@ -95,7 +96,7 @@ RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :
end
it "updates Web IDE link" do
- expect(page.has_link?('Web IDE')).to be(expect_ide_link)
+ expect(page.has_button?('Edit')).to be(expect_ide_link)
end
end
end
diff --git a/spec/features/projects/show/user_sees_deletion_failure_message_spec.rb b/spec/features/projects/show/user_sees_deletion_failure_message_spec.rb
index 876eecfe559..0cc8919d1e9 100644
--- a/spec/features/projects/show/user_sees_deletion_failure_message_spec.rb
+++ b/spec/features/projects/show/user_sees_deletion_failure_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User sees a deletion failure message', feature_category: :projects do
+RSpec.describe 'Projects > Show > User sees a deletion failure message', feature_category: :groups_and_projects do
let(:project) { create(:project, :empty_repo, pending_delete: true) }
before do
diff --git a/spec/features/projects/show/user_sees_git_instructions_spec.rb b/spec/features/projects/show/user_sees_git_instructions_spec.rb
index 022f21f198d..5e6857843a6 100644
--- a/spec/features/projects/show/user_sees_git_instructions_spec.rb
+++ b/spec/features/projects/show/user_sees_git_instructions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User sees Git instructions', feature_category: :projects do
+RSpec.describe 'Projects > Show > User sees Git instructions', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
before do
@@ -26,7 +26,7 @@ RSpec.describe 'Projects > Show > User sees Git instructions', feature_category:
expect(page).to have_content('Command line instructions')
end
- expect(page).to have_content("git push -u origin master")
+ expect(page).to have_content("git push --set-upstream origin master")
end
end
@@ -84,7 +84,7 @@ RSpec.describe 'Projects > Show > User sees Git instructions', feature_category:
it "recommends default_branch_name instead of master" do
click_link 'Create empty repository'
- expect(page).to have_content("git push -u origin example_branch")
+ expect(page).to have_content("git push --set-upstream origin example_branch")
end
end
diff --git a/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb b/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb
index 25d241f004e..70e316983d9 100644
--- a/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb
+++ b/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User sees last commit CI status', feature_category: :projects do
+RSpec.describe 'Projects > Show > User sees last commit CI status', feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository, :public) }
it 'shows the project README', :js do
diff --git a/spec/features/projects/show/user_sees_readme_spec.rb b/spec/features/projects/show/user_sees_readme_spec.rb
index a8c91b30f25..36fa800a7cf 100644
--- a/spec/features/projects/show/user_sees_readme_spec.rb
+++ b/spec/features/projects/show/user_sees_readme_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User sees README', feature_category: :projects do
+RSpec.describe 'Projects > Show > User sees README', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :repository, :public) }
diff --git a/spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb b/spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb
index 9eb2d109829..41eab966895 100644
--- a/spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb
+++ b/spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User sees setup shortcut buttons', feature_category: :projects do
+RSpec.describe 'Projects > Show > User sees setup shortcut buttons', feature_category: :groups_and_projects do
# For "New file", "Add license" functionality,
# see spec/features/projects/files/project_owner_creates_license_file_spec.rb
# see spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
diff --git a/spec/features/projects/show/user_uploads_files_spec.rb b/spec/features/projects/show/user_uploads_files_spec.rb
index ed378040ce9..5dde415151b 100644
--- a/spec/features/projects/show/user_uploads_files_spec.rb
+++ b/spec/features/projects/show/user_uploads_files_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User uploads files', feature_category: :projects do
+RSpec.describe 'Projects > Show > User uploads files', feature_category: :groups_and_projects do
include DropzoneHelper
let(:user) { create(:user) }
diff --git a/spec/features/projects/sourcegraph_csp_spec.rb b/spec/features/projects/sourcegraph_csp_spec.rb
index 4c8dd0a7df0..0e1a0c897e8 100644
--- a/spec/features/projects/sourcegraph_csp_spec.rb
+++ b/spec/features/projects/sourcegraph_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Sourcegraph Content Security Policy', feature_category: :projects do
+RSpec.describe 'Sourcegraph Content Security Policy', feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :repository, namespace: user.namespace) }
diff --git a/spec/features/projects/sub_group_issuables_spec.rb b/spec/features/projects/sub_group_issuables_spec.rb
index 2502d969305..601f88708f4 100644
--- a/spec/features/projects/sub_group_issuables_spec.rb
+++ b/spec/features/projects/sub_group_issuables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Subgroup Issuables', :js, feature_category: :projects do
+RSpec.describe 'Subgroup Issuables', :js, feature_category: :groups_and_projects do
let!(:group) { create(:group, name: 'group') }
let!(:subgroup) { create(:group, parent: group, name: 'subgroup') }
let!(:project) { create(:project, namespace: subgroup, name: 'project') }
diff --git a/spec/features/projects/terraform_spec.rb b/spec/features/projects/terraform_spec.rb
index b7500b0cfb7..518fa79f003 100644
--- a/spec/features/projects/terraform_spec.rb
+++ b/spec/features/projects/terraform_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Terraform', :js, feature_category: :projects do
+RSpec.describe 'Terraform', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project) }
let_it_be(:terraform_state) { create(:terraform_state, :locked, :with_version, project: project) }
diff --git a/spec/features/projects/tree/rss_spec.rb b/spec/features/projects/tree/rss_spec.rb
index 0b016ee3dd9..176c5d85d93 100644
--- a/spec/features/projects/tree/rss_spec.rb
+++ b/spec/features/projects/tree/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Tree RSS', feature_category: :projects do
+RSpec.describe 'Project Tree RSS', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
let(:path) { project_tree_path(project, :master) }
diff --git a/spec/features/projects/tree/upload_file_spec.rb b/spec/features/projects/tree/upload_file_spec.rb
index 6ec57af2590..47139013b67 100644
--- a/spec/features/projects/tree/upload_file_spec.rb
+++ b/spec/features/projects/tree/upload_file_spec.rb
@@ -27,7 +27,7 @@ RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide
set_cookie('new_repo', 'false')
end
- it 'uploads text file' do
+ it 'uploads text file', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/415220' do
wait_for_all_requests
# make the field visible so capybara can use it
execute_script('document.querySelector("#file-upload").classList.remove("hidden")')
diff --git a/spec/features/projects/user_changes_project_visibility_spec.rb b/spec/features/projects/user_changes_project_visibility_spec.rb
index 64af25aea28..f27a659f65f 100644
--- a/spec/features/projects/user_changes_project_visibility_spec.rb
+++ b/spec/features/projects/user_changes_project_visibility_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User changes public project visibility', :js, feature_category: :projects do
+RSpec.describe 'User changes public project visibility', :js, feature_category: :groups_and_projects do
include ProjectForksHelper
shared_examples 'changing visibility to private' do
diff --git a/spec/features/projects/user_creates_project_spec.rb b/spec/features/projects/user_creates_project_spec.rb
index af0bd932095..484808dcfd1 100644
--- a/spec/features/projects/user_creates_project_spec.rb
+++ b/spec/features/projects/user_creates_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates a project', :js, feature_category: :projects do
+RSpec.describe 'User creates a project', :js, feature_category: :groups_and_projects do
let(:user) { create(:user) }
before do
diff --git a/spec/features/projects/user_sees_sidebar_spec.rb b/spec/features/projects/user_sees_sidebar_spec.rb
index 3a6e11356a2..5a744be5d81 100644
--- a/spec/features/projects/user_sees_sidebar_spec.rb
+++ b/spec/features/projects/user_sees_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > User sees sidebar', feature_category: :projects do
+RSpec.describe 'Projects > User sees sidebar', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let(:project) { create(:project, :private, public_builds: false, namespace: user.namespace) }
diff --git a/spec/features/projects/user_sees_user_popover_spec.rb b/spec/features/projects/user_sees_user_popover_spec.rb
index 9d8d06c514e..523f1366a14 100644
--- a/spec/features/projects/user_sees_user_popover_spec.rb
+++ b/spec/features/projects/user_sees_user_popover_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sees user popover', :js, feature_category: :projects do
+RSpec.describe 'User sees user popover', :js, feature_category: :groups_and_projects do
include Features::NotesHelpers
let_it_be(:user) { create(:user, pronouns: 'they/them') }
diff --git a/spec/features/projects/user_sorts_projects_spec.rb b/spec/features/projects/user_sorts_projects_spec.rb
index 6a18d95c840..b80caca5810 100644
--- a/spec/features/projects/user_sorts_projects_spec.rb
+++ b/spec/features/projects/user_sorts_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sorts projects and order persists', feature_category: :projects do
+RSpec.describe 'User sorts projects and order persists', feature_category: :groups_and_projects do
include CookieHelper
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/user_uses_shortcuts_spec.rb b/spec/features/projects/user_uses_shortcuts_spec.rb
index 1d4ab242308..77f753b92eb 100644
--- a/spec/features/projects/user_uses_shortcuts_spec.rb
+++ b/spec/features/projects/user_uses_shortcuts_spec.rb
@@ -2,14 +2,13 @@
require 'spec_helper'
-RSpec.describe 'User uses shortcuts', :js, feature_category: :projects do
+RSpec.describe 'User uses shortcuts', :js, feature_category: :groups_and_projects do
let_it_be(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
before do
sign_in(user)
- stub_feature_flags(remove_monitor_metrics: false)
visit(project_path(project))
@@ -183,16 +182,6 @@ RSpec.describe 'User uses shortcuts', :js, feature_category: :projects do
end
end
- context 'when navigating to the Monitor pages' do
- it 'redirects to the Metrics page' do
- find('body').native.send_key('g')
- find('body').native.send_key('l')
-
- expect(page).to have_active_navigation('Monitor')
- expect(page).to have_active_sub_navigation('Metrics')
- end
- end
-
context 'when navigating to the Infrastructure pages' do
it 'redirects to the Kubernetes page' do
find('body').native.send_key('g')
diff --git a/spec/features/projects/user_views_empty_project_spec.rb b/spec/features/projects/user_views_empty_project_spec.rb
index e38cfc2273a..ed34b109d29 100644
--- a/spec/features/projects/user_views_empty_project_spec.rb
+++ b/spec/features/projects/user_views_empty_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views an empty project', feature_category: :projects do
+RSpec.describe 'User views an empty project', feature_category: :groups_and_projects do
include Features::InviteMembersModalHelpers
let_it_be(:project) { create(:project, :empty_repo) }
@@ -14,7 +14,7 @@ RSpec.describe 'User views an empty project', feature_category: :projects do
it 'shows push-to-default-branch instructions' do
visit project_path(project)
- expect(page).to have_content("git push -u origin #{default_branch}")
+ expect(page).to have_content("git push --set-upstream origin #{default_branch}")
end
end
@@ -53,7 +53,7 @@ RSpec.describe 'User views an empty project', feature_category: :projects do
it 'does not show push-to-master instructions' do
visit project_path(project)
- expect(page).not_to have_content('git push -u origin')
+ expect(page).not_to have_content('git push --set-upstream origin')
end
end
end
@@ -67,7 +67,7 @@ RSpec.describe 'User views an empty project', feature_category: :projects do
it 'does not show push-to-master instructions nor invite members link', :aggregate_failures, :js do
visit project_path(project)
- expect(page).not_to have_content('git push -u origin')
+ expect(page).not_to have_content('git push --set-upstream origin')
expect(page).not_to have_button(text: 'Invite members')
end
end
diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb
index bf32431fc88..5f502c0297a 100644
--- a/spec/features/projects/view_on_env_spec.rb
+++ b/spec/features/projects/view_on_env_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'View on environment', :js, feature_category: :projects do
+RSpec.describe 'View on environment', :js, feature_category: :groups_and_projects do
let(:branch_name) { 'feature' }
let(:file_path) { 'files/ruby/feature.rb' }
let(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/work_items/work_item_spec.rb b/spec/features/projects/work_items/work_item_spec.rb
index b706a624fc5..e996a76b1c5 100644
--- a/spec/features/projects/work_items/work_item_spec.rb
+++ b/spec/features/projects/work_items/work_item_spec.rb
@@ -4,9 +4,11 @@ require 'spec_helper'
RSpec.describe 'Work item', :js, feature_category: :team_planning do
let_it_be_with_reload(:user) { create(:user) }
+ let_it_be_with_reload(:user2) { create(:user, name: 'John') }
let_it_be(:project) { create(:project, :public) }
let_it_be(:work_item) { create(:work_item, project: project) }
+ let_it_be(:emoji_upvote) { create(:award_emoji, :upvote, awardable: work_item, user: user2) }
let_it_be(:milestone) { create(:milestone, project: project) }
let_it_be(:milestones) { create_list(:milestone, 25, project: project) }
let_it_be(:note) { create(:note, noteable: work_item, project: work_item.project) }
@@ -33,6 +35,10 @@ RSpec.describe 'Work item', :js, feature_category: :team_planning do
end
end
+ it 'actions dropdown is displayed' do
+ expect(page).to have_selector('[data-testid="work-item-actions-dropdown"]')
+ end
+
it_behaves_like 'work items title'
it_behaves_like 'work items status'
it_behaves_like 'work items assignees'
@@ -74,10 +80,6 @@ RSpec.describe 'Work item', :js, feature_category: :team_planning do
visit work_items_path
end
- it 'actions dropdown is not displayed' do
- expect(page).not_to have_selector('[data-testid="work-item-actions-dropdown"]')
- end
-
it 'todos action is not displayed' do
expect(page).not_to have_selector('[data-testid="work-item-todos-action"]')
end
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index 73ee250a8b8..d28fafaac45 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project', feature_category: :projects do
+RSpec.describe 'Project', feature_category: :groups_and_projects do
include ProjectForksHelper
include MobileHelpers
diff --git a/spec/features/protected_branches_spec.rb b/spec/features/protected_branches_spec.rb
index e4a64d391b0..9244cafbc0b 100644
--- a/spec/features/protected_branches_spec.rb
+++ b/spec/features/protected_branches_spec.rb
@@ -27,7 +27,7 @@ RSpec.describe 'Protected Branches', :js, feature_category: :source_code_managem
find('input[data-testid="branch-search"]').set('fix')
find('input[data-testid="branch-search"]').native.send_keys(:enter)
- expect(page).to have_button('Only a project maintainer or owner can delete a protected branch', disabled: true)
+ expect(page).not_to have_button('Delete protected branch')
end
end
end
@@ -64,9 +64,11 @@ RSpec.describe 'Protected Branches', :js, feature_category: :source_code_managem
expect(page).to have_content('fix')
expect(find('.all-branches')).to have_selector('li', count: 1)
+ find('[data-testid="branch-more-actions"] button').click
+ wait_for_requests
expect(page).to have_button('Delete protected branch', disabled: false)
- page.find('.js-delete-branch-button').click
+ find('[data-testid="delete-branch-button"]').click
fill_in 'delete_branch_input', with: 'fix'
click_button 'Yes, delete protected branch'
diff --git a/spec/features/oauth_registration_spec.rb b/spec/features/registrations/oauth_registration_spec.rb
index c88a018a592..c88a018a592 100644
--- a/spec/features/oauth_registration_spec.rb
+++ b/spec/features/registrations/oauth_registration_spec.rb
diff --git a/spec/features/registrations/registration_spec.rb b/spec/features/registrations/registration_spec.rb
new file mode 100644
index 00000000000..7a409b3934e
--- /dev/null
+++ b/spec/features/registrations/registration_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Registrations', feature_category: :system_access do
+ context 'when the user visits the registration page when already signed in', :clean_gitlab_redis_sessions do
+ let_it_be(:current_user) { create(:user) }
+
+ before do
+ sign_in(current_user)
+ end
+
+ it 'does not show an "You are already signed in" error message' do
+ visit new_user_registration_path
+
+ wait_for_requests
+
+ expect(page).not_to have_content(I18n.t('devise.failure.already_authenticated'))
+ end
+ end
+end
diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb
index 452a5700e08..4df9109875e 100644
--- a/spec/features/runners_spec.rb
+++ b/spec/features/runners_spec.rb
@@ -49,6 +49,11 @@ RSpec.describe 'Runners', feature_category: :runner_fleet do
it_behaves_like 'creates runner and shows register page' do
let(:register_path_pattern) { register_project_runner_path(project, '.*') }
end
+
+ it 'shows the locked field' do
+ expect(page).to have_selector('input[type="checkbox"][name="locked"]')
+ expect(page).to have_content(_('Lock to current projects'))
+ end
end
end
diff --git a/spec/features/snippets/explore_spec.rb b/spec/features/snippets/explore_spec.rb
index ef4b75ac3b4..2e06125963e 100644
--- a/spec/features/snippets/explore_spec.rb
+++ b/spec/features/snippets/explore_spec.rb
@@ -6,16 +6,15 @@ RSpec.describe 'Explore Snippets', feature_category: :source_code_management do
let!(:public_snippet) { create(:personal_snippet, :public) }
let!(:internal_snippet) { create(:personal_snippet, :internal) }
let!(:private_snippet) { create(:personal_snippet, :private) }
- let(:user) { nil }
-
- before do
- sign_in(user) if user
- visit explore_snippets_path
- end
context 'User' do
let(:user) { create(:user) }
+ before do
+ sign_in(user)
+ visit explore_snippets_path
+ end
+
it 'see snippets that are not private' do
expect(page).to have_content(public_snippet.title)
expect(page).to have_content(internal_snippet.title)
@@ -31,6 +30,11 @@ RSpec.describe 'Explore Snippets', feature_category: :source_code_management do
context 'External user' do
let(:user) { create(:user, :external) }
+ before do
+ sign_in(user)
+ visit explore_snippets_path
+ end
+
it 'see only public snippets' do
expect(page).to have_content(public_snippet.title)
expect(page).not_to have_content(internal_snippet.title)
@@ -55,6 +59,10 @@ RSpec.describe 'Explore Snippets', feature_category: :source_code_management do
end
context 'Not authenticated user' do
+ before do
+ visit explore_snippets_path
+ end
+
it 'see only public snippets' do
expect(page).to have_content(public_snippet.title)
expect(page).not_to have_content(internal_snippet.title)
diff --git a/spec/features/tags/developer_creates_tag_spec.rb b/spec/features/tags/developer_creates_tag_spec.rb
index cb59ee17514..be9f19fe84a 100644
--- a/spec/features/tags/developer_creates_tag_spec.rb
+++ b/spec/features/tags/developer_creates_tag_spec.rb
@@ -20,7 +20,10 @@ RSpec.describe 'Developer creates tag', :js, feature_category: :source_code_mana
end
it 'with an invalid name displays an error' do
- create_tag_in_form(tag: 'v 1.0', ref: 'master')
+ fill_in 'tag_name', with: 'v 1.0'
+ select_ref(ref: 'master')
+
+ click_button 'Create tag'
expect(page).to have_content 'Tag name invalid'
end
@@ -39,13 +42,20 @@ RSpec.describe 'Developer creates tag', :js, feature_category: :source_code_mana
end
it 'that already exists displays an error' do
- create_tag_in_form(tag: 'v1.1.0', ref: 'master')
+ fill_in 'tag_name', with: 'v1.1.0'
+ select_ref(ref: 'master')
+
+ click_button 'Create tag'
expect(page).to have_content 'Tag v1.1.0 already exists'
end
it 'with multiline message displays the message in a <pre> block' do
- create_tag_in_form(tag: 'v3.0', ref: 'master', message: "Awesome tag message\n\n- hello\n- world")
+ fill_in 'tag_name', with: 'v3.0'
+ select_ref(ref: 'master')
+ fill_in 'message', with: "Awesome tag message\n\n- hello\n- world"
+
+ click_button 'Create tag'
expect(page).to have_current_path(
project_tag_path(project, 'v3.0'), ignore_query: true)
@@ -67,14 +77,6 @@ RSpec.describe 'Developer creates tag', :js, feature_category: :source_code_mana
end
end
- def create_tag_in_form(tag:, ref:, message: nil, desc: nil)
- fill_in 'tag_name', with: tag
- select_ref(ref: ref)
- fill_in 'message', with: message unless message.nil?
- fill_in 'release_description', with: desc unless desc.nil?
- click_button 'Create tag'
- end
-
def select_ref(ref:)
ref_selector = '.ref-selector'
find(ref_selector).click
diff --git a/spec/features/topic_show_spec.rb b/spec/features/topic_show_spec.rb
index 39b8782ea58..7c2c6c2dd12 100644
--- a/spec/features/topic_show_spec.rb
+++ b/spec/features/topic_show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Topic show page', feature_category: :projects do
+RSpec.describe 'Topic show page', feature_category: :groups_and_projects do
let_it_be(:topic) { create(:topic, name: 'my-topic', title: 'My Topic', description: 'This is **my** topic https://google.com/ :poop: ```\ncode\n```', avatar: fixture_file_upload("spec/fixtures/dk.png", "image/png")) }
context 'when topic does not exist' do
diff --git a/spec/features/unsubscribe_links_spec.rb b/spec/features/unsubscribe_links_spec.rb
index 28699bc2c24..77ef3df97f6 100644
--- a/spec/features/unsubscribe_links_spec.rb
+++ b/spec/features/unsubscribe_links_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe 'Unsubscribe links', :sidekiq_inline, feature_category: :shared d
let_it_be(:recipient) { create(:user) }
let(:params) { { title: 'A bug!', description: 'Fix it!', assignee_ids: [recipient.id] } }
- let(:issue) { Issues::CreateService.new(container: project, current_user: author, params: params, spam_params: nil).execute[:issue] }
+ let(:issue) { Issues::CreateService.new(container: project, current_user: author, params: params).execute[:issue] }
let(:mail) { ActionMailer::Base.deliveries.last }
let(:body) { Capybara::Node::Simple.new(mail.default_part_body.to_s) }
diff --git a/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb b/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb
index f1023f17d3e..03b072ea417 100644
--- a/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb
+++ b/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe 'User uploads avatar to profile', feature_category: :user_profile
let(:avatar_file_path) { Rails.root.join('spec', 'fixtures', 'dk.png') }
before do
+ stub_feature_flags(edit_user_profile_vue: false)
sign_in user
visit profile_path
end
diff --git a/spec/features/users/password_spec.rb b/spec/features/users/password_spec.rb
index ccd383c8a15..f9d69b3e85a 100644
--- a/spec/features/users/password_spec.rb
+++ b/spec/features/users/password_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'User password', feature_category: :system_access do
+ include EmailHelpers
+
describe 'send password reset' do
context 'when recaptcha is enabled' do
before do
@@ -26,5 +28,43 @@ RSpec.describe 'User password', feature_category: :system_access do
expect(page).not_to have_css('.g-recaptcha')
end
end
+
+ context 'when user has multiple emails' do
+ let_it_be(:user) { create(:user, email: 'primary@example.com') }
+ let_it_be(:verified_email) { create(:email, :confirmed, user: user, email: 'second@example.com') }
+ let_it_be(:unverified_email) { create(:email, user: user, email: 'unverified@example.com') }
+
+ before do
+ perform_enqueued_jobs do
+ visit new_user_password_path
+ fill_in 'user_email', with: email
+ click_button 'Reset password'
+ end
+ end
+
+ context 'when user enters the primary email' do
+ let(:email) { user.email }
+
+ it 'send the email to the correct email address' do
+ expect(ActionMailer::Base.deliveries.first.to).to include(email)
+ end
+ end
+
+ context 'when user enters a secondary verified email' do
+ let(:email) { verified_email.email }
+
+ it 'send the email to the correct email address' do
+ expect(ActionMailer::Base.deliveries.first.to).to include(email)
+ end
+ end
+
+ context 'when user enters an unverified email' do
+ let(:email) { unverified_email.email }
+
+ it 'does not send an email' do
+ expect(ActionMailer::Base.deliveries.count).to eq(0)
+ end
+ end
+ end
end
end
diff --git a/spec/features/users/signup_spec.rb b/spec/features/users/signup_spec.rb
index d65eea3671c..850dd0bbc5d 100644
--- a/spec/features/users/signup_spec.rb
+++ b/spec/features/users/signup_spec.rb
@@ -3,10 +3,8 @@
require 'spec_helper'
RSpec.shared_examples 'Signup name validation' do |field, max_length, label|
- flag_values = [true, false]
- flag_values.each do |val|
+ shared_examples 'signup validation' do
before do
- stub_feature_flags(restyle_login_page: val)
visit new_user_registration_path
end
@@ -42,6 +40,18 @@ RSpec.shared_examples 'Signup name validation' do |field, max_length, label|
end
end
end
+
+ include_examples 'signup validation'
+
+ # Inline `shared_example 'signup validation'` again after feature flag
+ # `restyle_login_page` was removed.
+ context 'with feature flag restyle_login_page disabled' do
+ before do
+ stub_feature_flags(restyle_login_page: false)
+ end
+
+ include_examples 'signup validation'
+ end
end
RSpec.describe 'Signup', :js, feature_category: :user_profile do
@@ -49,25 +59,32 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
let(:new_user) { build_stubbed(:user) }
- def fill_in_signup_form
- fill_in 'new_user_username', with: new_user.username
- fill_in 'new_user_email', with: new_user.email
- fill_in 'new_user_first_name', with: new_user.first_name
- fill_in 'new_user_last_name', with: new_user.last_name
- fill_in 'new_user_password', with: new_user.password
+ let(:terms_text) do
+ <<~TEXT.squish
+ By clicking Register or registering through a third party you accept the
+ Terms of Use and acknowledge the Privacy Policy and Cookie Policy
+ TEXT
end
- def confirm_email
- new_user_token = User.find_by_email(new_user.email).confirmation_token
+ shared_examples 'signup process' do
+ def fill_in_signup_form
+ fill_in 'new_user_username', with: new_user.username
+ fill_in 'new_user_email', with: new_user.email
+ fill_in 'new_user_first_name', with: new_user.first_name
+ fill_in 'new_user_last_name', with: new_user.last_name
+ fill_in 'new_user_password', with: new_user.password
- visit user_confirmation_path(confirmation_token: new_user_token)
- end
+ wait_for_all_requests
+ end
+
+ def confirm_email
+ new_user_token = User.find_by_email(new_user.email).confirmation_token
+
+ visit user_confirmation_path(confirmation_token: new_user_token)
+ end
- flag_values = [true, false]
- flag_values.each do |val|
before do
stub_feature_flags(arkose_labs_signup_challenge: false)
- stub_feature_flags(restyle_login_page: val)
stub_application_setting(require_admin_approval_after_user_signup: false)
end
@@ -162,7 +179,8 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
expect(page).to have_content("Invalid input, please avoid emojis")
end
- it 'shows a pending message if the username availability is being fetched', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/31484' do
+ it 'shows a pending message if the username availability is being fetched',
+ quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/31484' do
fill_in 'new_user_username', with: 'new-user'
expect(find('.username > .validation-pending')).not_to have_css '.hide'
@@ -263,7 +281,10 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
expect { click_button 'Register' }.to change { User.count }.by(1)
expect(page).to have_current_path new_user_session_path, ignore_query: true
- expect(page).to have_content("You have signed up successfully. However, we could not sign you in because your account is awaiting approval from your GitLab administrator")
+ expect(page).to have_content(<<~TEXT.squish)
+ You have signed up successfully. However, we could not sign you in
+ because your account is awaiting approval from your GitLab administrator
+ TEXT
end
end
end
@@ -305,13 +326,26 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
it 'renders text that the user confirms terms by signing in' do
visit new_user_registration_path
- expect(page).to have_content(/By clicking Register, I agree that I have read and accepted the Terms of Use and Privacy Policy/)
+ expect(page).to have_content(terms_text)
fill_in_signup_form
click_button 'Register'
- expect(page).to have_current_path users_sign_up_welcome_path, ignore_query: true
+ expect(page).to have_current_path(users_sign_up_welcome_path), ignore_query: true
+ visit new_project_path
+
+ select 'Software Developer', from: 'user_role'
+ click_button 'Get started!'
+
+ created_user = User.find_by_username(new_user.username)
+
+ expect(created_user.software_developer_role?).to be_truthy
+ expect(created_user.setup_for_company).to be_nil
+ expect(page).to have_current_path(new_project_path)
end
+
+ it_behaves_like 'Signup name validation', 'new_user_first_name', 127, 'First name'
+ it_behaves_like 'Signup name validation', 'new_user_last_name', 127, 'Last name'
end
context 'when reCAPTCHA and invisible captcha are enabled' do
@@ -337,7 +371,8 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
expect { click_button 'Register' }.not_to change { User.count }
expect(page).to have_content(_('There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.'))
- expect(page).to have_content("Minimum length is #{Gitlab::CurrentSettings.minimum_password_length} characters")
+ expect(page).to have_content(
+ "Minimum length is #{Gitlab::CurrentSettings.minimum_password_length} characters")
end
end
@@ -357,7 +392,6 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
visit new_user_registration_path
fill_in_signup_form
- wait_for_all_requests
click_button 'Register'
@@ -393,34 +427,22 @@ RSpec.describe 'Signup', :js, feature_category: :user_profile do
end
end
- context 'when terms are enforced' do
- before do
- enforce_terms
- end
-
- it 'renders text that the user confirms terms by signing in' do
- visit new_user_registration_path
-
- expect(page).to have_content(/By clicking Register, I agree that I have read and accepted the Terms of Use and Privacy Policy/)
-
- fill_in_signup_form
- click_button 'Register'
-
- visit new_project_path
-
- expect(page).to have_current_path(users_sign_up_welcome_path)
+ include_examples 'signup process'
- select 'Software Developer', from: 'user_role'
- click_button 'Get started!'
-
- created_user = User.find_by_username(new_user.username)
+ # Inline `shared_example 'signup process'` again after feature flag
+ # `restyle_login_page` was removed.
+ context 'with feature flag restyle_login_page disabled' do
+ let(:terms_text) do
+ <<~TEXT.squish
+ By clicking Register, I agree that I have read and accepted the Terms of
+ Use and Privacy Policy
+ TEXT
+ end
- expect(created_user.software_developer_role?).to be_truthy
- expect(created_user.setup_for_company).to be_nil
- expect(page).to have_current_path(new_project_path)
+ before do
+ stub_feature_flags(restyle_login_page: false)
end
- it_behaves_like 'Signup name validation', 'new_user_first_name', 127, 'First name'
- it_behaves_like 'Signup name validation', 'new_user_last_name', 127, 'Last name'
+ include_examples 'signup process'
end
end
diff --git a/spec/features/users/user_browses_projects_on_user_page_spec.rb b/spec/features/users/user_browses_projects_on_user_page_spec.rb
index 52ca2397582..8bdc09f3f87 100644
--- a/spec/features/users/user_browses_projects_on_user_page_spec.rb
+++ b/spec/features/users/user_browses_projects_on_user_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Users > User browses projects on user page', :js, feature_category: :projects do
+RSpec.describe 'Users > User browses projects on user page', :js, feature_category: :groups_and_projects do
let!(:user) { create :user }
let!(:private_project) do
create :project, :private, name: 'private', namespace: user.namespace do |project|
@@ -129,7 +129,7 @@ RSpec.describe 'Users > User browses projects on user page', :js, feature_catego
end
before do
- Issues::CreateService.new(container: contributed_project, current_user: user, params: { title: 'Bug in old browser' }, spam_params: nil).execute
+ Issues::CreateService.new(container: contributed_project, current_user: user, params: { title: 'Bug in old browser' }).execute
event = create(:push_event, project: contributed_project, author: user)
create(:push_event_payload, event: event, commit_count: 3)
end