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>2022-12-20 17:22:11 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-12-20 17:22:11 +0300
commit0c872e02b2c822e3397515ec324051ff540f0cd5 (patch)
treece2fb6ce7030e4dad0f4118d21ab6453e5938cdd /spec/features
parentf7e05a6853b12f02911494c4b3fe53d9540d74fc (diff)
Add latest changes from gitlab-org/gitlab@15-7-stable-eev15.7.0-rc42
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/abuse_report_spec.rb2
-rw-r--r--spec/features/action_cable_logging_spec.rb2
-rw-r--r--spec/features/admin/admin_abuse_reports_spec.rb2
-rw-r--r--spec/features/admin/admin_appearance_spec.rb2
-rw-r--r--spec/features/admin/admin_broadcast_messages_spec.rb2
-rw-r--r--spec/features/admin/admin_browse_spam_logs_spec.rb9
-rw-r--r--spec/features/admin/admin_deploy_keys_spec.rb2
-rw-r--r--spec/features/admin/admin_dev_ops_reports_spec.rb2
-rw-r--r--spec/features/admin/admin_disables_git_access_protocol_spec.rb2
-rw-r--r--spec/features/admin/admin_disables_two_factor_spec.rb2
-rw-r--r--spec/features/admin/admin_groups_spec.rb2
-rw-r--r--spec/features/admin/admin_health_check_spec.rb2
-rw-r--r--spec/features/admin/admin_hook_logs_spec.rb2
-rw-r--r--spec/features/admin/admin_hooks_spec.rb15
-rw-r--r--spec/features/admin/admin_jobs_spec.rb2
-rw-r--r--spec/features/admin/admin_labels_spec.rb2
-rw-r--r--spec/features/admin/admin_manage_applications_spec.rb2
-rw-r--r--spec/features/admin/admin_mode/login_spec.rb2
-rw-r--r--spec/features/admin/admin_mode/logout_spec.rb2
-rw-r--r--spec/features/admin/admin_mode/workers_spec.rb2
-rw-r--r--spec/features/admin/admin_mode_spec.rb2
-rw-r--r--spec/features/admin/admin_projects_spec.rb2
-rw-r--r--spec/features/admin/admin_runners_spec.rb18
-rw-r--r--spec/features/admin/admin_search_settings_spec.rb2
-rw-r--r--spec/features/admin/admin_sees_background_migrations_spec.rb2
-rw-r--r--spec/features/admin/admin_sees_project_statistics_spec.rb2
-rw-r--r--spec/features/admin/admin_sees_projects_statistics_spec.rb2
-rw-r--r--spec/features/admin/admin_settings_spec.rb12
-rw-r--r--spec/features/admin/admin_system_info_spec.rb2
-rw-r--r--spec/features/admin/admin_users_impersonation_tokens_spec.rb2
-rw-r--r--spec/features/admin/admin_users_spec.rb2
-rw-r--r--spec/features/admin/admin_uses_repository_checks_spec.rb2
-rw-r--r--spec/features/admin/dashboard_spec.rb6
-rw-r--r--spec/features/admin/integrations/instance_integrations_spec.rb2
-rw-r--r--spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb3
-rw-r--r--spec/features/admin/users/user_spec.rb2
-rw-r--r--spec/features/admin/users/users_spec.rb6
-rw-r--r--spec/features/admin_variables_spec.rb2
-rw-r--r--spec/features/alert_management/alert_details_spec.rb6
-rw-r--r--spec/features/alert_management/alert_management_list_spec.rb2
-rw-r--r--spec/features/alert_management/user_filters_alerts_by_status_spec.rb2
-rw-r--r--spec/features/alert_management/user_searches_alerts_spec.rb2
-rw-r--r--spec/features/alert_management/user_updates_alert_status_spec.rb2
-rw-r--r--spec/features/alert_management_spec.rb2
-rw-r--r--spec/features/alerts_settings/user_views_alerts_settings_spec.rb2
-rw-r--r--spec/features/atom/dashboard_issues_spec.rb2
-rw-r--r--spec/features/atom/dashboard_spec.rb2
-rw-r--r--spec/features/atom/issues_spec.rb2
-rw-r--r--spec/features/atom/merge_requests_spec.rb2
-rw-r--r--spec/features/atom/users_spec.rb2
-rw-r--r--spec/features/boards/board_filters_spec.rb4
-rw-r--r--spec/features/boards/boards_spec.rb124
-rw-r--r--spec/features/boards/focus_mode_spec.rb2
-rw-r--r--spec/features/boards/issue_ordering_spec.rb2
-rw-r--r--spec/features/boards/keyboard_shortcut_spec.rb2
-rw-r--r--spec/features/boards/multi_select_spec.rb2
-rw-r--r--spec/features/boards/multiple_boards_spec.rb2
-rw-r--r--spec/features/boards/new_issue_spec.rb2
-rw-r--r--spec/features/boards/reload_boards_on_browser_back_spec.rb2
-rw-r--r--spec/features/boards/sidebar_assignee_spec.rb5
-rw-r--r--spec/features/boards/sidebar_labels_in_namespaces_spec.rb2
-rw-r--r--spec/features/boards/sidebar_labels_spec.rb2
-rw-r--r--spec/features/boards/sidebar_spec.rb2
-rw-r--r--spec/features/boards/user_adds_lists_to_board_spec.rb2
-rw-r--r--spec/features/boards/user_visits_board_spec.rb2
-rw-r--r--spec/features/breadcrumbs_schema_markup_spec.rb2
-rw-r--r--spec/features/broadcast_messages_spec.rb8
-rw-r--r--spec/features/calendar_spec.rb19
-rw-r--r--spec/features/callouts/registration_enabled_spec.rb6
-rw-r--r--spec/features/canonical_link_spec.rb2
-rw-r--r--spec/features/clusters/cluster_detail_page_spec.rb2
-rw-r--r--spec/features/clusters/cluster_health_dashboard_spec.rb3
-rw-r--r--spec/features/clusters/create_agent_spec.rb6
-rw-r--r--spec/features/commit_spec.rb2
-rw-r--r--spec/features/commits/user_uses_quick_actions_spec.rb2
-rw-r--r--spec/features/commits/user_view_commits_spec.rb2
-rw-r--r--spec/features/commits_spec.rb4
-rw-r--r--spec/features/contextual_sidebar_spec.rb2
-rw-r--r--spec/features/cycle_analytics_spec.rb2
-rw-r--r--spec/features/dashboard/activity_spec.rb2
-rw-r--r--spec/features/dashboard/archived_projects_spec.rb2
-rw-r--r--spec/features/dashboard/datetime_on_tooltips_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/issuables_counter_spec.rb25
-rw-r--r--spec/features/dashboard/issues_filter_spec.rb2
-rw-r--r--spec/features/dashboard/issues_spec.rb2
-rw-r--r--spec/features/dashboard/label_filter_spec.rb2
-rw-r--r--spec/features/dashboard/merge_requests_spec.rb2
-rw-r--r--spec/features/dashboard/milestones_spec.rb2
-rw-r--r--spec/features/dashboard/project_member_activity_index_spec.rb2
-rw-r--r--spec/features/dashboard/projects_spec.rb10
-rw-r--r--spec/features/dashboard/root_explore_spec.rb24
-rw-r--r--spec/features/dashboard/shortcuts_spec.rb2
-rw-r--r--spec/features/dashboard/snippets_spec.rb2
-rw-r--r--spec/features/dashboard/todos/target_state_spec.rb2
-rw-r--r--spec/features/dashboard/todos/todos_filtering_spec.rb22
-rw-r--r--spec/features/dashboard/todos/todos_sorting_spec.rb2
-rw-r--r--spec/features/dashboard/todos/todos_spec.rb119
-rw-r--r--spec/features/dashboard/user_filters_projects_spec.rb177
-rw-r--r--spec/features/discussion_comments/commit_spec.rb2
-rw-r--r--spec/features/discussion_comments/issue_spec.rb2
-rw-r--r--spec/features/discussion_comments/merge_request_spec.rb2
-rw-r--r--spec/features/discussion_comments/snippets_spec.rb2
-rw-r--r--spec/features/display_system_header_and_footer_bar_spec.rb2
-rw-r--r--spec/features/error_pages_spec.rb2
-rw-r--r--spec/features/error_tracking/user_filters_errors_by_status_spec.rb3
-rw-r--r--spec/features/error_tracking/user_searches_sentry_errors_spec.rb3
-rw-r--r--spec/features/error_tracking/user_sees_error_details_spec.rb3
-rw-r--r--spec/features/error_tracking/user_sees_error_index_spec.rb3
-rw-r--r--spec/features/expand_collapse_diffs_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/explore/topics_spec.rb2
-rw-r--r--spec/features/explore/user_explores_projects_spec.rb4
-rw-r--r--spec/features/file_uploads/attachment_spec.rb2
-rw-r--r--spec/features/file_uploads/ci_artifact_spec.rb2
-rw-r--r--spec/features/file_uploads/git_lfs_spec.rb2
-rw-r--r--spec/features/file_uploads/graphql_add_design_spec.rb2
-rw-r--r--spec/features/file_uploads/group_import_spec.rb2
-rw-r--r--spec/features/file_uploads/maven_package_spec.rb2
-rw-r--r--spec/features/file_uploads/multipart_invalid_uploads_spec.rb4
-rw-r--r--spec/features/file_uploads/nuget_package_spec.rb2
-rw-r--r--spec/features/file_uploads/project_import_spec.rb2
-rw-r--r--spec/features/file_uploads/rubygem_package_spec.rb2
-rw-r--r--spec/features/file_uploads/user_avatar_spec.rb2
-rw-r--r--spec/features/frequently_visited_projects_and_groups_spec.rb2
-rw-r--r--spec/features/gitlab_experiments_spec.rb2
-rw-r--r--spec/features/global_search_spec.rb2
-rw-r--r--spec/features/graphiql_spec.rb2
-rw-r--r--spec/features/graphql_known_operations_spec.rb2
-rw-r--r--spec/features/group_variables_spec.rb2
-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/clusters/user_spec.rb2
-rw-r--r--spec/features/groups/container_registry_spec.rb4
-rw-r--r--spec/features/groups/crm/contacts/create_spec.rb2
-rw-r--r--spec/features/groups/dependency_proxy_for_containers_spec.rb2
-rw-r--r--spec/features/groups/dependency_proxy_spec.rb2
-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_runners_spec.rb2
-rw-r--r--spec/features/groups/group_settings_spec.rb4
-rw-r--r--spec/features/groups/import_export/connect_instance_spec.rb108
-rw-r--r--spec/features/groups/import_export/export_file_spec.rb2
-rw-r--r--spec/features/groups/import_export/import_file_spec.rb2
-rw-r--r--spec/features/groups/import_export/migration_history_spec.rb2
-rw-r--r--spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb2
-rw-r--r--spec/features/groups/issues_spec.rb6
-rw-r--r--spec/features/groups/labels/create_spec.rb2
-rw-r--r--spec/features/groups/labels/edit_spec.rb2
-rw-r--r--spec/features/groups/labels/index_spec.rb2
-rw-r--r--spec/features/groups/labels/search_labels_spec.rb2
-rw-r--r--spec/features/groups/labels/sort_labels_spec.rb2
-rw-r--r--spec/features/groups/labels/subscription_spec.rb2
-rw-r--r--spec/features/groups/labels/user_sees_links_to_issuables_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.rb2
-rw-r--r--spec/features/groups/members/manage_members_spec.rb4
-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/merge_requests_spec.rb2
-rw-r--r--spec/features/groups/milestone_spec.rb2
-rw-r--r--spec/features/groups/milestones/gfm_autocomplete_spec.rb2
-rw-r--r--spec/features/groups/milestones_sorting_spec.rb2
-rw-r--r--spec/features/groups/navbar_spec.rb2
-rw-r--r--spec/features/groups/new_group_page_spec.rb2
-rw-r--r--spec/features/groups/packages_spec.rb2
-rw-r--r--spec/features/groups/settings/access_tokens_spec.rb2
-rw-r--r--spec/features/groups/settings/ci_cd_spec.rb7
-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/packages_and_registries_spec.rb2
-rw-r--r--spec/features/groups/settings/repository_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.rb3
-rw-r--r--spec/features/groups_spec.rb10
-rw-r--r--spec/features/help_dropdown_spec.rb2
-rw-r--r--spec/features/help_pages_spec.rb2
-rw-r--r--spec/features/ics/dashboard_issues_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/ide/clientside_preview_csp_spec.rb2
-rw-r--r--spec/features/ide/static_object_external_storage_csp_spec.rb2
-rw-r--r--spec/features/ide/user_opens_merge_request_spec.rb2
-rw-r--r--spec/features/ide_spec.rb19
-rw-r--r--spec/features/import/manifest_import_spec.rb4
-rw-r--r--spec/features/incidents/incident_details_spec.rb2
-rw-r--r--spec/features/incidents/incident_timeline_events_spec.rb10
-rw-r--r--spec/features/incidents/incidents_list_spec.rb2
-rw-r--r--spec/features/incidents/user_creates_new_incident_spec.rb2
-rw-r--r--spec/features/incidents/user_filters_incidents_by_status_spec.rb2
-rw-r--r--spec/features/incidents/user_searches_incidents_spec.rb2
-rw-r--r--spec/features/incidents/user_uses_quick_actions_spec.rb2
-rw-r--r--spec/features/incidents/user_views_incident_spec.rb4
-rw-r--r--spec/features/invites_spec.rb10
-rw-r--r--spec/features/issuables/issuable_list_spec.rb8
-rw-r--r--spec/features/issuables/markdown_references/internal_references_spec.rb2
-rw-r--r--spec/features/issuables/markdown_references/jira_spec.rb2
-rw-r--r--spec/features/issuables/shortcuts_issuable_spec.rb4
-rw-r--r--spec/features/issuables/sorting_list_spec.rb2
-rw-r--r--spec/features/issuables/user_sees_sidebar_spec.rb2
-rw-r--r--spec/features/issue_rebalancing_spec.rb6
-rw-r--r--spec/features/issues/confidential_notes_spec.rb2
-rw-r--r--spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb2
-rw-r--r--spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb2
-rw-r--r--spec/features/issues/csv_spec.rb2
-rw-r--r--spec/features/issues/discussion_lock_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/dropdown_assignee_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/dropdown_author_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/dropdown_base_spec.rb3
-rw-r--r--spec/features/issues/filtered_search/dropdown_emoji_spec.rb3
-rw-r--r--spec/features/issues/filtered_search/dropdown_hint_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/dropdown_label_spec.rb3
-rw-r--r--spec/features/issues/filtered_search/dropdown_milestone_spec.rb3
-rw-r--r--spec/features/issues/filtered_search/dropdown_release_spec.rb3
-rw-r--r--spec/features/issues/filtered_search/filter_issues_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/recent_searches_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/search_bar_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/visual_tokens_spec.rb2
-rw-r--r--spec/features/issues/form_spec.rb4
-rw-r--r--spec/features/issues/gfm_autocomplete_spec.rb2
-rw-r--r--spec/features/issues/group_label_sidebar_spec.rb2
-rw-r--r--spec/features/issues/incident_issue_spec.rb2
-rw-r--r--spec/features/issues/issue_detail_spec.rb2
-rw-r--r--spec/features/issues/issue_header_spec.rb10
-rw-r--r--spec/features/issues/issue_sidebar_spec.rb2
-rw-r--r--spec/features/issues/issue_state_spec.rb2
-rw-r--r--spec/features/issues/keyboard_shortcut_spec.rb2
-rw-r--r--spec/features/issues/markdown_toolbar_spec.rb2
-rw-r--r--spec/features/issues/move_spec.rb2
-rw-r--r--spec/features/issues/note_polling_spec.rb2
-rw-r--r--spec/features/issues/notes_on_issues_spec.rb2
-rw-r--r--spec/features/issues/related_issues_spec.rb2
-rw-r--r--spec/features/issues/resource_label_events_spec.rb2
-rw-r--r--spec/features/issues/rss_spec.rb2
-rw-r--r--spec/features/issues/service_desk_spec.rb2
-rw-r--r--spec/features/issues/spam_akismet_issue_creation_spec.rb2
-rw-r--r--spec/features/issues/todo_spec.rb2
-rw-r--r--spec/features/issues/user_bulk_edits_issues_labels_spec.rb2
-rw-r--r--spec/features/issues/user_bulk_edits_issues_spec.rb2
-rw-r--r--spec/features/issues/user_comments_on_issue_spec.rb2
-rw-r--r--spec/features/issues/user_creates_branch_and_merge_request_spec.rb6
-rw-r--r--spec/features/issues/user_creates_confidential_merge_request_spec.rb2
-rw-r--r--spec/features/issues/user_creates_issue_by_email_spec.rb2
-rw-r--r--spec/features/issues/user_creates_issue_spec.rb2
-rw-r--r--spec/features/issues/user_edits_issue_spec.rb4
-rw-r--r--spec/features/issues/user_filters_issues_spec.rb2
-rw-r--r--spec/features/issues/user_interacts_with_awards_spec.rb6
-rw-r--r--spec/features/issues/user_resets_their_incoming_email_token_spec.rb2
-rw-r--r--spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb2
-rw-r--r--spec/features/issues/user_sees_breadcrumb_links_spec.rb2
-rw-r--r--spec/features/issues/user_sees_empty_state_spec.rb2
-rw-r--r--spec/features/issues/user_sees_live_update_spec.rb2
-rw-r--r--spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb2
-rw-r--r--spec/features/issues/user_sorts_issue_comments_spec.rb2
-rw-r--r--spec/features/issues/user_sorts_issues_spec.rb2
-rw-r--r--spec/features/issues/user_toggles_subscription_spec.rb2
-rw-r--r--spec/features/issues/user_uses_quick_actions_spec.rb2
-rw-r--r--spec/features/issues/user_views_issue_spec.rb2
-rw-r--r--spec/features/issues/user_views_issues_spec.rb2
-rw-r--r--spec/features/jira_connect/branches_spec.rb24
-rw-r--r--spec/features/jira_connect/subscriptions_spec.rb2
-rw-r--r--spec/features/jira_oauth_provider_authorize_spec.rb2
-rw-r--r--spec/features/labels_hierarchy_spec.rb3
-rw-r--r--spec/features/markdown/copy_as_gfm_spec.rb12
-rw-r--r--spec/features/markdown/gitlab_flavored_markdown_spec.rb2
-rw-r--r--spec/features/markdown/json_table_spec.rb2
-rw-r--r--spec/features/markdown/keyboard_shortcuts_spec.rb2
-rw-r--r--spec/features/markdown/kroki_spec.rb2
-rw-r--r--spec/features/markdown/markdown_spec.rb9
-rw-r--r--spec/features/markdown/math_spec.rb2
-rw-r--r--spec/features/markdown/metrics_spec.rb2
-rw-r--r--spec/features/markdown/observability_spec.rb83
-rw-r--r--spec/features/markdown/sandboxed_mermaid_spec.rb2
-rw-r--r--spec/features/merge_request/batch_comments_spec.rb2
-rw-r--r--spec/features/merge_request/close_reopen_report_toggle_spec.rb20
-rw-r--r--spec/features/merge_request/maintainer_edits_fork_spec.rb3
-rw-r--r--spec/features/merge_request/merge_request_discussion_lock_spec.rb2
-rw-r--r--spec/features/merge_request/user_accepts_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb3
-rw-r--r--spec/features/merge_request/user_approves_spec.rb2
-rw-r--r--spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb42
-rw-r--r--spec/features/merge_request/user_assigns_themselves_spec.rb16
-rw-r--r--spec/features/merge_request/user_awards_emoji_spec.rb2
-rw-r--r--spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb2
-rw-r--r--spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb3
-rw-r--r--spec/features/merge_request/user_comments_on_commit_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_creates_image_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_creates_merge_request_spec.rb4
-rw-r--r--spec/features/merge_request/user_creates_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_customizes_merge_commit_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_assignees_sidebar_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb2
-rw-r--r--spec/features/merge_request/user_expands_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb2
-rw-r--r--spec/features/merge_request/user_locks_discussion_spec.rb2
-rw-r--r--spec/features/merge_request/user_manages_subscription_spec.rb2
-rw-r--r--spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_immediately_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb2
-rw-r--r--spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb2
-rw-r--r--spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_opens_context_commits_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_posts_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_posts_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_rebases_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_conflicts_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_wip_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_reverts_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_reviews_image_spec.rb2
-rw-r--r--spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_breadcrumb_links_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_closing_issues_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_deleted_target_branch_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_deployment_widget_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_discussions_navigation_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_discussions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb3
-rw-r--r--spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_widget_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_page_metadata_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb3
-rw-r--r--spec/features/merge_request/user_sees_pipelines_spec.rb4
-rw-r--r--spec/features/merge_request/user_sees_suggest_pipeline_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_system_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_versions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_wip_help_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb2
-rw-r--r--spec/features/merge_request/user_squashes_merge_request_spec.rb2
-rw-r--r--spec/features/merge_request/user_suggests_changes_on_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_toggles_whitespace_changes_spec.rb2
-rw-r--r--spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb3
-rw-r--r--spec/features/merge_request/user_uses_quick_actions_spec.rb3
-rw-r--r--spec/features/merge_request/user_views_auto_expanding_diff_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_commit_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_file_by_file_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_diffs_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb2
-rw-r--r--spec/features/merge_request/user_views_open_merge_request_spec.rb2
-rw-r--r--spec/features/merge_requests/filters_generic_behavior_spec.rb2
-rw-r--r--spec/features/merge_requests/rss_spec.rb2
-rw-r--r--spec/features/merge_requests/user_exports_as_csv_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_approvals_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_assignees_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_deployments_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_draft_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_labels_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_milestones_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb2
-rw-r--r--spec/features/merge_requests/user_filters_by_target_branch_spec.rb2
-rw-r--r--spec/features/merge_requests/user_lists_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_mass_updates_spec.rb2
-rw-r--r--spec/features/merge_requests/user_sees_empty_state_spec.rb2
-rw-r--r--spec/features/merge_requests/user_sorts_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_all_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_closed_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_merged_merge_requests_spec.rb2
-rw-r--r--spec/features/merge_requests/user_views_open_merge_requests_spec.rb2
-rw-r--r--spec/features/milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_creates_milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_deletes_milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_edits_milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_promotes_milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_sees_breadcrumb_links_spec.rb2
-rw-r--r--spec/features/milestones/user_views_milestone_spec.rb2
-rw-r--r--spec/features/milestones/user_views_milestones_spec.rb2
-rw-r--r--spec/features/monitor_sidebar_link_spec.rb55
-rw-r--r--spec/features/nav/new_nav_toggle_spec.rb71
-rw-r--r--spec/features/nav/top_nav_responsive_spec.rb2
-rw-r--r--spec/features/nav/top_nav_tooltip_spec.rb2
-rw-r--r--spec/features/oauth_login_spec.rb2
-rw-r--r--spec/features/oauth_provider_authorize_spec.rb2
-rw-r--r--spec/features/oauth_registration_spec.rb2
-rw-r--r--spec/features/one_trust_spec.rb2
-rw-r--r--spec/features/participants_autocomplete_spec.rb2
-rw-r--r--spec/features/password_reset_spec.rb2
-rw-r--r--spec/features/populate_new_pipeline_vars_with_params_spec.rb44
-rw-r--r--spec/features/profile_spec.rb2
-rw-r--r--spec/features/profiles/account_spec.rb2
-rw-r--r--spec/features/profiles/active_sessions_spec.rb2
-rw-r--r--spec/features/profiles/chat_names_spec.rb2
-rw-r--r--spec/features/profiles/emails_spec.rb2
-rw-r--r--spec/features/profiles/gpg_keys_spec.rb2
-rw-r--r--spec/features/profiles/keys_spec.rb4
-rw-r--r--spec/features/profiles/oauth_applications_spec.rb2
-rw-r--r--spec/features/profiles/password_spec.rb2
-rw-r--r--spec/features/profiles/personal_access_tokens_spec.rb2
-rw-r--r--spec/features/profiles/two_factor_auths_spec.rb2
-rw-r--r--spec/features/profiles/user_changes_notified_of_own_activity_spec.rb3
-rw-r--r--spec/features/profiles/user_edit_preferences_spec.rb22
-rw-r--r--spec/features/profiles/user_edit_profile_spec.rb2
-rw-r--r--spec/features/profiles/user_manages_applications_spec.rb2
-rw-r--r--spec/features/profiles/user_manages_emails_spec.rb2
-rw-r--r--spec/features/profiles/user_search_settings_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_notifications_tab_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_account_page_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_authentication_log_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_preferences_page_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_spec.rb2
-rw-r--r--spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb2
-rw-r--r--spec/features/project_group_variables_spec.rb2
-rw-r--r--spec/features/project_variables_spec.rb2
-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_design_activity_spec.rb2
-rw-r--r--spec/features/projects/activity/user_sees_design_comment_spec.rb2
-rw-r--r--spec/features/projects/activity/user_sees_private_activity_spec.rb2
-rw-r--r--spec/features/projects/artifacts/file_spec.rb2
-rw-r--r--spec/features/projects/artifacts/raw_spec.rb2
-rw-r--r--spec/features/projects/artifacts/user_browses_artifacts_spec.rb2
-rw-r--r--spec/features/projects/artifacts/user_downloads_artifacts_spec.rb2
-rw-r--r--spec/features/projects/badges/coverage_spec.rb2
-rw-r--r--spec/features/projects/badges/list_spec.rb2
-rw-r--r--spec/features/projects/badges/pipeline_badge_spec.rb2
-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.rb83
-rw-r--r--spec/features/projects/blobs/edit_spec.rb11
-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.rb2
-rw-r--r--spec/features/projects/branches/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/branches/new_branch_ref_dropdown_spec.rb71
-rw-r--r--spec/features/projects/branches/user_creates_branch_spec.rb8
-rw-r--r--spec/features/projects/branches/user_deletes_branch_spec.rb2
-rw-r--r--spec/features/projects/branches/user_views_branches_spec.rb2
-rw-r--r--spec/features/projects/branches_spec.rb6
-rw-r--r--spec/features/projects/ci/editor_spec.rb2
-rw-r--r--spec/features/projects/ci/lint_spec.rb2
-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/gcp_spec.rb2
-rw-r--r--spec/features/projects/clusters/user_spec.rb2
-rw-r--r--spec/features/projects/clusters_spec.rb2
-rw-r--r--spec/features/projects/commit/builds_spec.rb2
-rw-r--r--spec/features/projects/commit/cherry_pick_spec.rb2
-rw-r--r--spec/features/projects/commit/comments/user_adds_comment_spec.rb2
-rw-r--r--spec/features/projects/commit/comments/user_deletes_comments_spec.rb2
-rw-r--r--spec/features/projects/commit/comments/user_edits_comments_spec.rb2
-rw-r--r--spec/features/projects/commit/diff_notes_spec.rb2
-rw-r--r--spec/features/projects/commit/mini_pipeline_graph_spec.rb2
-rw-r--r--spec/features/projects/commit/user_comments_on_commit_spec.rb2
-rw-r--r--spec/features/projects/commit/user_reverts_commit_spec.rb2
-rw-r--r--spec/features/projects/commit/user_views_user_status_on_commit_spec.rb2
-rw-r--r--spec/features/projects/commits/multi_view_diff_spec.rb2
-rw-r--r--spec/features/projects/commits/rss_spec.rb2
-rw-r--r--spec/features/projects/commits/user_browses_commits_spec.rb23
-rw-r--r--spec/features/projects/compare_spec.rb16
-rw-r--r--spec/features/projects/confluence/user_views_confluence_page_spec.rb2
-rw-r--r--spec/features/projects/container_registry_spec.rb4
-rw-r--r--spec/features/projects/deploy_keys_spec.rb2
-rw-r--r--spec/features/projects/diffs/diff_show_spec.rb2
-rw-r--r--spec/features/projects/environments/environment_metrics_spec.rb2
-rw-r--r--spec/features/projects/environments/environment_spec.rb73
-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/feature_flags/user_deletes_feature_flag_spec.rb2
-rw-r--r--spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb6
-rw-r--r--spec/features/projects/feature_flags/user_updates_feature_flag_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.rb3
-rw-r--r--spec/features/projects/files/template_selector_menu_spec.rb2
-rw-r--r--spec/features/projects/files/template_type_dropdown_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.rb3
-rw-r--r--spec/features/projects/files/user_browses_files_spec.rb39
-rw-r--r--spec/features/projects/files/user_browses_lfs_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_creates_directory_spec.rb2
-rw-r--r--spec/features/projects/files/user_creates_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_deletes_files_spec.rb2
-rw-r--r--spec/features/projects/files/user_edits_files_spec.rb2
-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/import_export/export_file_spec.rb6
-rw-r--r--spec/features/projects/import_export/import_file_spec.rb2
-rw-r--r--spec/features/projects/infrastructure_registry_spec.rb2
-rw-r--r--spec/features/projects/integrations/disable_triggers_spec.rb2
-rw-r--r--spec/features/projects/integrations/project_integrations_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_asana_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_assembla_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_emails_on_push_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_flowdock_spec.rb22
-rw-r--r--spec/features/projects/integrations/user_activates_irker_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_jira_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_packagist_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_prometheus_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_pushover_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_slack_notifications_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_uses_inherited_settings_spec.rb2
-rw-r--r--spec/features/projects/integrations/user_views_services_spec.rb2
-rw-r--r--spec/features/projects/issuable_templates_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_paginates_designs_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_permissions_upload_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_uploads_designs_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_views_design_images_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_views_design_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_views_designs_spec.rb2
-rw-r--r--spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb2
-rw-r--r--spec/features/projects/issues/email_participants_spec.rb50
-rw-r--r--spec/features/projects/issues/viewing_relocated_issues_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.rb2
-rw-r--r--spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb2
-rw-r--r--spec/features/projects/jobs_spec.rb6
-rw-r--r--spec/features/projects/labels/issues_sorted_by_priority_spec.rb2
-rw-r--r--spec/features/projects/labels/search_labels_spec.rb2
-rw-r--r--spec/features/projects/labels/sort_labels_spec.rb2
-rw-r--r--spec/features/projects/labels/subscription_spec.rb2
-rw-r--r--spec/features/projects/labels/update_prioritization_spec.rb2
-rw-r--r--spec/features/projects/labels/user_creates_labels_spec.rb2
-rw-r--r--spec/features/projects/labels/user_edits_labels_spec.rb2
-rw-r--r--spec/features/projects/labels/user_promotes_label_spec.rb2
-rw-r--r--spec/features/projects/labels/user_removes_labels_spec.rb2
-rw-r--r--spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb2
-rw-r--r--spec/features/projects/labels/user_sees_links_to_issuables_spec.rb2
-rw-r--r--spec/features/projects/labels/user_views_labels_spec.rb2
-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.rb3
-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.rb3
-rw-r--r--spec/features/projects/members/groups_with_access_list_spec.rb2
-rw-r--r--spec/features/projects/members/manage_groups_spec.rb2
-rw-r--r--spec/features/projects/members/manage_members_spec.rb20
-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.rb2
-rw-r--r--spec/features/projects/milestones/gfm_autocomplete_spec.rb2
-rw-r--r--spec/features/projects/milestones/milestone_spec.rb2
-rw-r--r--spec/features/projects/milestones/milestones_sorting_spec.rb2
-rw-r--r--spec/features/projects/milestones/new_spec.rb2
-rw-r--r--spec/features/projects/milestones/user_interacts_with_labels_spec.rb2
-rw-r--r--spec/features/projects/navbar_spec.rb2
-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.rb2
-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/pages/user_adds_domain_spec.rb2
-rw-r--r--spec/features/projects/pages/user_configures_pages_pipeline_spec.rb10
-rw-r--r--spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb2
-rw-r--r--spec/features/projects/pages/user_edits_settings_spec.rb2
-rw-r--r--spec/features/projects/pipeline_schedules_spec.rb6
-rw-r--r--spec/features/projects/pipelines/legacy_pipeline_spec.rb1315
-rw-r--r--spec/features/projects/pipelines/legacy_pipelines_spec.rb852
-rw-r--r--spec/features/projects/pipelines/pipeline_spec.rb2
-rw-r--r--spec/features/projects/pipelines/pipelines_spec.rb74
-rw-r--r--spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb2
-rw-r--r--spec/features/projects/releases/user_creates_release_spec.rb2
-rw-r--r--spec/features/projects/releases/user_views_edit_release_spec.rb2
-rw-r--r--spec/features/projects/releases/user_views_release_spec.rb2
-rw-r--r--spec/features/projects/releases/user_views_releases_spec.rb2
-rw-r--r--spec/features/projects/remote_mirror_spec.rb2
-rw-r--r--spec/features/projects/settings/access_tokens_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.rb2
-rw-r--r--spec/features/projects/settings/external_authorization_service_settings_spec.rb3
-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.rb2
-rw-r--r--spec/features/projects/settings/monitor_settings_spec.rb2
-rw-r--r--spec/features/projects/settings/packages_settings_spec.rb6
-rw-r--r--spec/features/projects/settings/pipelines_settings_spec.rb4
-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.rb3
-rw-r--r--spec/features/projects/settings/registry_settings_spec.rb3
-rw-r--r--spec/features/projects/settings/repository_settings_spec.rb47
-rw-r--r--spec/features/projects/settings/secure_files_spec.rb29
-rw-r--r--spec/features/projects/settings/service_desk_setting_spec.rb2
-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.rb4
-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.rb22
-rw-r--r--spec/features/projects/settings/webhooks_settings_spec.rb60
-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.rb3
-rw-r--r--spec/features/projects/show/user_interacts_with_stars_spec.rb3
-rw-r--r--spec/features/projects/show/user_manages_notifications_spec.rb5
-rw-r--r--spec/features/projects/show/user_sees_collaboration_links_spec.rb2
-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.rb2
-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/snippets/create_snippet_spec.rb2
-rw-r--r--spec/features/projects/snippets/show_spec.rb2
-rw-r--r--spec/features/projects/snippets/user_comments_on_snippet_spec.rb2
-rw-r--r--spec/features/projects/snippets/user_deletes_snippet_spec.rb2
-rw-r--r--spec/features/projects/snippets/user_updates_snippet_spec.rb2
-rw-r--r--spec/features/projects/snippets/user_views_snippets_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/tags/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/tags/user_edits_tags_spec.rb2
-rw-r--r--spec/features/projects/tags/user_views_tag_spec.rb2
-rw-r--r--spec/features/projects/tags/user_views_tags_spec.rb2
-rw-r--r--spec/features/projects/terraform_spec.rb2
-rw-r--r--spec/features/projects/tree/create_directory_spec.rb2
-rw-r--r--spec/features/projects/tree/create_file_spec.rb2
-rw-r--r--spec/features/projects/tree/rss_spec.rb2
-rw-r--r--spec/features/projects/tree/tree_show_spec.rb17
-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.rb4
-rw-r--r--spec/features/projects/user_sees_user_popover_spec.rb2
-rw-r--r--spec/features/projects/user_sorts_projects_spec.rb8
-rw-r--r--spec/features/projects/user_uses_shortcuts_spec.rb2
-rw-r--r--spec/features/projects/user_views_empty_project_spec.rb2
-rw-r--r--spec/features/projects/view_on_env_spec.rb2
-rw-r--r--spec/features/projects/wiki/user_views_wiki_empty_spec.rb2
-rw-r--r--spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb2
-rw-r--r--spec/features/projects/wikis_spec.rb2
-rw-r--r--spec/features/projects_spec.rb8
-rw-r--r--spec/features/promotion_spec.rb2
-rw-r--r--spec/features/protected_branches_spec.rb2
-rw-r--r--spec/features/protected_tags_spec.rb2
-rw-r--r--spec/features/read_only_spec.rb6
-rw-r--r--spec/features/reportable_note/issue_spec.rb2
-rw-r--r--spec/features/reportable_note/merge_request_spec.rb2
-rw-r--r--spec/features/reportable_note/snippets_spec.rb2
-rw-r--r--spec/features/runners_spec.rb54
-rw-r--r--spec/features/search/user_searches_for_code_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_comments_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_commits_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_issues_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_merge_requests_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_milestones_spec.rb3
-rw-r--r--spec/features/search/user_searches_for_projects_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_users_spec.rb2
-rw-r--r--spec/features/search/user_searches_for_wiki_pages_spec.rb3
-rw-r--r--spec/features/search/user_uses_header_search_field_spec.rb2
-rw-r--r--spec/features/search/user_uses_search_filters_spec.rb2
-rw-r--r--spec/features/security/admin_access_spec.rb2
-rw-r--r--spec/features/security/dashboard_access_spec.rb2
-rw-r--r--spec/features/security/group/internal_access_spec.rb12
-rw-r--r--spec/features/security/group/private_access_spec.rb14
-rw-r--r--spec/features/security/group/public_access_spec.rb12
-rw-r--r--spec/features/security/profile_access_spec.rb2
-rw-r--r--spec/features/security/project/internal_access_spec.rb2
-rw-r--r--spec/features/security/project/private_access_spec.rb2
-rw-r--r--spec/features/security/project/public_access_spec.rb2
-rw-r--r--spec/features/security/project/snippet/internal_access_spec.rb2
-rw-r--r--spec/features/security/project/snippet/private_access_spec.rb2
-rw-r--r--spec/features/security/project/snippet/public_access_spec.rb2
-rw-r--r--spec/features/sentry_js_spec.rb57
-rw-r--r--spec/features/signed_commits_spec.rb2
-rw-r--r--spec/features/snippets/embedded_snippet_spec.rb2
-rw-r--r--spec/features/snippets/explore_spec.rb2
-rw-r--r--spec/features/snippets/internal_snippet_spec.rb2
-rw-r--r--spec/features/snippets/notes_on_personal_snippets_spec.rb2
-rw-r--r--spec/features/snippets/private_snippets_spec.rb2
-rw-r--r--spec/features/snippets/public_snippets_spec.rb2
-rw-r--r--spec/features/snippets/search_snippets_spec.rb2
-rw-r--r--spec/features/snippets/show_spec.rb2
-rw-r--r--spec/features/snippets/spam_snippets_spec.rb3
-rw-r--r--spec/features/snippets/user_creates_snippet_spec.rb2
-rw-r--r--spec/features/snippets/user_deletes_snippet_spec.rb2
-rw-r--r--spec/features/snippets/user_edits_snippet_spec.rb2
-rw-r--r--spec/features/snippets/user_snippets_spec.rb2
-rw-r--r--spec/features/snippets_spec.rb2
-rw-r--r--spec/features/tags/developer_creates_tag_spec.rb46
-rw-r--r--spec/features/tags/developer_deletes_tag_spec.rb2
-rw-r--r--spec/features/tags/developer_views_tags_spec.rb2
-rw-r--r--spec/features/tags/maintainer_deletes_protected_tag_spec.rb2
-rw-r--r--spec/features/task_lists_spec.rb2
-rw-r--r--spec/features/topic_show_spec.rb2
-rw-r--r--spec/features/triggers_spec.rb2
-rw-r--r--spec/features/u2f_spec.rb3
-rw-r--r--spec/features/unsubscribe_links_spec.rb2
-rw-r--r--spec/features/uploads/user_uploads_avatar_to_group_spec.rb2
-rw-r--r--spec/features/uploads/user_uploads_avatar_to_profile_spec.rb2
-rw-r--r--spec/features/uploads/user_uploads_file_to_note_spec.rb2
-rw-r--r--spec/features/usage_stats_consent_spec.rb2
-rw-r--r--spec/features/user_can_display_performance_bar_spec.rb2
-rw-r--r--spec/features/user_opens_link_to_comment_spec.rb2
-rw-r--r--spec/features/user_sees_revert_modal_spec.rb3
-rw-r--r--spec/features/user_sorts_things_spec.rb4
-rw-r--r--spec/features/users/active_sessions_spec.rb28
-rw-r--r--spec/features/users/add_email_to_existing_account_spec.rb2
-rw-r--r--spec/features/users/anonymous_sessions_spec.rb2
-rw-r--r--spec/features/users/bizible_csp_spec.rb2
-rw-r--r--spec/features/users/confirmation_spec.rb2
-rw-r--r--spec/features/users/email_verification_on_login_spec.rb10
-rw-r--r--spec/features/users/google_analytics_csp_spec.rb2
-rw-r--r--spec/features/users/login_spec.rb6
-rw-r--r--spec/features/users/logout_spec.rb2
-rw-r--r--spec/features/users/one_trust_csp_spec.rb2
-rw-r--r--spec/features/users/overview_spec.rb2
-rw-r--r--spec/features/users/password_spec.rb2
-rw-r--r--spec/features/users/rss_spec.rb2
-rw-r--r--spec/features/users/show_spec.rb2
-rw-r--r--spec/features/users/signup_spec.rb13
-rw-r--r--spec/features/users/snippets_spec.rb2
-rw-r--r--spec/features/users/terms_spec.rb2
-rw-r--r--spec/features/users/user_browses_projects_on_user_page_spec.rb2
-rw-r--r--spec/features/users/zuora_csp_spec.rb2
-rw-r--r--spec/features/webauthn_spec.rb2
-rw-r--r--spec/features/whats_new_spec.rb2
-rw-r--r--spec/features/work_items/work_item_children_spec.rb2
-rw-r--r--spec/features/work_items/work_item_spec.rb29
776 files changed, 2011 insertions, 3859 deletions
diff --git a/spec/features/abuse_report_spec.rb b/spec/features/abuse_report_spec.rb
index 5fdd0816006..fdd11b59938 100644
--- a/spec/features/abuse_report_spec.rb
+++ b/spec/features/abuse_report_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Abuse reports' do
+RSpec.describe 'Abuse reports', feature_category: :not_owned do
let(:another_user) { create(:user) }
before do
diff --git a/spec/features/action_cable_logging_spec.rb b/spec/features/action_cable_logging_spec.rb
index cf20b204cc5..c02a41c4c59 100644
--- a/spec/features/action_cable_logging_spec.rb
+++ b/spec/features/action_cable_logging_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'ActionCable logging', :js do
+RSpec.describe 'ActionCable logging', :js, feature_category: :not_owned do
let_it_be(:project) { create(:project, :public) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/admin/admin_abuse_reports_spec.rb b/spec/features/admin/admin_abuse_reports_spec.rb
index 3a02ce89aa9..10f12d7116f 100644
--- a/spec/features/admin/admin_abuse_reports_spec.rb
+++ b/spec/features/admin/admin_abuse_reports_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin::AbuseReports", :js do
+RSpec.describe "Admin::AbuseReports", :js, feature_category: :not_owned do
let(:user) { create(:user) }
context 'as an admin' do
diff --git a/spec/features/admin/admin_appearance_spec.rb b/spec/features/admin/admin_appearance_spec.rb
index b297d92b2fa..5fbe7039c1d 100644
--- a/spec/features/admin/admin_appearance_spec.rb
+++ b/spec/features/admin/admin_appearance_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Appearance' do
+RSpec.describe 'Admin Appearance', feature_category: :not_owned do
let!(:appearance) { create(:appearance) }
let(:admin) { create(:admin) }
diff --git a/spec/features/admin/admin_broadcast_messages_spec.rb b/spec/features/admin/admin_broadcast_messages_spec.rb
index b5416f539f1..a6bbdd70fc3 100644
--- a/spec/features/admin/admin_broadcast_messages_spec.rb
+++ b/spec/features/admin/admin_broadcast_messages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Broadcast Messages' do
+RSpec.describe 'Admin Broadcast Messages', feature_category: :onboarding do
before do
admin = create(:admin)
sign_in(admin)
diff --git a/spec/features/admin/admin_browse_spam_logs_spec.rb b/spec/features/admin/admin_browse_spam_logs_spec.rb
index 471a7e8f0ab..461c9d08273 100644
--- a/spec/features/admin/admin_browse_spam_logs_spec.rb
+++ b/spec/features/admin/admin_browse_spam_logs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin browse spam logs' do
+RSpec.describe 'Admin browse spam logs', feature_category: :not_owned do
let!(:spam_log) { create(:spam_log, description: 'abcde ' * 20) }
before do
@@ -23,4 +23,11 @@ RSpec.describe 'Admin browse spam logs' do
expect(page).to have_link('Remove user')
expect(page).to have_link('Block user')
end
+
+ it 'does not perform N+1 queries' do
+ control_queries = ActiveRecord::QueryRecorder.new { visit admin_spam_logs_path }
+ create(:spam_log)
+
+ expect { visit admin_spam_logs_path }.not_to exceed_query_limit(control_queries)
+ end
end
diff --git a/spec/features/admin/admin_deploy_keys_spec.rb b/spec/features/admin/admin_deploy_keys_spec.rb
index 56b8c7fce14..e55e1cce6b9 100644
--- a/spec/features/admin/admin_deploy_keys_spec.rb
+++ b/spec/features/admin/admin_deploy_keys_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'admin deploy keys', :js do
+RSpec.describe 'admin deploy keys', :js, feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:admin) { create(:admin) }
diff --git a/spec/features/admin/admin_dev_ops_reports_spec.rb b/spec/features/admin/admin_dev_ops_reports_spec.rb
index f65862c568f..f290464b043 100644
--- a/spec/features/admin/admin_dev_ops_reports_spec.rb
+++ b/spec/features/admin/admin_dev_ops_reports_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'DevOps Report page', :js do
+RSpec.describe 'DevOps Report page', :js, feature_category: :devops_reports do
before do
admin = create(:admin)
sign_in(admin)
diff --git a/spec/features/admin/admin_disables_git_access_protocol_spec.rb b/spec/features/admin/admin_disables_git_access_protocol_spec.rb
index b370b779afe..76620b93557 100644
--- a/spec/features/admin/admin_disables_git_access_protocol_spec.rb
+++ b/spec/features/admin/admin_disables_git_access_protocol_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin disables Git access protocol', :js do
+RSpec.describe 'Admin disables Git access protocol', :js, feature_category: :source_code_management do
include StubENV
include MobileHelpers
diff --git a/spec/features/admin/admin_disables_two_factor_spec.rb b/spec/features/admin/admin_disables_two_factor_spec.rb
index 4463dbb1eb0..eed20d449cd 100644
--- a/spec/features/admin/admin_disables_two_factor_spec.rb
+++ b/spec/features/admin/admin_disables_two_factor_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin disables 2FA for a user' do
+RSpec.describe 'Admin disables 2FA for a user', feature_category: :system_access do
include Spec::Support::Helpers::ModalHelpers
it 'successfully', :js do
diff --git a/spec/features/admin/admin_groups_spec.rb b/spec/features/admin/admin_groups_spec.rb
index 657dd52228e..c36a742af6b 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' do
+RSpec.describe 'Admin Groups', feature_category: :subgroups do
include Select2Helper
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
diff --git a/spec/features/admin/admin_health_check_spec.rb b/spec/features/admin/admin_health_check_spec.rb
index 0f6cba6c105..de71a48d2dc 100644
--- a/spec/features/admin/admin_health_check_spec.rb
+++ b/spec/features/admin/admin_health_check_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin Health Check", :feature do
+RSpec.describe "Admin Health Check", feature_category: :continuous_verification do
include StubENV
let_it_be(:admin) { create(:admin) }
diff --git a/spec/features/admin/admin_hook_logs_spec.rb b/spec/features/admin/admin_hook_logs_spec.rb
index a2ee6343886..d6507e68692 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' do
+RSpec.describe 'Admin::HookLogs', feature_category: :continuous_verification 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 dc5b0ae009e..e6630e40147 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' do
+RSpec.describe 'Admin::Hooks', feature_category: :integrations do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:admin) }
@@ -58,10 +58,7 @@ RSpec.describe 'Admin::Hooks' do
describe 'Update existing hook' do
let(:new_url) { generate(:url) }
-
- before do
- create(:system_hook)
- end
+ let_it_be(:hook) { create(:system_hook) }
it 'updates existing hook' do
visit admin_hooks_path
@@ -71,9 +68,9 @@ RSpec.describe 'Admin::Hooks' do
check 'Enable SSL verification'
click_button 'Save changes'
- expect(page).to have_content 'SSL Verification: enabled'
- expect(page).to have_current_path(admin_hooks_path, ignore_query: true)
- expect(page).to have_content(new_url)
+ expect(page).to have_content('Enable SSL verification')
+ expect(page).to have_current_path(edit_admin_hook_path(hook), ignore_query: true)
+ expect(page).to have_content('Recent events')
end
end
@@ -145,7 +142,7 @@ RSpec.describe 'Admin::Hooks' do
visit admin_hooks_path
find('.hook-test-button.dropdown').click
- click_link 'Merge requests events'
+ click_link 'Merge request events'
expect(page).to have_content 'Hook executed successfully'
end
diff --git a/spec/features/admin/admin_jobs_spec.rb b/spec/features/admin/admin_jobs_spec.rb
index 36822f89c12..f0eaa83f05e 100644
--- a/spec/features/admin/admin_jobs_spec.rb
+++ b/spec/features/admin/admin_jobs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Jobs' do
+RSpec.describe 'Admin Jobs', feature_category: :continuous_integration do
before do
admin = create(:admin)
sign_in(admin)
diff --git a/spec/features/admin/admin_labels_spec.rb b/spec/features/admin/admin_labels_spec.rb
index fa5c94aa66e..8d2813d26f7 100644
--- a/spec/features/admin/admin_labels_spec.rb
+++ b/spec/features/admin/admin_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'admin issues labels' do
+RSpec.describe 'admin issues labels', feature_category: :team_planning do
include Spec::Support::Helpers::ModalHelpers
let!(:bug_label) { Label.create!(title: 'bug', template: true) }
diff --git a/spec/features/admin/admin_manage_applications_spec.rb b/spec/features/admin/admin_manage_applications_spec.rb
index 4cf290293bd..b4c77e802a8 100644
--- a/spec/features/admin/admin_manage_applications_spec.rb
+++ b/spec/features/admin/admin_manage_applications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'admin manage applications' do
+RSpec.describe 'admin manage applications', feature_category: :system_access do
let_it_be(:new_application_path) { new_admin_application_path }
let_it_be(:applications_path) { admin_applications_path }
let_it_be(:index_path) { admin_applications_path }
diff --git a/spec/features/admin/admin_mode/login_spec.rb b/spec/features/admin/admin_mode/login_spec.rb
index 6b4c9adb096..393721fe451 100644
--- a/spec/features/admin/admin_mode/login_spec.rb
+++ b/spec/features/admin/admin_mode/login_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Mode Login' do
+RSpec.describe 'Admin Mode Login', feature_category: :authentication_and_authorization do
include TermsHelper
include UserLoginHelper
include LdapHelpers
diff --git a/spec/features/admin/admin_mode/logout_spec.rb b/spec/features/admin/admin_mode/logout_spec.rb
index 3ca66ef0d6a..f4e8941d25a 100644
--- a/spec/features/admin/admin_mode/logout_spec.rb
+++ b/spec/features/admin/admin_mode/logout_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin Mode Logout', :js do
+RSpec.describe 'Admin Mode Logout', :js, feature_category: :authentication_and_authorization do
include TermsHelper
include UserLoginHelper
include Spec::Support::Helpers::Features::TopNavSpecHelpers
diff --git a/spec/features/admin/admin_mode/workers_spec.rb b/spec/features/admin/admin_mode/workers_spec.rb
index 8405e9132b6..f3639fd0800 100644
--- a/spec/features/admin/admin_mode/workers_spec.rb
+++ b/spec/features/admin/admin_mode/workers_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
# Test an operation that triggers background jobs requiring administrative rights
-RSpec.describe 'Admin mode for workers', :request_store do
+RSpec.describe 'Admin mode for workers', :request_store, feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::Features::AdminUsersHelpers
let(:user) { create(:user) }
diff --git a/spec/features/admin/admin_mode_spec.rb b/spec/features/admin/admin_mode_spec.rb
index 33cf0e8c4f8..769ff75b5a2 100644
--- a/spec/features/admin/admin_mode_spec.rb
+++ b/spec/features/admin/admin_mode_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin mode', :js do
+RSpec.describe 'Admin mode', :js, feature_category: :not_owned do
include MobileHelpers
include Spec::Support::Helpers::Features::TopNavSpecHelpers
include StubENV
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index 6b147b01991..0cb813c40f4 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" do
+RSpec.describe "Admin::Projects", feature_category: :projects do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/admin/admin_runners_spec.rb b/spec/features/admin/admin_runners_spec.rb
index 92a3b388994..30fd04b1c3e 100644
--- a/spec/features/admin/admin_runners_spec.rb
+++ b/spec/features/admin/admin_runners_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin Runners" do
+RSpec.describe "Admin Runners", feature_category: :runner_fleet do
include Spec::Support::Helpers::Features::RunnersHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -90,6 +90,22 @@ RSpec.describe "Admin Runners" do
end
end
+ it 'shows a running status badge that links to jobs tab' do
+ runner = create(:ci_runner, :project, projects: [project])
+ job = create(:ci_build, :running, runner: runner)
+
+ visit admin_runners_path
+
+ within_runner_row(runner.id) do
+ click_on(s_('Runners|Running'))
+ end
+
+ expect(current_url).to match(admin_runner_path(runner))
+
+ expect(find("[data-testid='td-status']")).to have_content "running"
+ expect(find("[data-testid='td-job']")).to have_content "##{job.id}"
+ end
+
describe 'search' do
before_all do
create(:ci_runner, :instance, description: 'runner-foo')
diff --git a/spec/features/admin/admin_search_settings_spec.rb b/spec/features/admin/admin_search_settings_spec.rb
index 989cb7cc787..3254bf75738 100644
--- a/spec/features/admin/admin_search_settings_spec.rb
+++ b/spec/features/admin/admin_search_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin searches application settings', :js do
+RSpec.describe 'Admin searches application settings', :js, feature_category: :global_search do
let_it_be(:admin) { create(:admin) }
let_it_be(:application_settings) { create(:application_setting) }
diff --git a/spec/features/admin/admin_sees_background_migrations_spec.rb b/spec/features/admin/admin_sees_background_migrations_spec.rb
index d72259d91b3..e1746dad196 100644
--- a/spec/features/admin/admin_sees_background_migrations_spec.rb
+++ b/spec/features/admin/admin_sees_background_migrations_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin > Admin sees background migrations" do
+RSpec.describe "Admin > Admin sees background migrations", feature_category: :database do
let_it_be(:admin) { create(:admin) }
let(:job_class) { Gitlab::BackgroundMigration::CopyColumnUsingBackgroundMigrationJob }
diff --git a/spec/features/admin/admin_sees_project_statistics_spec.rb b/spec/features/admin/admin_sees_project_statistics_spec.rb
index 9d9217c4574..d3d0625ac43 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" do
+RSpec.describe "Admin > Admin sees project statistics", feature_category: :projects do
let(:current_user) { create(:admin) }
before do
diff --git a/spec/features/admin/admin_sees_projects_statistics_spec.rb b/spec/features/admin/admin_sees_projects_statistics_spec.rb
index d340eb47f34..82361a985ae 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" do
+RSpec.describe "Admin > Admin sees projects statistics", feature_category: :projects do
let(:current_user) { create(:admin) }
before do
diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb
index 72c9053ba49..2ac86ab9f49 100644
--- a/spec/features/admin/admin_settings_spec.rb
+++ b/spec/features/admin/admin_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin updates settings' do
+RSpec.describe 'Admin updates settings', feature_category: :not_owned do
include StubENV
include TermsHelper
include UsageDataHelpers
@@ -71,11 +71,19 @@ RSpec.describe 'Admin updates settings' do
it 'change Visibility and Access Controls' do
page.within('.as-visibility-access') do
- uncheck 'Enabled'
+ page.within('[data-testid="project-export"]') do
+ uncheck 'Enabled'
+ end
+
+ page.within('[data-testid="bulk-import"]') do
+ check 'Enabled'
+ end
+
click_button 'Save changes'
end
expect(current_settings.project_export_enabled).to be_falsey
+ expect(current_settings.bulk_import_enabled).to be(true)
expect(page).to have_content "Application settings saved successfully"
end
diff --git a/spec/features/admin/admin_system_info_spec.rb b/spec/features/admin/admin_system_info_spec.rb
index 8ff31dfded7..6c4a316ae77 100644
--- a/spec/features/admin/admin_system_info_spec.rb
+++ b/spec/features/admin/admin_system_info_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin System Info' do
+RSpec.describe 'Admin System Info', feature_category: :not_owned do
before do
admin = create(:admin)
sign_in(admin)
diff --git a/spec/features/admin/admin_users_impersonation_tokens_spec.rb b/spec/features/admin/admin_users_impersonation_tokens_spec.rb
index d93dac4834e..5e6cc206883 100644
--- a/spec/features/admin/admin_users_impersonation_tokens_spec.rb
+++ b/spec/features/admin/admin_users_impersonation_tokens_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin > Users > Impersonation Tokens', :js do
+RSpec.describe 'Admin > Users > Impersonation Tokens', :js, feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::ModalHelpers
include Spec::Support::Helpers::AccessTokenHelpers
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
index f4b7fa45e4f..1f40f1f1bce 100644
--- a/spec/features/admin/admin_users_spec.rb
+++ b/spec/features/admin/admin_users_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin::Users" do
+RSpec.describe "Admin::Users", feature_category: :user_management do
let(:current_user) { create(:admin) }
before do
diff --git a/spec/features/admin/admin_uses_repository_checks_spec.rb b/spec/features/admin/admin_uses_repository_checks_spec.rb
index 2dffef93600..318572a7664 100644
--- a/spec/features/admin/admin_uses_repository_checks_spec.rb
+++ b/spec/features/admin/admin_uses_repository_checks_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin uses repository checks', :request_store do
+RSpec.describe 'Admin uses repository checks', :request_store, feature_category: :user_management do
include StubENV
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/admin/dashboard_spec.rb b/spec/features/admin/dashboard_spec.rb
index e7ff8c23a8c..baca60134b9 100644
--- a/spec/features/admin/dashboard_spec.rb
+++ b/spec/features/admin/dashboard_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe 'admin visits dashboard' do
gitlab_enable_admin_mode_sign_in(admin)
end
- context 'counting forks', :js do
+ context 'counting forks', :js, feature_category: :source_code_management do
it 'correctly counts 2 forks of a project' do
project = create(:project)
project_fork = fork_project(project)
@@ -28,7 +28,7 @@ RSpec.describe 'admin visits dashboard' do
end
end
- describe 'Users statistic' do
+ describe 'Users statistic', feature_category: :user_management do
let_it_be(:users_statistics) { create(:users_statistics) }
it 'shows correct amounts of users', :aggregate_failures do
@@ -54,7 +54,7 @@ RSpec.describe 'admin visits dashboard' do
end
end
- describe 'Version check', :js do
+ describe 'Version check', :js, feature_category: :deployment_management do
it 'shows badge on CE' do
visit admin_root_path
diff --git a/spec/features/admin/integrations/instance_integrations_spec.rb b/spec/features/admin/integrations/instance_integrations_spec.rb
index 7b326ec161c..3b2ed1d9810 100644
--- a/spec/features/admin/integrations/instance_integrations_spec.rb
+++ b/spec/features/admin/integrations/instance_integrations_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Instance integrations', :js do
+RSpec.describe 'Instance integrations', :js, feature_category: :integrations do
include_context 'instance integration activation'
it_behaves_like 'integration settings form' do
diff --git a/spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb b/spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb
index 22a27b33671..d0ca5d76cc7 100644
--- a/spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb
+++ b/spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'User activates the instance-level Mattermost Slash Command integration', :js do
+RSpec.describe 'User activates the instance-level Mattermost Slash Command integration', :js,
+feature_category: :integrations do
include_context 'instance integration activation'
before do
diff --git a/spec/features/admin/users/user_spec.rb b/spec/features/admin/users/user_spec.rb
index 35b5c755b66..1552d4e6187 100644
--- a/spec/features/admin/users/user_spec.rb
+++ b/spec/features/admin/users/user_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin::Users::User' do
+RSpec.describe 'Admin::Users::User', feature_category: :user_management do
include Spec::Support::Helpers::Features::AdminUsersHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/admin/users/users_spec.rb b/spec/features/admin/users/users_spec.rb
index 9c59f0226e0..4b49e8f4bc6 100644
--- a/spec/features/admin/users/users_spec.rb
+++ b/spec/features/admin/users/users_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Admin::Users' do
+RSpec.describe 'Admin::Users', feature_category: :user_management do
include Spec::Support::Helpers::Features::AdminUsersHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -604,8 +604,8 @@ RSpec.describe 'Admin::Users' do
def sort_by(option)
page.within('.filtered-search-block') do
- find('.gl-new-dropdown').click
- find('.gl-new-dropdown-item', text: option).click
+ find('.gl-dropdown').click
+ find('.gl-dropdown-item', text: option).click
end
end
end
diff --git a/spec/features/admin_variables_spec.rb b/spec/features/admin_variables_spec.rb
index 9ec22bbe948..d1adbf59984 100644
--- a/spec/features/admin_variables_spec.rb
+++ b/spec/features/admin_variables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Instance variables', :js do
+RSpec.describe 'Instance variables', :js, feature_category: :pipeline_authoring do
let(:admin) { create(:admin) }
let(:page_path) { ci_cd_admin_application_settings_path }
diff --git a/spec/features/alert_management/alert_details_spec.rb b/spec/features/alert_management/alert_details_spec.rb
index 579b8221041..45fa4d810aa 100644
--- a/spec/features/alert_management/alert_details_spec.rb
+++ b/spec/features/alert_management/alert_details_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Alert details', :js do
+RSpec.describe 'Alert details', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:alert) { create(:alert_management_alert, project: project, status: 'triggered', title: 'Alert') }
@@ -30,6 +30,8 @@ RSpec.describe 'Alert details', :js do
alert_tabs = find('[data-testid="alertDetailsTabs"]')
expect(alert_tabs).to have_content('Alert details')
+ expect(alert_tabs).to have_content('Metrics')
+ expect(alert_tabs).to have_content('Activity feed')
end
end
@@ -61,7 +63,7 @@ RSpec.describe 'Alert details', :js do
expect(alert_status).to have_content('Triggered')
find('.gl-button').click
- find('.gl-new-dropdown-item', text: 'Acknowledged').click
+ find('.gl-dropdown-item', text: 'Acknowledged').click
wait_for_requests
diff --git a/spec/features/alert_management/alert_management_list_spec.rb b/spec/features/alert_management/alert_management_list_spec.rb
index 2fbce27033e..6ed3bdec5f5 100644
--- a/spec/features/alert_management/alert_management_list_spec.rb
+++ b/spec/features/alert_management/alert_management_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Alert Management index', :js do
+RSpec.describe 'Alert Management index', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/alert_management/user_filters_alerts_by_status_spec.rb b/spec/features/alert_management/user_filters_alerts_by_status_spec.rb
index bebbbcbf5f7..c3dab05550e 100644
--- a/spec/features/alert_management/user_filters_alerts_by_status_spec.rb
+++ b/spec/features/alert_management/user_filters_alerts_by_status_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User filters Alert Management table by status', :js do
+RSpec.describe 'User filters Alert Management table by status', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:alert1, reload: true) { create(:alert_management_alert, :triggered, project: project) }
diff --git a/spec/features/alert_management/user_searches_alerts_spec.rb b/spec/features/alert_management/user_searches_alerts_spec.rb
index 3bb1b260f36..d1e400f4145 100644
--- a/spec/features/alert_management/user_searches_alerts_spec.rb
+++ b/spec/features/alert_management/user_searches_alerts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches Alert Management alerts', :js do
+RSpec.describe 'User searches Alert Management alerts', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:alert) { create(:alert_management_alert, project: project, status: 'triggered') }
diff --git a/spec/features/alert_management/user_updates_alert_status_spec.rb b/spec/features/alert_management/user_updates_alert_status_spec.rb
index 2d7be3a0022..98fd7449c4f 100644
--- a/spec/features/alert_management/user_updates_alert_status_spec.rb
+++ b/spec/features/alert_management/user_updates_alert_status_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User updates Alert Management status', :js do
+RSpec.describe 'User updates Alert Management status', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:alert) { create(:alert_management_alert, project: project, status: 'triggered') }
diff --git a/spec/features/alert_management_spec.rb b/spec/features/alert_management_spec.rb
index 3322c9c574f..de6b385b4cd 100644
--- a/spec/features/alert_management_spec.rb
+++ b/spec/features/alert_management_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Alert management', :js do
+RSpec.describe 'Alert management', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/alerts_settings/user_views_alerts_settings_spec.rb b/spec/features/alerts_settings/user_views_alerts_settings_spec.rb
index 60f2f776595..70223b2c0d4 100644
--- a/spec/features/alerts_settings/user_views_alerts_settings_spec.rb
+++ b/spec/features/alerts_settings/user_views_alerts_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Alert integrations settings form', :js do
+RSpec.describe 'Alert integrations settings form', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:maintainer) { create(:user) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
index 855c91f70d7..4e204224773 100644
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ b/spec/features/atom/dashboard_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Dashboard Issues Feed" do
+RSpec.describe "Dashboard Issues Feed", feature_category: :devops_reports do
describe "GET /issues" do
let!(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb
index 851ae7b02a0..2e9005712bb 100644
--- a/spec/features/atom/dashboard_spec.rb
+++ b/spec/features/atom/dashboard_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Dashboard Feed" do
+RSpec.describe "Dashboard Feed", feature_category: :devops_reports do
describe "GET /" do
let!(:user) { create(:user, name: "Jonh") }
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
index 913f5a7bcf3..89db70c6680 100644
--- a/spec/features/atom/issues_spec.rb
+++ b/spec/features/atom/issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues Feed' do
+RSpec.describe 'Issues Feed', feature_category: :devops_reports do
describe 'GET /issues' do
let_it_be_with_reload(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/atom/merge_requests_spec.rb b/spec/features/atom/merge_requests_spec.rb
index 48db8fcbf1e..b9e1c7042b2 100644
--- a/spec/features/atom/merge_requests_spec.rb
+++ b/spec/features/atom/merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests Feed' do
+RSpec.describe 'Merge Requests Feed', feature_category: :devops_reports do
describe 'GET /merge_requests' do
let_it_be_with_reload(:user) { create(:user, email: 'private1@example.com') }
let_it_be(:assignee) { create(:user, email: 'private2@example.com') }
diff --git a/spec/features/atom/users_spec.rb b/spec/features/atom/users_spec.rb
index ab874408e55..b743f900ae7 100644
--- a/spec/features/atom/users_spec.rb
+++ b/spec/features/atom/users_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User Feed" do
+RSpec.describe "User Feed", feature_category: :devops_reports do
describe "GET /" do
let!(:user) { create(:user) }
diff --git a/spec/features/boards/board_filters_spec.rb b/spec/features/boards/board_filters_spec.rb
index eab92de7e8a..dee63be8119 100644
--- a/spec/features/boards/board_filters_spec.rb
+++ b/spec/features/boards/board_filters_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue board filters', :js do
+RSpec.describe 'Issue board filters', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
let_it_be(:board) { create(:board, project: project) }
@@ -191,7 +191,7 @@ RSpec.describe 'Issue board filters', :js do
end
def expect_filtered_search_dropdown_results(filter_dropdown, count)
- expect(filter_dropdown).to have_selector('.gl-new-dropdown-item', count: count)
+ expect(filter_dropdown).to have_selector('.gl-dropdown-item', count: count)
end
def visit_project_board
diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb
index fee9b5b378e..3e2e391d060 100644
--- a/spec/features/boards/boards_spec.rb
+++ b/spec/features/boards/boards_spec.rb
@@ -2,16 +2,31 @@
require 'spec_helper'
-RSpec.describe 'Project issue boards', :js do
+# Flaky spec warning: the queries in this file routinely exceed the defined GraphQL query limit of 100.
+# Until those queries are optimized, we need to disable query limit checking in order for these tests
+# to pass consistently. Note that removing the disabling code can lead to flaky failures locally and in CI.
+#
+# In addition, it seems as though the use of `let_it_be` might be causing some of the
+# flakiness, as discussed in https://github.com/test-prof/test-prof/blob/master/docs/recipes/let_it_be.md#modifiers.
+# `reload: true` has been added to all `let_it_be` statements.
+#
+# See:
+# - https://gitlab.com/gitlab-org/gitlab/-/issues/323426
+# - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/56458#note_535900110
+# - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102719
+# - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105849
+# - https://gitlab.com/gitlab-org/gitlab/-/issues/383970
+#
+RSpec.describe 'Project issue boards', :js, feature_category: :team_planning do
include DragTo
include MobileHelpers
include BoardHelpers
- let_it_be(:group) { create(:group, :nested) }
- let_it_be(:project) { create(:project, :public, namespace: group) }
- let_it_be(:board) { create(:board, project: project) }
- let_it_be(:user) { create(:user) }
- let_it_be(:user2) { create(:user) }
+ let_it_be(:group, reload: true) { create(:group, :nested) }
+ let_it_be(:project, reload: true) { create(:project, :public, namespace: group) }
+ let_it_be(:board, reload: true) { create(:board, project: project) }
+ let_it_be(:user, reload: true) { create(:user) }
+ let_it_be(:user2, reload: true) { create(:user) }
let(:filtered_search) { find('[data-testid="issue-board-filtered-search"]') }
let(:filter_input) { find('.gl-filtered-search-term-input') }
@@ -47,34 +62,34 @@ RSpec.describe 'Project issue boards', :js do
end
context 'with lists' do
- let_it_be(:milestone) { create(:milestone, project: project) }
-
- let_it_be(:planning) { create(:label, project: project, name: 'Planning', description: 'Test') }
- let_it_be(:development) { create(:label, project: project, name: 'Development') }
- let_it_be(:testing) { create(:label, project: project, name: 'Testing') }
- let_it_be(:bug) { create(:label, project: project, name: 'Bug') }
- let_it_be(:backlog) { create(:label, project: project, name: 'Backlog') }
- let_it_be(:closed) { create(:label, project: project, name: 'Closed') }
- let_it_be(:accepting) { create(:label, project: project, name: 'Accepting Merge Requests') }
- let_it_be(:a_plus) { create(:label, project: project, name: 'A+') }
- let_it_be(:list1) { create(:list, board: board, label: planning, position: 0) }
- let_it_be(:list2) { create(:list, board: board, label: development, position: 1) }
- let_it_be(:backlog_list) { create(:backlog_list, board: board) }
-
- let_it_be(:confidential_issue) { create(:labeled_issue, :confidential, project: project, author: user, labels: [planning], relative_position: 9) }
- let_it_be(:issue1) { create(:labeled_issue, project: project, title: 'aaa', description: '111', assignees: [user], labels: [planning], relative_position: 8) }
- let_it_be(:issue2) { create(:labeled_issue, project: project, title: 'bbb', description: '222', author: user2, labels: [planning], relative_position: 7) }
- let_it_be(:issue3) { create(:labeled_issue, project: project, title: 'ccc', description: '333', labels: [planning], relative_position: 6) }
- let_it_be(:issue4) { create(:labeled_issue, project: project, title: 'ddd', description: '444', labels: [planning], relative_position: 5) }
- let_it_be(:issue5) { create(:labeled_issue, project: project, title: 'eee', description: '555', labels: [planning], milestone: milestone, relative_position: 4) }
- let_it_be(:issue6) { create(:labeled_issue, project: project, title: 'fff', description: '666', labels: [planning, development], relative_position: 3) }
- let_it_be(:issue7) { create(:labeled_issue, project: project, title: 'ggg', description: '777', labels: [development], relative_position: 2) }
- let_it_be(:issue8) { create(:closed_issue, project: project, title: 'hhh', description: '888') }
- let_it_be(:issue9) { create(:labeled_issue, project: project, title: 'iii', description: '999', labels: [planning, testing, bug, accepting], relative_position: 1) }
- let_it_be(:issue10) { create(:labeled_issue, project: project, title: 'issue +', description: 'A+ great issue', labels: [a_plus]) }
+ let_it_be(:milestone, reload: true) { create(:milestone, project: project) }
+
+ let_it_be(:planning, reload: true) { create(:label, project: project, name: 'Planning', description: 'Test') }
+ let_it_be(:development, reload: true) { create(:label, project: project, name: 'Development') }
+ let_it_be(:testing, reload: true) { create(:label, project: project, name: 'Testing') }
+ let_it_be(:bug, reload: true) { create(:label, project: project, name: 'Bug') }
+ let_it_be(:backlog, reload: true) { create(:label, project: project, name: 'Backlog') }
+ let_it_be(:closed, reload: true) { create(:label, project: project, name: 'Closed') }
+ let_it_be(:accepting, reload: true) { create(:label, project: project, name: 'Accepting Merge Requests') }
+ let_it_be(:a_plus, reload: true) { create(:label, project: project, name: 'A+') }
+ let_it_be(:list1, reload: true) { create(:list, board: board, label: planning, position: 0) }
+ let_it_be(:list2, reload: true) { create(:list, board: board, label: development, position: 1) }
+ let_it_be(:backlog_list, reload: true) { create(:backlog_list, board: board) }
+
+ let_it_be(:confidential_issue, reload: true) { create(:labeled_issue, :confidential, project: project, author: user, labels: [planning], relative_position: 9) }
+ let_it_be(:issue1, reload: true) { create(:labeled_issue, project: project, title: 'aaa', description: '111', assignees: [user], labels: [planning], relative_position: 8) }
+ let_it_be(:issue2, reload: true) { create(:labeled_issue, project: project, title: 'bbb', description: '222', author: user2, labels: [planning], relative_position: 7) }
+ let_it_be(:issue3, reload: true) { create(:labeled_issue, project: project, title: 'ccc', description: '333', labels: [planning], relative_position: 6) }
+ let_it_be(:issue4, reload: true) { create(:labeled_issue, project: project, title: 'ddd', description: '444', labels: [planning], relative_position: 5) }
+ let_it_be(:issue5, reload: true) { create(:labeled_issue, project: project, title: 'eee', description: '555', labels: [planning], milestone: milestone, relative_position: 4) }
+ let_it_be(:issue6, reload: true) { create(:labeled_issue, project: project, title: 'fff', description: '666', labels: [planning, development], relative_position: 3) }
+ let_it_be(:issue7, reload: true) { create(:labeled_issue, project: project, title: 'ggg', description: '777', labels: [development], relative_position: 2) }
+ let_it_be(:issue8, reload: true) { create(:closed_issue, project: project, title: 'hhh', description: '888') }
+ let_it_be(:issue9, reload: true) { create(:labeled_issue, project: project, title: 'iii', description: '999', labels: [planning, testing, bug, accepting], relative_position: 1) }
+ let_it_be(:issue10, reload: true) { create(:labeled_issue, project: project, title: 'issue +', description: 'A+ great issue', labels: [a_plus]) }
before do
- visit_project_board(project, board)
+ visit_project_board_path_without_query_limit(project, board)
end
it 'shows description tooltip on list title', :quarantine do
@@ -88,7 +103,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_board_cards(3, 2)
end
- it 'shows confidential issues with icon' do
+ it 'shows confidential issues with icon', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
page.within(find('.board:nth-child(2)')) do
expect(page).to have_selector('.confidential-icon', count: 1)
end
@@ -125,7 +140,7 @@ RSpec.describe 'Project issue boards', :js do
it 'infinite scrolls list' do
create_list(:labeled_issue, 30, project: project, labels: [planning])
- visit_project_board(project, board)
+ visit_project_board_path_without_query_limit(project, board)
page.within(find('.board:nth-child(2)')) do
expect(page.find('.board-header')).to have_content('38')
@@ -164,7 +179,7 @@ RSpec.describe 'Project issue boards', :js do
end
end
- context 'closed' do
+ context 'closed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
it 'shows list of closed issues' do
wait_for_board_cards(4, 1)
wait_for_requests
@@ -204,31 +219,26 @@ RSpec.describe 'Project issue boards', :js do
expect(find('.board:nth-child(3) [data-testid="board-list-header"]')).to have_content(planning.title)
# Make sure list positions are preserved after a reload
- visit_project_board(project, board)
+ visit_project_board_path_without_query_limit(project, board)
expect(find('.board:nth-child(2) [data-testid="board-list-header"]')).to have_content(development.title)
expect(find('.board:nth-child(3) [data-testid="board-list-header"]')).to have_content(planning.title)
end
context 'without backlog and closed lists' do
- let_it_be(:board) { create(:board, project: project, hide_backlog_list: true, hide_closed_list: true) }
- let_it_be(:list1) { create(:list, board: board, label: planning, position: 0) }
- let_it_be(:list2) { create(:list, board: board, label: development, position: 1) }
+ let_it_be(:board, reload: true) { create(:board, project: project, hide_backlog_list: true, hide_closed_list: true) }
+ let_it_be(:list1, reload: true) { create(:list, board: board, label: planning, position: 0) }
+ let_it_be(:list2, reload: true) { create(:list, board: board, label: development, position: 1) }
it 'changes position of list' do
- inspect_requests(inject_headers: { 'X-GITLAB-DISABLE-SQL-QUERY-LIMIT' => 'https://gitlab.com/gitlab-org/gitlab/-/issues/323426' }) do
- visit_project_board(project, board)
- end
+ visit_project_board_path_without_query_limit(project, board)
drag(list_from_index: 0, list_to_index: 1, selector: '.board-header')
expect(find('.board:nth-child(1) [data-testid="board-list-header"]')).to have_content(development.title)
expect(find('.board:nth-child(2) [data-testid="board-list-header"]')).to have_content(planning.title)
- inspect_requests(inject_headers: { 'X-GITLAB-DISABLE-SQL-QUERY-LIMIT' => 'https://gitlab.com/gitlab-org/gitlab/-/issues/323426' }) do
- # Make sure list positions are preserved after a reload
- visit_project_board(project, board)
- end
+ visit_project_board_path_without_query_limit(project, board)
expect(find('.board:nth-child(1) [data-testid="board-list-header"]')).to have_content(development.title)
expect(find('.board:nth-child(2) [data-testid="board-list-header"]')).to have_content(planning.title)
@@ -246,7 +256,7 @@ RSpec.describe 'Project issue boards', :js do
expect(page).to have_selector(selector, text: development.title, count: 1)
end
- it 'issue moves between lists and does not show the "Development" label since the card is in the "Development" list label' do
+ it 'issue moves between lists and does not show the "Development" label since the card is in the "Development" list label', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
drag(list_from_index: 1, from_index: 1, list_to_index: 2)
wait_for_board_cards(2, 7)
@@ -257,7 +267,7 @@ RSpec.describe 'Project issue boards', :js do
expect(find('.board:nth-child(3)').all('.board-card').last).not_to have_content(development.title)
end
- it 'issue moves between lists and does not show the "Planning" label since the card is in the "Planning" list label' do
+ it 'issue moves between lists and does not show the "Planning" label since the card is in the "Planning" list label', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
drag(list_from_index: 2, list_to_index: 1)
wait_for_board_cards(2, 9)
@@ -268,7 +278,7 @@ RSpec.describe 'Project issue boards', :js do
expect(find('.board:nth-child(2)').all('.board-card').first).not_to have_content(planning.title)
end
- it 'issue moves from closed' do
+ it 'issue moves from closed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
drag(list_from_index: 2, list_to_index: 3)
wait_for_board_cards(2, 8)
@@ -285,7 +295,7 @@ RSpec.describe 'Project issue boards', :js do
end
end
- context 'list header' do
+ context 'list header', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
let(:total_planning_issues) { "8" }
it 'shows issue count on the list' do
@@ -309,7 +319,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_empty_boards((3..4))
end
- it 'filters by assignee' do
+ it 'filters by assignee', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
set_filter("assignee", user.username)
click_on user.username
filter_submit.click
@@ -331,7 +341,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_board_cards(4, 0)
end
- it 'filters by label' do
+ it 'filters by label', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
set_filter("label", testing.title)
click_on testing.title
filter_submit.click
@@ -390,7 +400,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_board_cards(2, 8)
end
- it 'infinite scrolls list with label filter' do
+ it 'infinite scrolls list with label filter', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383970' do
create_list(:labeled_issue, 30, project: project, labels: [planning, testing])
set_filter("label", testing.title)
@@ -531,7 +541,7 @@ RSpec.describe 'Project issue boards', :js do
end
context 'as guest user' do
- let_it_be(:user_guest) { create(:user) }
+ let_it_be(:user_guest, reload: true) { create(:user) }
before do
stub_feature_flags(apollo_boards: false)
@@ -601,4 +611,10 @@ RSpec.describe 'Project issue boards', :js do
wait_for_requests
end
+
+ def visit_project_board_path_without_query_limit(project, board)
+ inspect_requests(inject_headers: { 'X-GITLAB-DISABLE-SQL-QUERY-LIMIT' => 'https://gitlab.com/gitlab-org/gitlab/-/issues/323426' }) do
+ visit_project_board(project, board)
+ end
+ end
end
diff --git a/spec/features/boards/focus_mode_spec.rb b/spec/features/boards/focus_mode_spec.rb
index 453a8d8870b..8f3ce25b583 100644
--- a/spec/features/boards/focus_mode_spec.rb
+++ b/spec/features/boards/focus_mode_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Boards focus mode', :js do
+RSpec.describe 'Issue Boards focus mode', :js, feature_category: :team_planning do
let(:project) { create(:project, :public) }
before do
diff --git a/spec/features/boards/issue_ordering_spec.rb b/spec/features/boards/issue_ordering_spec.rb
index a3dda3b9d2f..f1ee7a8fde7 100644
--- a/spec/features/boards/issue_ordering_spec.rb
+++ b/spec/features/boards/issue_ordering_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Boards', :js do
+RSpec.describe 'Issue Boards', :js, feature_category: :team_planning do
include DragTo
let(:project) { create(:project, :public) }
diff --git a/spec/features/boards/keyboard_shortcut_spec.rb b/spec/features/boards/keyboard_shortcut_spec.rb
index cefb486349d..6f03f6db3ab 100644
--- a/spec/features/boards/keyboard_shortcut_spec.rb
+++ b/spec/features/boards/keyboard_shortcut_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Boards shortcut', :js do
+RSpec.describe 'Issue Boards shortcut', :js, feature_category: :team_planning do
context 'issues are enabled' do
let(:project) { create(:project) }
diff --git a/spec/features/boards/multi_select_spec.rb b/spec/features/boards/multi_select_spec.rb
index cad303a14e5..7afe34be3d8 100644
--- a/spec/features/boards/multi_select_spec.rb
+++ b/spec/features/boards/multi_select_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multi Select Issue', :js do
+RSpec.describe 'Multi Select Issue', :js, feature_category: :team_planning do
include DragTo
let(:group) { create(:group, :nested) }
diff --git a/spec/features/boards/multiple_boards_spec.rb b/spec/features/boards/multiple_boards_spec.rb
index 219f24f60d7..e9d34c6f87f 100644
--- a/spec/features/boards/multiple_boards_spec.rb
+++ b/spec/features/boards/multiple_boards_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multiple Issue Boards', :js do
+RSpec.describe 'Multiple Issue Boards', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public) }
let_it_be(:planning) { create(:label, project: project, name: 'Planning') }
diff --git a/spec/features/boards/new_issue_spec.rb b/spec/features/boards/new_issue_spec.rb
index 5f4517d47ee..1b0695e4e60 100644
--- a/spec/features/boards/new_issue_spec.rb
+++ b/spec/features/boards/new_issue_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Boards new issue', :js do
+RSpec.describe 'Issue Boards new issue', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:board) { create(:board, project: project) }
let_it_be(:backlog_list) { create(:backlog_list, board: board) }
diff --git a/spec/features/boards/reload_boards_on_browser_back_spec.rb b/spec/features/boards/reload_boards_on_browser_back_spec.rb
index 7fa440befc1..0ca680c5ed5 100644
--- a/spec/features/boards/reload_boards_on_browser_back_spec.rb
+++ b/spec/features/boards/reload_boards_on_browser_back_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Ensure Boards do not show stale data on browser back', :js do
+RSpec.describe 'Ensure Boards do not show stale data on browser back', :js, feature_category: :team_planning do
let(:project) { create(:project, :public) }
let(:board) { create(:board, project: project) }
let(:user) { create(:user) }
diff --git a/spec/features/boards/sidebar_assignee_spec.rb b/spec/features/boards/sidebar_assignee_spec.rb
index 63553cec89b..e3de594f856 100644
--- a/spec/features/boards/sidebar_assignee_spec.rb
+++ b/spec/features/boards/sidebar_assignee_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Project issue boards sidebar assignee', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/332230' do
+RSpec.describe 'Project issue boards sidebar assignee', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/332230',
+ feature_category: :team_planning do
include BoardHelpers
let_it_be(:user) { create(:user) }
@@ -112,7 +113,7 @@ RSpec.describe 'Project issue boards sidebar assignee', :js, quarantine: 'https:
page.within(assignees_widget) do
click_button('Edit')
- expect(find('.dropdown-menu')).to have_selector('.gl-new-dropdown-item-check-icon')
+ expect(find('.dropdown-menu')).to have_selector('.gl-dropdown-item-check-icon')
end
end
end
diff --git a/spec/features/boards/sidebar_labels_in_namespaces_spec.rb b/spec/features/boards/sidebar_labels_in_namespaces_spec.rb
index 8395a0b33c0..c3bb58df797 100644
--- a/spec/features/boards/sidebar_labels_in_namespaces_spec.rb
+++ b/spec/features/boards/sidebar_labels_in_namespaces_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue boards sidebar labels select', :js do
+RSpec.describe 'Issue boards sidebar labels select', :js, feature_category: :team_planning do
include BoardHelpers
include_context 'labels from nested groups and projects'
diff --git a/spec/features/boards/sidebar_labels_spec.rb b/spec/features/boards/sidebar_labels_spec.rb
index 12d91e9c5a8..460d0d232b3 100644
--- a/spec/features/boards/sidebar_labels_spec.rb
+++ b/spec/features/boards/sidebar_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project issue boards sidebar labels', :js do
+RSpec.describe 'Project issue boards sidebar labels', :js, feature_category: :team_planning do
include BoardHelpers
let_it_be(:group) { create(:group, :public) }
diff --git a/spec/features/boards/sidebar_spec.rb b/spec/features/boards/sidebar_spec.rb
index 2b2a412194a..0a16e95c0bf 100644
--- a/spec/features/boards/sidebar_spec.rb
+++ b/spec/features/boards/sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project issue boards sidebar', :js do
+RSpec.describe 'Project issue boards sidebar', :js, feature_category: :team_planning do
include BoardHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/boards/user_adds_lists_to_board_spec.rb b/spec/features/boards/user_adds_lists_to_board_spec.rb
index 480a88a6b84..a936e14168c 100644
--- a/spec/features/boards/user_adds_lists_to_board_spec.rb
+++ b/spec/features/boards/user_adds_lists_to_board_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User adds lists', :js do
+RSpec.describe 'User adds lists', :js, feature_category: :team_planning do
let_it_be(:group) { create(:group, :nested) }
let_it_be(:project) { create(:project, :public, namespace: group) }
let_it_be(:group_board) { create(:board, group: group) }
diff --git a/spec/features/boards/user_visits_board_spec.rb b/spec/features/boards/user_visits_board_spec.rb
index c386477fa9d..44c691435df 100644
--- a/spec/features/boards/user_visits_board_spec.rb
+++ b/spec/features/boards/user_visits_board_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits issue boards', :js do
+RSpec.describe 'User visits issue boards', :js, feature_category: :team_planning do
using RSpec::Parameterized::TableSyntax
let_it_be(:group) { create_default(:group, :public) }
diff --git a/spec/features/breadcrumbs_schema_markup_spec.rb b/spec/features/breadcrumbs_schema_markup_spec.rb
index f86ad5cd2ae..d924423c9a9 100644
--- a/spec/features/breadcrumbs_schema_markup_spec.rb
+++ b/spec/features/breadcrumbs_schema_markup_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Breadcrumbs schema markup', :aggregate_failures do
+RSpec.describe 'Breadcrumbs schema markup', :aggregate_failures, feature_category: :not_owned do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public, namespace: user.namespace) }
let_it_be(:issue) { create(:issue, project: project) }
diff --git a/spec/features/broadcast_messages_spec.rb b/spec/features/broadcast_messages_spec.rb
index 1fec68a1d98..8300cfce539 100644
--- a/spec/features/broadcast_messages_spec.rb
+++ b/spec/features/broadcast_messages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Broadcast Messages' do
+RSpec.describe 'Broadcast Messages', feature_category: :onboarding do
let_it_be(:user) { create(:user) }
shared_examples 'a Broadcast Messages' do |type|
@@ -31,11 +31,13 @@ RSpec.describe 'Broadcast Messages' do
expect(page).not_to have_content 'SampleMessage'
end
- it 'broadcast message is still hidden after refresh', :js,
- quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/347118' do
+ it 'broadcast message is still hidden after refresh', :js do
visit root_path
find('.js-dismiss-current-broadcast-notification').click
+
+ wait_for_cookie_set("hide_broadcast_message_#{broadcast_message.id}")
+
visit root_path
expect(page).not_to have_content 'SampleMessage'
diff --git a/spec/features/calendar_spec.rb b/spec/features/calendar_spec.rb
index a8aa3f0b36a..2c5b7d66e2f 100644
--- a/spec/features/calendar_spec.rb
+++ b/spec/features/calendar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Contributions Calendar', :js do
+RSpec.describe 'Contributions Calendar', :js, feature_category: :users do
include MobileHelpers
let(:user) { create(:user) }
@@ -143,18 +143,27 @@ RSpec.describe 'Contributions Calendar', :js do
end
end
- describe '1 issue creation calendar activity' do
+ describe '1 issue and 1 work item creation calendar activity' do
before do
Issues::CreateService.new(project: contributed_project, current_user: user, params: issue_params, spam_params: nil).execute
+ WorkItems::CreateService.new(
+ project: contributed_project,
+ current_user: user,
+ params: { title: 'new task' },
+ spam_params: nil
+ ).execute
end
- it_behaves_like 'a day with activity', contribution_count: 1
+ it_behaves_like 'a day with activity', contribution_count: 2
describe 'issue title is shown on activity page' do
include_context 'visit user page'
- it 'displays calendar activity log', :sidekiq_might_not_need_inline do
- expect(find('#js-overview .overview-content-list .event-target-title')).to have_content issue_title
+ it 'displays calendar activity log', :sidekiq_inline do
+ expect(all('#js-overview .overview-content-list .event-target-title').map(&:text)).to contain_exactly(
+ match(/#{issue_title}/),
+ match(/new task/)
+ )
end
end
end
diff --git a/spec/features/callouts/registration_enabled_spec.rb b/spec/features/callouts/registration_enabled_spec.rb
index 79e99712183..1ea52dbf12a 100644
--- a/spec/features/callouts/registration_enabled_spec.rb
+++ b/spec/features/callouts/registration_enabled_spec.rb
@@ -2,11 +2,11 @@
require 'spec_helper'
-RSpec.describe 'Registration enabled callout' do
+RSpec.describe 'Registration enabled callout', feature_category: :authentication_and_authorization do
let_it_be(:admin) { create(:admin) }
let_it_be(:non_admin) { create(:user) }
let_it_be(:project) { create(:project) }
- let_it_be(:callout_title) { _('Anyone can register for an account.') }
+ let_it_be(:callout_title) { _('Check your sign-up restrictions') }
context 'when "Sign-up enabled" setting is `true`' do
before do
@@ -22,7 +22,7 @@ RSpec.describe 'Registration enabled callout' do
visit root_path
expect(page).to have_content callout_title
- expect(page).to have_link _('Turn off'), href: general_admin_application_settings_path(anchor: 'js-signup-settings')
+ expect(page).to have_link _('Deactivate'), href: general_admin_application_settings_path(anchor: 'js-signup-settings')
visit root_dashboard_path
diff --git a/spec/features/canonical_link_spec.rb b/spec/features/canonical_link_spec.rb
index 8b64e9a5b9d..d8f9a7584e7 100644
--- a/spec/features/canonical_link_spec.rb
+++ b/spec/features/canonical_link_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Canonical link' do
+RSpec.describe 'Canonical link', feature_category: :remote_development do
include Spec::Support::Helpers::Features::CanonicalLinkHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/clusters/cluster_detail_page_spec.rb b/spec/features/clusters/cluster_detail_page_spec.rb
index 06e3e00db7d..e8fb5f4105d 100644
--- a/spec/features/clusters/cluster_detail_page_spec.rb
+++ b/spec/features/clusters/cluster_detail_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Clusterable > Show page' do
+RSpec.describe 'Clusterable > Show page', feature_category: :kubernetes_management do
include KubernetesHelpers
let(:current_user) { create(:user) }
diff --git a/spec/features/clusters/cluster_health_dashboard_spec.rb b/spec/features/clusters/cluster_health_dashboard_spec.rb
index 88d6976c2be..b557f803a99 100644
--- a/spec/features/clusters/cluster_health_dashboard_spec.rb
+++ b/spec/features/clusters/cluster_health_dashboard_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Cluster Health board', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'Cluster Health board', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline,
+feature_category: :kubernetes_management do
include KubernetesHelpers
include PrometheusHelpers
diff --git a/spec/features/clusters/create_agent_spec.rb b/spec/features/clusters/create_agent_spec.rb
index b19e57c550c..01902c36e99 100644
--- a/spec/features/clusters/create_agent_spec.rb
+++ b/spec/features/clusters/create_agent_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Cluster agent registration', :js do
+RSpec.describe 'Cluster agent registration', :js, feature_category: :kubernetes_management do
let_it_be(:project) { create(:project, :custom_repo, files: { '.gitlab/agents/example-agent-1/config.yaml' => '' }) }
let_it_be(:current_user) { create(:user, maintainer_projects: [project]) }
let_it_be(:token) { Devise.friendly_token }
@@ -30,8 +30,8 @@ RSpec.describe 'Cluster agent registration', :js do
click_button('Connect a cluster')
expect(page).to have_content('Register')
- click_button('Select an agent')
- click_button('example-agent-2')
+ click_button('Select an agent or enter a name to create new')
+ page.find('li', text: 'example-agent-2').click
click_button('Register')
expect(page).to have_content('You cannot see this token again after you close this window.')
diff --git a/spec/features/commit_spec.rb b/spec/features/commit_spec.rb
index c9fa10d58e6..649b67e7fd0 100644
--- a/spec/features/commit_spec.rb
+++ b/spec/features/commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Commit' do
+RSpec.describe 'Commit', feature_category: :source_code_management do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/commits/user_uses_quick_actions_spec.rb b/spec/features/commits/user_uses_quick_actions_spec.rb
index 12e7865e490..6d043a0bb2f 100644
--- a/spec/features/commits/user_uses_quick_actions_spec.rb
+++ b/spec/features/commits/user_uses_quick_actions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Commit > User uses quick actions', :js do
+RSpec.describe 'Commit > User uses quick actions', :js, feature_category: :source_code_management do
include Spec::Support::Helpers::Features::NotesHelpers
include RepoHelpers
diff --git a/spec/features/commits/user_view_commits_spec.rb b/spec/features/commits/user_view_commits_spec.rb
index f7fd3a6e209..b58d7cf3741 100644
--- a/spec/features/commits/user_view_commits_spec.rb
+++ b/spec/features/commits/user_view_commits_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Commit > User view commits' do
+RSpec.describe 'Commit > User view commits', feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group, :public) }
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index 97f820c1518..e4d4375a138 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Commits' do
+RSpec.describe 'Commits', feature_category: :source_code_management do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
@@ -183,7 +183,7 @@ RSpec.describe 'Commits' do
set_cookie('new_repo', 'true')
visit project_commits_path(project, branch_name)
- expect(find('.js-project-refs-dropdown')).to have_content branch_name
+ expect(find('.ref-selector')).to have_content branch_name
end
end
diff --git a/spec/features/contextual_sidebar_spec.rb b/spec/features/contextual_sidebar_spec.rb
index cc4a0471d4e..2b671d4b3f1 100644
--- a/spec/features/contextual_sidebar_spec.rb
+++ b/spec/features/contextual_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Contextual sidebar', :js do
+RSpec.describe 'Contextual sidebar', :js, feature_category: :remote_development do
context 'when context is a project' do
let_it_be(:project) { create(:project) }
diff --git a/spec/features/cycle_analytics_spec.rb b/spec/features/cycle_analytics_spec.rb
index 8de4c66c62f..55bf77d00b1 100644
--- a/spec/features/cycle_analytics_spec.rb
+++ b/spec/features/cycle_analytics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Value Stream Analytics', :js do
+RSpec.describe 'Value Stream Analytics', :js, feature_category: :value_stream_management do
include CycleAnalyticsHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/dashboard/activity_spec.rb b/spec/features/dashboard/activity_spec.rb
index 7390edc3c47..b1734cb353b 100644
--- a/spec/features/dashboard/activity_spec.rb
+++ b/spec/features/dashboard/activity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > Activity' do
+RSpec.describe 'Dashboard > Activity', feature_category: :users do
let(:user) { create(:user) }
before do
diff --git a/spec/features/dashboard/archived_projects_spec.rb b/spec/features/dashboard/archived_projects_spec.rb
index d157d44bab7..d3992d34506 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' do
+RSpec.describe 'Dashboard Archived Project', feature_category: :projects do
let(:user) { create :user }
let(:project) { create :project }
let(:archived_project) { create(:project, :archived) }
diff --git a/spec/features/dashboard/datetime_on_tooltips_spec.rb b/spec/features/dashboard/datetime_on_tooltips_spec.rb
index de8858fa8fa..34f99765c29 100644
--- a/spec/features/dashboard/datetime_on_tooltips_spec.rb
+++ b/spec/features/dashboard/datetime_on_tooltips_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Tooltips on .timeago dates', :js do
+RSpec.describe 'Tooltips on .timeago dates', :js, feature_category: :users do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, name: 'test', namespace: user.namespace) }
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 6861fac3cc2..f5b02a87758 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 do
+RSpec.describe 'The group dashboard', :js, feature_category: :subgroups do
include ExternalAuthorizationServiceHelpers
include Spec::Support::Helpers::Features::TopNavSpecHelpers
diff --git a/spec/features/dashboard/group_spec.rb b/spec/features/dashboard/group_spec.rb
index f1283d29f4c..f363007f0d7 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' do
+RSpec.describe 'Dashboard Group', feature_category: :subgroups 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 3a4296836bd..b28e2ccf787 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 do
+RSpec.describe 'Dashboard Groups page', :js, feature_category: :subgroups do
let(:user) { create :user }
let(:group) { create(:group) }
let(:nested_group) { create(:group, :nested) }
diff --git a/spec/features/dashboard/issuables_counter_spec.rb b/spec/features/dashboard/issuables_counter_spec.rb
index 91901414dde..5c7285f0491 100644
--- a/spec/features/dashboard/issuables_counter_spec.rb
+++ b/spec/features/dashboard/issuables_counter_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching do
+RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
let(:issue) { create(:issue, project: project) }
@@ -12,6 +12,7 @@ RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching d
issue.assignees = [user]
merge_request.update!(assignees: [user])
sign_in(user)
+ stub_feature_flags(limit_assigned_issues_count: false)
end
it 'reflects dashboard issues count' do
@@ -30,6 +31,28 @@ RSpec.describe 'Navigation bar counter', :use_clean_rails_memory_store_caching d
end
end
+ context 'when :limit_assigned_issues_count FF is used' do
+ before do
+ stub_feature_flags(limit_assigned_issues_count: true)
+ end
+
+ it 'reflects dashboard issues count' do
+ visit issues_path
+
+ expect_counters('issues', '1', n_("%d assigned issue", "%d assigned issues", 1) % 1)
+
+ issue.update!(assignees: [])
+
+ Users::AssignedIssuesCountService.new(current_user: user).delete_cache
+
+ travel_to(3.minutes.from_now) do
+ visit issues_path
+
+ expect_counters('issues', '0', n_("%d assigned issue", "%d assigned issues", 0) % 0)
+ end
+ end
+ end
+
it 'reflects dashboard merge requests count', :js do
visit merge_requests_path
diff --git a/spec/features/dashboard/issues_filter_spec.rb b/spec/features/dashboard/issues_filter_spec.rb
index 0d10aed955a..d5f362d8449 100644
--- a/spec/features/dashboard/issues_filter_spec.rb
+++ b/spec/features/dashboard/issues_filter_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Issues filtering', :js do
+RSpec.describe 'Dashboard Issues filtering', :js, feature_category: :team_planning do
include Spec::Support::Helpers::Features::SortingHelpers
include FilteredSearchHelpers
diff --git a/spec/features/dashboard/issues_spec.rb b/spec/features/dashboard/issues_spec.rb
index 64181041be5..d74965f58fa 100644
--- a/spec/features/dashboard/issues_spec.rb
+++ b/spec/features/dashboard/issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Issues' do
+RSpec.describe 'Dashboard Issues', feature_category: :team_planning do
include FilteredSearchHelpers
let(:current_user) { create :user }
diff --git a/spec/features/dashboard/label_filter_spec.rb b/spec/features/dashboard/label_filter_spec.rb
index ebe5c3e1091..f116c84ff40 100644
--- a/spec/features/dashboard/label_filter_spec.rb
+++ b/spec/features/dashboard/label_filter_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > label filter', :js do
+RSpec.describe 'Dashboard > label filter', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let(:filtered_search) { find('.filtered-search') }
diff --git a/spec/features/dashboard/merge_requests_spec.rb b/spec/features/dashboard/merge_requests_spec.rb
index 70f614cdcef..56d7c45de5d 100644
--- a/spec/features/dashboard/merge_requests_spec.rb
+++ b/spec/features/dashboard/merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Merge Requests' do
+RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review do
include Spec::Support::Helpers::Features::SortingHelpers
include FilteredSearchHelpers
include ProjectForksHelper
diff --git a/spec/features/dashboard/milestones_spec.rb b/spec/features/dashboard/milestones_spec.rb
index 08cb95979ac..b4d0d9c5812 100644
--- a/spec/features/dashboard/milestones_spec.rb
+++ b/spec/features/dashboard/milestones_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > Milestones' do
+RSpec.describe 'Dashboard > Milestones', feature_category: :team_planning do
describe 'as anonymous user' do
before do
visit dashboard_milestones_path
diff --git a/spec/features/dashboard/project_member_activity_index_spec.rb b/spec/features/dashboard/project_member_activity_index_spec.rb
index c26a1a0b486..5bf1566fa31 100644
--- a/spec/features/dashboard/project_member_activity_index_spec.rb
+++ b/spec/features/dashboard/project_member_activity_index_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project member activity', :js do
+RSpec.describe 'Project member activity', :js, feature_category: :users do
let(:user) { create(:user) }
let(:project) { create(:project, :public, name: 'x', namespace: user.namespace) }
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index c132caa88c8..2b89f16bbff 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' do
+RSpec.describe 'Dashboard Projects', feature_category: :projects do
let_it_be(:user) { create(:user) }
let_it_be(:project, reload: true) { create(:project, :repository) }
let_it_be(:project2) { create(:project, :public) }
@@ -101,14 +101,6 @@ RSpec.describe 'Dashboard Projects' do
expect(first('.project-row')).to have_content(project_with_most_stars.title)
end
-
- it 'shows tabs to filter by all projects or personal' do
- visit dashboard_projects_path
- segmented_button = page.find('.filtered-search-nav .button-filter-group')
-
- expect(segmented_button).to have_content 'All'
- expect(segmented_button).to have_content 'Personal'
- end
end
context 'when on Starred projects tab', :js do
diff --git a/spec/features/dashboard/root_explore_spec.rb b/spec/features/dashboard/root_explore_spec.rb
index a3c346ffe2a..c0d1f0de1f5 100644
--- a/spec/features/dashboard/root_explore_spec.rb
+++ b/spec/features/dashboard/root_explore_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Root explore' do
+RSpec.describe 'Root explore', feature_category: :not_owned do
let_it_be(:public_project) { create(:project, :public) }
let_it_be(:archived_project) { create(:project, :archived) }
let_it_be(:internal_project) { create(:project, :internal) }
@@ -30,4 +30,26 @@ RSpec.describe 'Root explore' do
include_examples 'shows public projects'
end
+
+ describe 'project language dropdown' do
+ let(:has_language_dropdown?) { page.has_selector?('[data-testid="project-language-dropdown"]') }
+
+ it 'is conditionally rendered' do
+ visit explore_projects_path
+
+ expect(has_language_dropdown?).to eq(true)
+ end
+
+ context 'with project_language_search ff disabled' do
+ before do
+ stub_feature_flags(project_language_search: false)
+ end
+
+ it 'is conditionally rendered' do
+ visit explore_projects_path
+
+ expect(has_language_dropdown?).to eq(false)
+ end
+ end
+ end
end
diff --git a/spec/features/dashboard/shortcuts_spec.rb b/spec/features/dashboard/shortcuts_spec.rb
index 3f3ab4218f2..30587756505 100644
--- a/spec/features/dashboard/shortcuts_spec.rb
+++ b/spec/features/dashboard/shortcuts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard shortcuts', :js do
+RSpec.describe 'Dashboard shortcuts', :js, feature_category: :not_owned do
context 'logged in' do
let(:user) { create(:user) }
let(:project) { create(:project) }
diff --git a/spec/features/dashboard/snippets_spec.rb b/spec/features/dashboard/snippets_spec.rb
index f891950eeb8..ab2cfc0573e 100644
--- a/spec/features/dashboard/snippets_spec.rb
+++ b/spec/features/dashboard/snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard snippets' do
+RSpec.describe 'Dashboard snippets', feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
context 'when the project has snippets' do
diff --git a/spec/features/dashboard/todos/target_state_spec.rb b/spec/features/dashboard/todos/target_state_spec.rb
index b0aafdda59a..f8b525a63f1 100644
--- a/spec/features/dashboard/todos/target_state_spec.rb
+++ b/spec/features/dashboard/todos/target_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > Todo target states' do
+RSpec.describe 'Dashboard > Todo target states', feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:author) { create(:user) }
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/dashboard/todos/todos_filtering_spec.rb b/spec/features/dashboard/todos/todos_filtering_spec.rb
index 938e42623f6..ea8c7e800c5 100644
--- a/spec/features/dashboard/todos/todos_filtering_spec.rb
+++ b/spec/features/dashboard/todos/todos_filtering_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > User filters todos', :js do
+RSpec.describe 'Dashboard > User filters todos', :js, feature_category: :team_planning do
let(:user_1) { create(:user, username: 'user_1', name: 'user_1') }
let(:user_2) { create(:user, username: 'user_2', name: 'user_2') }
@@ -58,9 +58,9 @@ RSpec.describe 'Dashboard > User filters todos', :js do
wait_for_requests
- expect(page).to have_content "issue #{issue1.to_reference} \"issue\" at #{group1.name} / project_1"
- expect(page).to have_content "merge request #{merge_request.to_reference}"
- expect(page).not_to have_content "issue #{issue2.to_reference} \"issue\" at #{group2.name} / project_3"
+ expect(page).to have_content "issue · #{group1.name} / project_1 #{issue1.to_reference}"
+ expect(page).to have_content merge_request.to_reference.to_s
+ expect(page).not_to have_content "issue · #{group2.name} / project_3 #{issue2.to_reference}"
end
context 'Author filter' do
@@ -74,8 +74,8 @@ RSpec.describe 'Dashboard > User filters todos', :js do
wait_for_requests
- expect(find('.todos-list')).to have_content 'merge request'
- expect(find('.todos-list')).not_to have_content 'issue'
+ expect(find('.todos-list')).to have_content '!'
+ expect(find('.todos-list')).not_to have_content '#'
end
it 'shows only authors of existing todos' do
@@ -174,11 +174,11 @@ RSpec.describe 'Dashboard > User filters todos', :js do
def expect_to_see_action(action_name)
action_names = {
- assigned: ' assigned you ',
- review_requested: ' requested a review of ',
- mentioned: ' mentioned ',
- marked: ' added a todo for ',
- build_failed: ' pipeline failed in '
+ assigned: ' assigned you',
+ review_requested: ' requested a review',
+ mentioned: ' mentioned',
+ marked: ' added a to-do item',
+ build_failed: ' pipeline failed'
}
action_name_text = action_names.delete(action_name)
diff --git a/spec/features/dashboard/todos/todos_sorting_spec.rb b/spec/features/dashboard/todos/todos_sorting_spec.rb
index a0fa53b761b..e449f71878b 100644
--- a/spec/features/dashboard/todos/todos_sorting_spec.rb
+++ b/spec/features/dashboard/todos/todos_sorting_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard > User sorts todos' do
+RSpec.describe 'Dashboard > User sorts todos', feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project) }
diff --git a/spec/features/dashboard/todos/todos_spec.rb b/spec/features/dashboard/todos/todos_spec.rb
index e02cd182b2c..606bc82a7bb 100644
--- a/spec/features/dashboard/todos/todos_spec.rb
+++ b/spec/features/dashboard/todos/todos_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Todos' do
+RSpec.describe 'Dashboard Todos', feature_category: :team_planning do
include DesignManagementTestHelpers
let_it_be(:user) { create(:user, username: 'john') }
@@ -49,29 +49,8 @@ RSpec.describe 'Dashboard Todos' do
visit dashboard_todos_path
end
- it 'renders the mr link with the extra attributes' do
- link = page.find_link(referenced_mr.to_reference)
-
- expect(link).not_to be_nil
- expect(link['data-iid']).to eq(referenced_mr.iid.to_s)
- expect(link['data-project-path']).to eq(referenced_mr.project.full_path)
- expect(link['title']).to eq(referenced_mr.title)
- expect(link['data-reference-type']).to eq('merge_request')
- end
- end
-
- context 'when todo references an issue of type task' do
- let(:task) { create(:issue, :task, project: project) }
- let!(:task_todo) { create(:todo, :mentioned, user: user, project: project, target: task, author: author) }
-
- before do
- sign_in(user)
-
- visit dashboard_todos_path
- end
-
- it 'displays the correct issue type name' do
- expect(page).to have_content('mentioned you on task')
+ it 'renders the mr reference' do
+ expect(page).to have_content(referenced_mr.to_reference)
end
end
@@ -100,10 +79,6 @@ RSpec.describe 'Dashboard Todos' do
visit dashboard_todos_path
end
- it 'displays the correct issue type name' do
- expect(page).to have_content('mentioned you on issue')
- end
-
it 'has todo present' do
expect(page).to have_selector('.todos-list .todo', count: 1)
end
@@ -117,7 +92,7 @@ RSpec.describe 'Dashboard Todos' do
shared_examples 'deleting the todo' do
before do
within first('.todo') do
- click_link 'Done'
+ find('[data-testid="check-icon"]').click
end
end
@@ -143,9 +118,9 @@ RSpec.describe 'Dashboard Todos' do
shared_examples 'deleting and restoring the todo' do
before do
within first('.todo') do
- click_link 'Done'
+ find('[data-testid="check-icon"]').click
wait_for_requests
- click_link 'Undo'
+ find('[data-testid="redo-icon"]').click
end
end
@@ -192,7 +167,8 @@ RSpec.describe 'Dashboard Todos' do
it 'shows issue assigned to yourself message' do
page.within('.js-todos-all') do
- expect(page).to have_content("You assigned issue #{issue.to_reference} \"Fix bug\" at #{project.namespace.owner_name} / #{project.name} to yourself")
+ expect(page).to have_content("Fix bug · #{project.namespace.owner_name} / #{project.name} #{issue.to_reference}")
+ expect(page).to have_content("You assigned to yourself.")
end
end
end
@@ -203,10 +179,10 @@ RSpec.describe 'Dashboard Todos' do
visit dashboard_todos_path
end
- it 'shows you added a todo message' do
+ it 'shows you added a to-do item message' do
page.within('.js-todos-all') do
- expect(page).to have_content("You added a todo for issue #{issue.to_reference} \"Fix bug\" at #{project.namespace.owner_name} / #{project.name}")
- expect(page).not_to have_content('to yourself')
+ expect(page).to have_content("Fix bug · #{project.namespace.owner_name} / #{project.name} #{issue.to_reference}")
+ expect(page).to have_content("You added a to-do item.")
end
end
end
@@ -219,8 +195,8 @@ RSpec.describe 'Dashboard Todos' do
it 'shows you mentioned yourself message' do
page.within('.js-todos-all') do
- expect(page).to have_content("You mentioned yourself on issue #{issue.to_reference} \"Fix bug\" at #{project.namespace.owner_name} / #{project.name}")
- expect(page).not_to have_content('to yourself')
+ expect(page).to have_content("Fix bug · #{project.namespace.owner_name} / #{project.name} #{issue.to_reference}")
+ expect(page).to have_content("You mentioned yourself.")
end
end
end
@@ -233,8 +209,8 @@ RSpec.describe 'Dashboard Todos' do
it 'shows you directly addressed yourself message being displayed as mentioned yourself' do
page.within('.js-todos-all') do
- expect(page).to have_content("You mentioned yourself on issue #{issue.to_reference} \"Fix bug\" at #{project.namespace.owner_name} / #{project.name}")
- expect(page).not_to have_content('to yourself')
+ expect(page).to have_content("Fix bug · #{project.namespace.owner_name} / #{project.name} #{issue.to_reference}")
+ expect(page).to have_content("You mentioned yourself.")
end
end
end
@@ -249,8 +225,8 @@ RSpec.describe 'Dashboard Todos' do
it 'shows you set yourself as an approver message' do
page.within('.js-todos-all') do
- expect(page).to have_content("You set yourself as an approver for merge request #{merge_request.to_reference} \"Fixes issue\" at #{project.namespace.owner_name} / #{project.name}")
- expect(page).not_to have_content('to yourself')
+ expect(page).to have_content("Fixes issue · #{project.namespace.owner_name} / #{project.name} #{merge_request.to_reference}")
+ expect(page).to have_content("You set yourself as an approver.")
end
end
end
@@ -265,7 +241,28 @@ RSpec.describe 'Dashboard Todos' do
it 'shows you set yourself as an reviewer message' do
page.within('.js-todos-all') do
- expect(page).to have_content("You requested a review of merge request #{merge_request.to_reference} \"Fixes issue\" at #{project.namespace.owner_name} / #{project.name} from yourself")
+ expect(page).to have_content("Fixes issue · #{project.namespace.owner_name} / #{project.name} #{merge_request.to_reference}")
+ expect(page).to have_content("You requested a review from yourself.")
+ end
+ end
+ end
+ end
+
+ context 'User has automatically created todos' do
+ before do
+ sign_in(user)
+ end
+
+ context 'unmergeable todo' do
+ before do
+ create(:todo, :unmergeable, user: user, project: project, target: issue, author: user)
+ visit dashboard_todos_path
+ end
+
+ it 'shows unmergeable message' do
+ page.within('.js-todos-all') do
+ expect(page).to have_content("Fix bug · #{project.namespace.owner_name} / #{project.name} #{issue.to_reference}")
+ expect(page).to have_content("Could not merge.")
end
end
end
@@ -285,7 +282,7 @@ RSpec.describe 'Dashboard Todos' do
describe 'restoring the todo' do
before do
within first('.todo') do
- click_link 'Add a to do'
+ find('[data-testid="todo-add-icon"]').click
end
end
@@ -391,7 +388,7 @@ RSpec.describe 'Dashboard Todos' do
context 'User has deleted a todo' do
before do
within first('.todo') do
- click_link 'Done'
+ find('[data-testid="check-icon"]').click
end
end
@@ -420,13 +417,7 @@ RSpec.describe 'Dashboard Todos' do
end
it 'shows the todo' do
- expect(page).to have_content 'The pipeline failed in merge request'
- end
-
- it 'links to the pipelines for the merge request' do
- href = pipelines_project_merge_request_path(project, todo.target)
-
- expect(page).to have_link "merge request #{todo.target.to_reference}", href: href
+ expect(page).to have_content 'The pipeline failed.'
end
end
@@ -453,15 +444,29 @@ RSpec.describe 'Dashboard Todos' do
it 'has todo present' do
expect(page).to have_selector('.todos-list .todo', count: 1)
end
+ end
- it 'has a link that will take me to the design page' do
- click_link "design #{target.to_reference}"
+ context 'User has a todo for an access requested raised for group membership' do
+ let_it_be(:group) { create(:group, :public) }
- expectation = Gitlab::Routing.url_helpers.designs_project_issue_path(
- target.project, target.issue, target.filename
- )
+ let_it_be(:todo) do
+ create(:todo, :member_access_requested,
+ user: user,
+ target: group,
+ author: author,
+ group: group)
+ end
+
+ before do
+ group.add_owner(user)
+ sign_in(user)
- expect(page).to have_current_path(expectation, ignore_query: true)
+ visit dashboard_todos_path
+ end
+
+ it 'has todo present with access request content' do
+ expect(page).to have_selector('.todos-list .todo', count: 1)
+ expect(page).to have_content "#{author.name} has requested access to group #{group.name}"
end
end
end
diff --git a/spec/features/dashboard/user_filters_projects_spec.rb b/spec/features/dashboard/user_filters_projects_spec.rb
index e25da5854ab..1168a6827fd 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' do
+RSpec.describe 'Dashboard > User filters projects', feature_category: :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) }
@@ -16,7 +16,6 @@ RSpec.describe 'Dashboard > User filters projects' do
describe 'filtering personal projects' do
before do
- stub_feature_flags(project_list_filter_bar: false)
project2.add_developer(user)
visit dashboard_projects_path
@@ -33,7 +32,6 @@ RSpec.describe 'Dashboard > User filters projects' do
describe 'filtering starred projects', :js do
before do
- stub_feature_flags(project_list_filter_bar: false)
user.toggle_star(project)
visit dashboard_projects_path
@@ -49,8 +47,6 @@ RSpec.describe 'Dashboard > User filters projects' do
describe 'without search bar', :js do
before do
- stub_feature_flags(project_list_filter_bar: false)
-
project2.add_developer(user)
visit dashboard_projects_path
end
@@ -65,175 +61,4 @@ RSpec.describe 'Dashboard > User filters projects' do
expect(page).not_to have_content 'Treasure'
end
end
-
- describe 'with search bar', :js do
- before do
- stub_feature_flags(project_list_filter_bar: true)
-
- project2.add_developer(user)
- visit dashboard_projects_path
- end
-
- # TODO: move these helpers somewhere more useful
- def click_sort_direction
- page.find('.filtered-search-block #filtered-search-sorting-dropdown .reverse-sort-btn').click
- end
-
- def select_dropdown_option(selector, label, option_selector = '.dropdown-menu a')
- dropdown = page.find(selector)
- dropdown.click
-
- dropdown.find(option_selector, text: label, match: :first).click
- end
-
- def expect_to_see_projects(sorted_projects)
- list = page.all('.projects-list .project-name').map(&:text)
- expect(list).to match(sorted_projects)
- end
-
- describe 'Search' do
- it 'executes when the search button is clicked' do
- expect(page).to have_content 'Victorialand'
- expect(page).to have_content 'Treasure'
-
- fill_in 'project-filter-form-field', with: 'Lord vegeta\n'
- find('.filtered-search .btn').click
-
- expect(page).not_to have_content 'Victorialand'
- expect(page).not_to have_content 'Treasure'
- end
-
- it 'will execute when i press enter' do
- expect(page).to have_content 'Victorialand'
- expect(page).to have_content 'Treasure'
-
- fill_in 'project-filter-form-field', with: 'Lord frieza\n'
- find('#project-filter-form-field').native.send_keys :enter
-
- expect(page).not_to have_content 'Victorialand'
- expect(page).not_to have_content 'Treasure'
- end
- end
-
- describe 'Filter' do
- before do
- private_project = create(:project, :private, name: 'Private project', namespace: user.namespace)
- internal_project = create(:project, :internal, name: 'Internal project', namespace: user.namespace)
-
- private_project.add_maintainer(user)
- internal_project.add_maintainer(user)
- end
-
- it 'filters private projects only' do
- select_dropdown_option '#filtered-search-visibility-dropdown > .dropdown', 'Private', '.dropdown-item'
-
- expect(current_url).to match(/visibility_level=0/)
-
- list = page.all('.projects-list .project-name').map(&:text)
-
- expect(list).to contain_exactly("Private project", "Treasure", "Victorialand")
- end
-
- it 'filters internal projects only' do
- select_dropdown_option '#filtered-search-visibility-dropdown > .dropdown', 'Internal', '.dropdown-item'
-
- expect(current_url).to match(/visibility_level=10/)
-
- list = page.all('.projects-list .project-name').map(&:text)
-
- expect(list).to contain_exactly('Internal project')
- end
-
- it 'filters any project' do
- # Selecting the same option in the `GlListbox` does not emit `select` event
- # and that is why URL update won't be triggered. Given that `Any` is a default option
- # we need to explicitly switch from some other option (e.g. `Internal`) to `Any`
- # to trigger the page update
- select_dropdown_option '#filtered-search-visibility-dropdown > .dropdown', 'Internal', '.dropdown-item'
-
- select_dropdown_option '#filtered-search-visibility-dropdown > .dropdown', 'Any', '.dropdown-item'
-
- list = page.all('.projects-list .project-name').map(&:text)
-
- expect(list).to contain_exactly("Internal project", "Private project", "Treasure", "Victorialand")
- end
- end
-
- describe 'Sorting' do
- let(:desc_sorted_project_names) { %w[Treasure Victorialand] }
-
- before do
- user.toggle_star(project)
- user.toggle_star(project2)
- user2.toggle_star(project2)
- end
-
- it 'has all sorting options', :js do
- sorting_dropdown = page.find('.filtered-search-block #filtered-search-sorting-dropdown')
-
- expect(sorting_dropdown).to have_css '.reverse-sort-btn'
-
- sorting_dropdown.click
-
- ['Updated date', 'Created date', 'Name', 'Stars'].each do |label|
- expect(sorting_dropdown).to have_content(label)
- end
- end
-
- it 'defaults to "Name"', :js do
- page.find('.filtered-search-block #filtered-search-sorting-dropdown').click
- active_sorting_option = page.first('.filtered-search-block #filtered-search-sorting-dropdown .is-active')
-
- expect(active_sorting_option).to have_content 'Name'
- end
-
- context 'Sorting by name' do
- it 'sorts the project list' do
- select_dropdown_option '#filtered-search-sorting-dropdown', 'Name'
-
- expect_to_see_projects(desc_sorted_project_names)
-
- click_sort_direction
-
- expect_to_see_projects(desc_sorted_project_names.reverse)
- end
- end
-
- context 'Sorting by Updated date' do
- it 'sorts the project list' do
- select_dropdown_option '#filtered-search-sorting-dropdown', 'Updated date'
-
- expect_to_see_projects(desc_sorted_project_names)
-
- click_sort_direction
-
- expect_to_see_projects(desc_sorted_project_names.reverse)
- end
- end
-
- context 'Sorting by Created date' do
- it 'sorts the project list' do
- select_dropdown_option '#filtered-search-sorting-dropdown', 'Created date'
-
- expect_to_see_projects(desc_sorted_project_names)
-
- click_sort_direction
-
- expect_to_see_projects(desc_sorted_project_names.reverse)
- end
- end
-
- context 'Sorting by Stars' do
- it 'sorts the project list' do
- select_dropdown_option '#filtered-search-sorting-dropdown', 'Stars'
-
- expect_to_see_projects(desc_sorted_project_names)
-
- click_sort_direction
-
- expect_to_see_projects(desc_sorted_project_names.reverse)
- end
- end
- end
- end
end
diff --git a/spec/features/discussion_comments/commit_spec.rb b/spec/features/discussion_comments/commit_spec.rb
index 261e9fb9f3b..5407542dfc6 100644
--- a/spec/features/discussion_comments/commit_spec.rb
+++ b/spec/features/discussion_comments/commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Thread Comments Commit', :js do
+RSpec.describe 'Thread Comments Commit', :js, feature_category: :source_code_management do
include RepoHelpers
let(:user) { create(:user) }
diff --git a/spec/features/discussion_comments/issue_spec.rb b/spec/features/discussion_comments/issue_spec.rb
index ebb57b37918..90be3f0760d 100644
--- a/spec/features/discussion_comments/issue_spec.rb
+++ b/spec/features/discussion_comments/issue_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Thread Comments Issue', :js do
+RSpec.describe 'Thread Comments Issue', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:issue) { create(:issue, project: project) }
diff --git a/spec/features/discussion_comments/merge_request_spec.rb b/spec/features/discussion_comments/merge_request_spec.rb
index a90ff3721d3..64395a44e57 100644
--- a/spec/features/discussion_comments/merge_request_spec.rb
+++ b/spec/features/discussion_comments/merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Thread Comments Merge Request', :js do
+RSpec.describe 'Thread Comments Merge Request', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/discussion_comments/snippets_spec.rb b/spec/features/discussion_comments/snippets_spec.rb
index ca0a6d6e1c5..a703c880737 100644
--- a/spec/features/discussion_comments/snippets_spec.rb
+++ b/spec/features/discussion_comments/snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Thread Comments Snippet', :js do
+RSpec.describe 'Thread Comments Snippet', :js, feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
before do
diff --git a/spec/features/display_system_header_and_footer_bar_spec.rb b/spec/features/display_system_header_and_footer_bar_spec.rb
index 0979371a574..22fd0987418 100644
--- a/spec/features/display_system_header_and_footer_bar_spec.rb
+++ b/spec/features/display_system_header_and_footer_bar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Display system header and footer bar' do
+RSpec.describe 'Display system header and footer bar', feature_category: :not_owned do
let(:header_message) { "Foo" }
let(:footer_message) { "Bar" }
diff --git a/spec/features/error_pages_spec.rb b/spec/features/error_pages_spec.rb
index 8dc9e5ade46..6a322fd53d4 100644
--- a/spec/features/error_pages_spec.rb
+++ b/spec/features/error_pages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Error Pages', :js do
+RSpec.describe 'Error Pages', :js, feature_category: :error_tracking do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/error_tracking/user_filters_errors_by_status_spec.rb b/spec/features/error_tracking/user_filters_errors_by_status_spec.rb
index 2ac43f67f64..168c4f330ca 100644
--- a/spec/features/error_tracking/user_filters_errors_by_status_spec.rb
+++ b/spec/features/error_tracking/user_filters_errors_by_status_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'When a user filters Sentry errors by status', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'When a user filters Sentry errors by status', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline,
+feature_category: :error_tracking do
include_context 'sentry error tracking context feature'
let_it_be(:issues_response_body) { fixture_file('sentry/issues_sample_response.json') }
diff --git a/spec/features/error_tracking/user_searches_sentry_errors_spec.rb b/spec/features/error_tracking/user_searches_sentry_errors_spec.rb
index 40718deed75..6026b42f7de 100644
--- a/spec/features/error_tracking/user_searches_sentry_errors_spec.rb
+++ b/spec/features/error_tracking/user_searches_sentry_errors_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'When a user searches for Sentry errors', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'When a user searches for Sentry errors', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline,
+feature_category: :error_tracking do
include_context 'sentry error tracking context feature'
let_it_be(:issues_response_body) { fixture_file('sentry/issues_sample_response.json') }
diff --git a/spec/features/error_tracking/user_sees_error_details_spec.rb b/spec/features/error_tracking/user_sees_error_details_spec.rb
index ecbb3fe0412..d7676d90d21 100644
--- a/spec/features/error_tracking/user_sees_error_details_spec.rb
+++ b/spec/features/error_tracking/user_sees_error_details_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'View error details page', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'View error details page', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline,
+feature_category: :error_tracking do
include_context 'sentry error tracking context feature'
context 'with current user as project owner' do
diff --git a/spec/features/error_tracking/user_sees_error_index_spec.rb b/spec/features/error_tracking/user_sees_error_index_spec.rb
index 21f9e688e3f..b7dfb6afc18 100644
--- a/spec/features/error_tracking/user_sees_error_index_spec.rb
+++ b/spec/features/error_tracking/user_sees_error_index_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'View error index page', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'View error index page', :js, :use_clean_rails_memory_store_caching, :sidekiq_inline,
+feature_category: :error_tracking do
include_context 'sentry error tracking context feature'
let_it_be(:issues_response_body) { fixture_file('sentry/issues_sample_response.json') }
diff --git a/spec/features/expand_collapse_diffs_spec.rb b/spec/features/expand_collapse_diffs_spec.rb
index c3096677a73..1f09b01ddec 100644
--- a/spec/features/expand_collapse_diffs_spec.rb
+++ b/spec/features/expand_collapse_diffs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Expand and collapse diffs', :js do
+RSpec.describe 'Expand and collapse diffs', :js, feature_category: :source_code_management do
let(:branch) { 'expand-collapse-diffs' }
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/explore/groups_list_spec.rb b/spec/features/explore/groups_list_spec.rb
index ba09cc20154..3ffa0dc5b64 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 do
+RSpec.describe 'Explore Groups page', :js, feature_category: :subgroups 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 201dc24b359..458f83dffb4 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 do
+RSpec.describe 'Explore Groups', :js, feature_category: :subgroups do
let(:user) { create :user }
let(:group) { create :group }
let!(:private_project) do
diff --git a/spec/features/explore/topics_spec.rb b/spec/features/explore/topics_spec.rb
index f0c57c2417a..b5787a2dba8 100644
--- a/spec/features/explore/topics_spec.rb
+++ b/spec/features/explore/topics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Explore Topics' do
+RSpec.describe 'Explore Topics', feature_category: :users do
context 'when no topics exist' do
it 'renders empty message', :aggregate_failures do
visit topics_explore_projects_path
diff --git a/spec/features/explore/user_explores_projects_spec.rb b/spec/features/explore/user_explores_projects_spec.rb
index c082ff1fb0c..f54a51c9ac9 100644
--- a/spec/features/explore/user_explores_projects_spec.rb
+++ b/spec/features/explore/user_explores_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User explores projects' do
+RSpec.describe 'User explores projects', feature_category: :users do
context 'when some projects exist' do
let_it_be(:archived_project) { create(:project, :archived) }
let_it_be(:internal_project) { create(:project, :internal) }
@@ -35,8 +35,6 @@ RSpec.describe 'User explores projects' do
before do
sign_in(user)
-
- stub_feature_flags(project_list_filter_bar: false)
end
shared_examples 'empty search results' do
diff --git a/spec/features/file_uploads/attachment_spec.rb b/spec/features/file_uploads/attachment_spec.rb
index 41da0e9fbe0..cff0c0b52b4 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 do
+RSpec.describe 'Upload an attachment', :api, :js, feature_category: :projects do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/ci_artifact_spec.rb b/spec/features/file_uploads/ci_artifact_spec.rb
index 4f3b6c90ad4..420329cc952 100644
--- a/spec/features/file_uploads/ci_artifact_spec.rb
+++ b/spec/features/file_uploads/ci_artifact_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload ci artifact', :api, :js do
+RSpec.describe 'Upload ci artifact', :api, :js, feature_category: :build_artifacts do
include_context 'file upload requests helpers'
let_it_be(:user) { create(:user, :admin) }
diff --git a/spec/features/file_uploads/git_lfs_spec.rb b/spec/features/file_uploads/git_lfs_spec.rb
index 8d15c5c33f7..6af4bef2ec4 100644
--- a/spec/features/file_uploads/git_lfs_spec.rb
+++ b/spec/features/file_uploads/git_lfs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a git lfs object', :js do
+RSpec.describe 'Upload a git lfs object', :js, feature_category: :source_code_management do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/graphql_add_design_spec.rb b/spec/features/file_uploads/graphql_add_design_spec.rb
index 17fbf5f6838..0b61c952b55 100644
--- a/spec/features/file_uploads/graphql_add_design_spec.rb
+++ b/spec/features/file_uploads/graphql_add_design_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a design through graphQL', :js do
+RSpec.describe 'Upload a design through graphQL', :js, feature_category: :design_management do
include_context 'file upload requests helpers'
let_it_be(:query) do
diff --git a/spec/features/file_uploads/group_import_spec.rb b/spec/features/file_uploads/group_import_spec.rb
index a8592f99bd6..f5082e31c06 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 do
+RSpec.describe 'Upload a group export archive', :api, :js, feature_category: :subgroups do
include_context 'file upload requests helpers'
let_it_be(:user) { create(:user, :admin) }
diff --git a/spec/features/file_uploads/maven_package_spec.rb b/spec/features/file_uploads/maven_package_spec.rb
index 70302142fa2..8a8bac53613 100644
--- a/spec/features/file_uploads/maven_package_spec.rb
+++ b/spec/features/file_uploads/maven_package_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a maven package', :api, :js do
+RSpec.describe 'Upload a maven package', :api, :js, feature_category: :package_registry do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/multipart_invalid_uploads_spec.rb b/spec/features/file_uploads/multipart_invalid_uploads_spec.rb
index cff8b4e61a5..c4c5eb6b74b 100644
--- a/spec/features/file_uploads/multipart_invalid_uploads_spec.rb
+++ b/spec/features/file_uploads/multipart_invalid_uploads_spec.rb
@@ -2,11 +2,11 @@
require 'spec_helper'
-RSpec.describe 'Invalid uploads that must be rejected', :api, :js do
+RSpec.describe 'Invalid uploads that must be rejected', :api, :js, feature_category: :package_registry do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
- let_it_be(:user) { create(:user, :admin) }
+ let_it_be(:user) { project.owner }
let_it_be(:personal_access_token) { create(:personal_access_token, user: user) }
context 'invalid upload key', :capybara_ignore_server_errors do
diff --git a/spec/features/file_uploads/nuget_package_spec.rb b/spec/features/file_uploads/nuget_package_spec.rb
index cbffd34d4ab..0dc48114e9a 100644
--- a/spec/features/file_uploads/nuget_package_spec.rb
+++ b/spec/features/file_uploads/nuget_package_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a nuget package', :api, :js do
+RSpec.describe 'Upload a nuget package', :api, :js, feature_category: :package_registry do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/project_import_spec.rb b/spec/features/file_uploads/project_import_spec.rb
index 82b6f490d2a..c261834206d 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 do
+RSpec.describe 'Upload a project export archive', :api, :js, feature_category: :projects do
include_context 'file upload requests helpers'
let_it_be(:user) { create(:user, :admin) }
diff --git a/spec/features/file_uploads/rubygem_package_spec.rb b/spec/features/file_uploads/rubygem_package_spec.rb
index f91fb407b28..9c4512e4eab 100644
--- a/spec/features/file_uploads/rubygem_package_spec.rb
+++ b/spec/features/file_uploads/rubygem_package_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a RubyGems package', :api, :js do
+RSpec.describe 'Upload a RubyGems package', :api, :js, feature_category: :package_registry do
include_context 'file upload requests helpers'
let_it_be(:project) { create(:project) }
diff --git a/spec/features/file_uploads/user_avatar_spec.rb b/spec/features/file_uploads/user_avatar_spec.rb
index 34cfb4a4128..06501e09866 100644
--- a/spec/features/file_uploads/user_avatar_spec.rb
+++ b/spec/features/file_uploads/user_avatar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Upload a user avatar', :js do
+RSpec.describe 'Upload a user avatar', :js, feature_category: :users do
let_it_be(:user, reload: true) { create(:user) }
let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
diff --git a/spec/features/frequently_visited_projects_and_groups_spec.rb b/spec/features/frequently_visited_projects_and_groups_spec.rb
index 7fbbc4dfc85..50e20910e16 100644
--- a/spec/features/frequently_visited_projects_and_groups_spec.rb
+++ b/spec/features/frequently_visited_projects_and_groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Frequently visited items', :js do
+RSpec.describe 'Frequently visited items', :js, feature_category: :not_owned do
include Spec::Support::Helpers::Features::TopNavSpecHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/gitlab_experiments_spec.rb b/spec/features/gitlab_experiments_spec.rb
index af14b6e2e95..c1417f6f7c5 100644
--- a/spec/features/gitlab_experiments_spec.rb
+++ b/spec/features/gitlab_experiments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Gitlab::Experiment", :js do
+RSpec.describe "Gitlab::Experiment", :js, feature_category: :experimentation_activation do
# This is part of a set of tests that ensure that tracking remains
# consistent at the front end layer. Since we don't want to actually
# introduce an experiment in real code, we're going to simulate it
diff --git a/spec/features/global_search_spec.rb b/spec/features/global_search_spec.rb
index 2e63ec2d4f2..7c55551e9c3 100644
--- a/spec/features/global_search_spec.rb
+++ b/spec/features/global_search_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Global search', :js do
+RSpec.describe 'Global search', :js, feature_category: :global_search do
include AfterNextHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/graphiql_spec.rb b/spec/features/graphiql_spec.rb
index 7729cdaa362..34c1797b6ba 100644
--- a/spec/features/graphiql_spec.rb
+++ b/spec/features/graphiql_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GraphiQL' do
+RSpec.describe 'GraphiQL', feature_category: :integrations do
context 'without relative_url_root' do
before do
visit '/-/graphql-explorer'
diff --git a/spec/features/graphql_known_operations_spec.rb b/spec/features/graphql_known_operations_spec.rb
index 80214307be3..5b2205a4440 100644
--- a/spec/features/graphql_known_operations_spec.rb
+++ b/spec/features/graphql_known_operations_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
# We need to distinguish between known and unknown GraphQL operations. This spec
# tests that we set up Gitlab::Graphql::KnownOperations.default which requires
# integration of FE queries, webpack plugin, and BE.
-RSpec.describe 'Graphql known operations', :js do
+RSpec.describe 'Graphql known operations', :js, feature_category: :integrations do
around do |example|
# Let's make sure we aren't receiving or leaving behind any side-effects
# https://gitlab.com/gitlab-org/gitlab/-/jobs/1743294100
diff --git a/spec/features/group_variables_spec.rb b/spec/features/group_variables_spec.rb
index e2c659d7dfe..117f50aefc6 100644
--- a/spec/features/group_variables_spec.rb
+++ b/spec/features/group_variables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group variables', :js do
+RSpec.describe 'Group variables', :js, feature_category: :pipeline_authoring do
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:variable) { create(:ci_group_variable, key: 'test_key', value: 'test_value', masked: true, group: group) }
diff --git a/spec/features/groups/activity_spec.rb b/spec/features/groups/activity_spec.rb
index 5bac80959b1..7e592b3f48b 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' do
+RSpec.describe 'Group activity page', feature_category: :subgroups 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 10ef28f3fbc..8216bc3249d 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 do
+RSpec.describe 'Group Issue Boards', :js, feature_category: :subgroups do
include BoardHelpers
let(:group) { create(:group) }
diff --git a/spec/features/groups/board_spec.rb b/spec/features/groups/board_spec.rb
index aece6d790b5..11ec38f637b 100644
--- a/spec/features/groups/board_spec.rb
+++ b/spec/features/groups/board_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Boards' do
+RSpec.describe 'Group Boards', feature_category: :team_planning do
include DragTo
include MobileHelpers
include BoardHelpers
@@ -35,7 +35,7 @@ RSpec.describe 'Group Boards' do
page.within("[data-testid='project-select-dropdown']") do
find('button.gl-dropdown-toggle').click
- find('.gl-new-dropdown-item button').click
+ find('.gl-dropdown-item button').click
end
click_button 'Create issue'
diff --git a/spec/features/groups/clusters/user_spec.rb b/spec/features/groups/clusters/user_spec.rb
index 6b512323d4d..3e565dd8eab 100644
--- a/spec/features/groups/clusters/user_spec.rb
+++ b/spec/features/groups/clusters/user_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User Cluster', :js do
+RSpec.describe 'User Cluster', :js, feature_category: :users do
include GoogleApi::CloudPlatformHelpers
let(:group) { create(:group) }
diff --git a/spec/features/groups/container_registry_spec.rb b/spec/features/groups/container_registry_spec.rb
index 7bef2dc9416..11f94967aaf 100644
--- a/spec/features/groups/container_registry_spec.rb
+++ b/spec/features/groups/container_registry_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Container Registry', :js do
+RSpec.describe 'Container Registry', :js, feature_category: :container_registry do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
@@ -97,8 +97,6 @@ RSpec.describe 'Container Registry', :js do
expect(find('.modal .modal-title')).to have_content _('Remove tag')
find('.modal .modal-footer .btn-danger').click
end
-
- it_behaves_like 'rejecting tags destruction for an importing repository on', tags: ['latest']
end
end
diff --git a/spec/features/groups/crm/contacts/create_spec.rb b/spec/features/groups/crm/contacts/create_spec.rb
index b10b2afe35c..860cadd322d 100644
--- a/spec/features/groups/crm/contacts/create_spec.rb
+++ b/spec/features/groups/crm/contacts/create_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Create a CRM contact', :js do
+RSpec.describe 'Create a CRM contact', :js, feature_category: :service_desk do
let(:user) { create(:user) }
let(:group) { create(:group, :crm_enabled) }
let!(:organization) { create(:organization, group: group, name: 'GitLab') }
diff --git a/spec/features/groups/dependency_proxy_for_containers_spec.rb b/spec/features/groups/dependency_proxy_for_containers_spec.rb
index ae721e7b91f..c0456140291 100644
--- a/spec/features/groups/dependency_proxy_for_containers_spec.rb
+++ b/spec/features/groups/dependency_proxy_for_containers_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Dependency Proxy for containers', :js do
+RSpec.describe 'Group Dependency Proxy for containers', :js, feature_category: :dependency_proxy do
include DependencyProxyHelpers
include_context 'file upload requests helpers'
diff --git a/spec/features/groups/dependency_proxy_spec.rb b/spec/features/groups/dependency_proxy_spec.rb
index af9c4a40729..05984d40ea6 100644
--- a/spec/features/groups/dependency_proxy_spec.rb
+++ b/spec/features/groups/dependency_proxy_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Dependency Proxy' do
+RSpec.describe 'Group Dependency Proxy', feature_category: :dependency_proxy do
let(:owner) { create(:user) }
let(:reporter) { create(:user) }
let(:group) { create(:group) }
diff --git a/spec/features/groups/empty_states_spec.rb b/spec/features/groups/empty_states_spec.rb
index f1a8f97461a..a37c40f50e0 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' do
+RSpec.describe 'Group empty states', feature_category: :subgroups 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 59a7feb813b..dce5b67d694 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' do
+RSpec.describe 'The group page', feature_category: :subgroups do
include ExternalAuthorizationServiceHelpers
let(:user) { create(:user) }
diff --git a/spec/features/groups/group_runners_spec.rb b/spec/features/groups/group_runners_spec.rb
index c9d1c69e9e1..ab53ef7c470 100644
--- a/spec/features/groups/group_runners_spec.rb
+++ b/spec/features/groups/group_runners_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Group Runners" do
+RSpec.describe "Group Runners", feature_category: :runner_fleet do
include Spec::Support::Helpers::Features::RunnersHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/groups/group_settings_spec.rb b/spec/features/groups/group_settings_spec.rb
index 81ff0088e1e..fe1b0909c06 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' do
+RSpec.describe 'Edit group settings', feature_category: :subgroups do
let(:user) { create(:user) }
let(:group) { create(:group, path: 'foo') }
@@ -147,7 +147,7 @@ RSpec.describe 'Edit group settings' do
selected_group.add_owner(user)
end
- it 'can successfully transfer the group' do
+ it 'can successfully transfer the group', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/384966' do
visit edit_group_path(selected_group)
page.within('[data-testid="transfer-locations-dropdown"]') do
diff --git a/spec/features/groups/import_export/connect_instance_spec.rb b/spec/features/groups/import_export/connect_instance_spec.rb
index ae03e64cf59..11cc4bb9b37 100644
--- a/spec/features/groups/import_export/connect_instance_spec.rb
+++ b/spec/features/groups/import_export/connect_instance_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Import/Export - Connect to another instance', :js do
+RSpec.describe 'Import/Export - Connect to another instance', :js, feature_category: :importers do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
@@ -10,74 +10,96 @@ RSpec.describe 'Import/Export - Connect to another instance', :js do
group.add_owner(user)
end
- before do
- gitlab_sign_in(user)
+ context 'when importing group by direct transfer is enabled' do
+ before do
+ stub_application_setting(bulk_import_enabled: true)
- visit new_group_path
+ open_import_group
+ end
- click_link 'Import group'
- end
+ context 'when the user provides valid credentials' do
+ source_url = 'https://gitlab.com'
- context 'when the user provides valid credentials' do
- source_url = 'https://gitlab.com'
+ include_context 'bulk imports requests context', source_url
- include_context 'bulk imports requests context', source_url
+ it 'successfully connects to remote instance' do
+ pat = 'demo-pat'
- it 'successfully connects to remote instance' do
- pat = 'demo-pat'
+ expect(page).to have_content 'Import groups from another instance of GitLab'
+ expect(page).to have_content 'Not all related objects are migrated'
- expect(page).to have_content 'Import groups from another instance of GitLab'
- expect(page).to have_content 'Not all related objects are migrated'
+ fill_in :bulk_import_gitlab_url, with: source_url
+ fill_in :bulk_import_gitlab_access_token, with: pat
- fill_in :bulk_import_gitlab_url, with: source_url
- fill_in :bulk_import_gitlab_access_token, with: pat
+ click_on 'Connect instance'
- click_on 'Connect instance'
+ expect(page).to have_content 'Showing 1-1 of 42 groups that you own from %{url}' % { url: source_url }
+ expect(page).to have_content 'stub-group'
- expect(page).to have_content 'Showing 1-1 of 42 groups that you own from %{url}' % { url: source_url }
- expect(page).to have_content 'stub-group'
+ visit '/'
- visit '/'
+ wait_for_all_requests
+ end
+ end
+
+ context 'when the user provides invalid url' do
+ it 'reports an error' do
+ source_url = 'invalid-url'
+ pat = 'demo-pat'
+
+ fill_in :bulk_import_gitlab_url, with: source_url
+ fill_in :bulk_import_gitlab_access_token, with: pat
- wait_for_all_requests
+ click_on 'Connect instance'
+
+ expect(page).to have_content 'Specified URL cannot be used'
+ end
end
- end
- context 'when the user provides invalid url' do
- it 'reports an error' do
- source_url = 'invalid-url'
- pat = 'demo-pat'
+ context 'when the user does not fill in source URL' do
+ it 'reports an error' do
+ pat = 'demo-pat'
- fill_in :bulk_import_gitlab_url, with: source_url
- fill_in :bulk_import_gitlab_access_token, with: pat
+ fill_in :bulk_import_gitlab_access_token, with: pat
- click_on 'Connect instance'
+ click_on 'Connect instance'
- expect(page).to have_content 'Specified URL cannot be used'
+ expect(page).to have_content 'Please fill in GitLab source URL'
+ end
end
- end
- context 'when the user does not fill in source URL' do
- it 'reports an error' do
- pat = 'demo-pat'
+ context 'when the user does not fill in access token' do
+ it 'reports an error' do
+ source_url = 'https://gitlab.com'
- fill_in :bulk_import_gitlab_access_token, with: pat
+ fill_in :bulk_import_gitlab_url, with: source_url
- click_on 'Connect instance'
+ click_on 'Connect instance'
- expect(page).to have_content 'Please fill in GitLab source URL'
+ expect(page).to have_content 'Please fill in your personal access token'
+ end
end
end
- context 'when the user does not fill in access token' do
- it 'reports an error' do
- source_url = 'https://gitlab.com'
-
- fill_in :bulk_import_gitlab_url, with: source_url
+ context 'when importing group by direct transfer is disabled' do
+ before do
+ stub_application_setting(bulk_import_enabled: false)
- click_on 'Connect instance'
+ open_import_group
+ end
- expect(page).to have_content 'Please fill in your personal access token'
+ it 'renders fields and button disabled' do
+ expect(page).to have_field('GitLab source URL', disabled: true)
+ expect(page).to have_field('Personal access token', disabled: true)
+ expect(page).to have_button('Connect instance', disabled: true)
end
end
+
+ def open_import_group
+ gitlab_sign_in(user)
+
+ visit new_group_path
+
+ click_link 'Import group'
+ end
end
diff --git a/spec/features/groups/import_export/export_file_spec.rb b/spec/features/groups/import_export/export_file_spec.rb
index e3cb1ad77a7..885cfa0f595 100644
--- a/spec/features/groups/import_export/export_file_spec.rb
+++ b/spec/features/groups/import_export/export_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Export', :js do
+RSpec.describe 'Group Export', :js, feature_category: :importers do
include ExportFileHelper
let_it_be(:user) { create(:user) }
diff --git a/spec/features/groups/import_export/import_file_spec.rb b/spec/features/groups/import_export/import_file_spec.rb
index b69b8bf2c19..f66062b9ac3 100644
--- a/spec/features/groups/import_export/import_file_spec.rb
+++ b/spec/features/groups/import_export/import_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Import/Export - Group Import', :js do
+RSpec.describe 'Import/Export - Group Import', :js, feature_category: :importers do
let_it_be(:user) { create(:user) }
let_it_be(:import_path) { "#{Dir.tmpdir}/group_import_spec" }
diff --git a/spec/features/groups/import_export/migration_history_spec.rb b/spec/features/groups/import_export/migration_history_spec.rb
index 243bdcc13a9..f851c5e2ec5 100644
--- a/spec/features/groups/import_export/migration_history_spec.rb
+++ b/spec/features/groups/import_export/migration_history_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Import/Export - GitLab migration history', :js do
+RSpec.describe 'Import/Export - GitLab migration history', :js, feature_category: :importers do
let_it_be(:user) { create(:user) }
let_it_be(:user_import_1) { create(:bulk_import, user: user) }
diff --git a/spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb b/spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb
index 02aa418cd73..fbdd760f7fb 100644
--- a/spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb
+++ b/spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates the group-level Mattermost Slash Command integration', :js do
+RSpec.describe 'User activates the group-level Mattermost Slash Command integration', :js, feature_category: :build 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 d4e88505118..00c0d4c3ebe 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' do
+RSpec.describe 'Group issues page', feature_category: :subgroups do
include FilteredSearchHelpers
include DragTo
@@ -11,6 +11,10 @@ RSpec.describe 'Group issues page' do
let(:project_with_issues_disabled) { create(:project, :issues_disabled, group: group) }
let(:path) { issues_group_path(group) }
+ before do
+ stub_feature_flags(or_issuable_queries: false)
+ end
+
context 'with shared examples', :js do
let(:issuable) { create(:issue, project: project, title: "this is my created issuable") }
diff --git a/spec/features/groups/labels/create_spec.rb b/spec/features/groups/labels/create_spec.rb
index 19433e612ff..5b57e670c1d 100644
--- a/spec/features/groups/labels/create_spec.rb
+++ b/spec/features/groups/labels/create_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Create a group label' do
+RSpec.describe 'Create a group label', feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
diff --git a/spec/features/groups/labels/edit_spec.rb b/spec/features/groups/labels/edit_spec.rb
index cf1729af97d..2cbe44e11bf 100644
--- a/spec/features/groups/labels/edit_spec.rb
+++ b/spec/features/groups/labels/edit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Edit group label' do
+RSpec.describe 'Edit group label', feature_category: :team_planning do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
diff --git a/spec/features/groups/labels/index_spec.rb b/spec/features/groups/labels/index_spec.rb
index 68f03368989..ea27fa2c5d9 100644
--- a/spec/features/groups/labels/index_spec.rb
+++ b/spec/features/groups/labels/index_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group labels' do
+RSpec.describe 'Group labels', feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:label) { create(:group_label, group: group) }
diff --git a/spec/features/groups/labels/search_labels_spec.rb b/spec/features/groups/labels/search_labels_spec.rb
index fbb0acfb923..478d35951f9 100644
--- a/spec/features/groups/labels/search_labels_spec.rb
+++ b/spec/features/groups/labels/search_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Search for labels', :js do
+RSpec.describe 'Search for labels', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:label1) { create(:group_label, title: 'Foo', description: 'Lorem ipsum', group: group) }
diff --git a/spec/features/groups/labels/sort_labels_spec.rb b/spec/features/groups/labels/sort_labels_spec.rb
index 9d05703aae6..c2410246fe1 100644
--- a/spec/features/groups/labels/sort_labels_spec.rb
+++ b/spec/features/groups/labels/sort_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Sort labels', :js do
+RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:label1) { create(:group_label, title: 'Foo', description: 'Lorem ipsum', group: group) }
diff --git a/spec/features/groups/labels/subscription_spec.rb b/spec/features/groups/labels/subscription_spec.rb
index 231c4b33bee..4d391074e62 100644
--- a/spec/features/groups/labels/subscription_spec.rb
+++ b/spec/features/groups/labels/subscription_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Labels subscription' do
+RSpec.describe 'Labels subscription', feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let!(:label1) { create(:group_label, group: group, title: 'foo') }
diff --git a/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb b/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb
index b0508633065..4caf5ba5314 100644
--- a/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb
+++ b/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Labels > User sees links to issuables' do
+RSpec.describe 'Groups > Labels > User sees links to issuables', feature_category: :team_planning do
let_it_be(:group) { create(:group, :public) }
before do
diff --git a/spec/features/groups/members/filter_members_spec.rb b/spec/features/groups/members/filter_members_spec.rb
index 917b35659a6..dc33bb11bea 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 do
+RSpec.describe 'Groups > Members > Filter members', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 66f251c859a..cfb1b24bccb 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' do
+RSpec.describe 'Groups > Members > Leave group', feature_category: :subgroups do
include Spec::Support::Helpers::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 b81949da85d..1aea5a76b41 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 do
+RSpec.describe 'Groups > Members > List members', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 e4252e2f3aa..ee8786a2e36 100644
--- a/spec/features/groups/members/manage_groups_spec.rb
+++ b/spec/features/groups/members/manage_groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Manage groups', :js do
+RSpec.describe 'Groups > Members > Manage groups', :js, feature_category: :subgroups do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb
index 5f28afc23f1..4211f2b6265 100644
--- a/spec/features/groups/members/manage_members_spec.rb
+++ b/spec/features/groups/members/manage_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Groups > Members > Manage members' do
+RSpec.describe 'Groups > Members > Manage members', feature_category: :subgroups do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
include Spec::Support::Helpers::ModalHelpers
@@ -72,7 +72,7 @@ RSpec.describe 'Groups > Members > Manage members' do
visit group_group_members_path(group)
- invite_member(user1.name, role: 'Reporter', refresh: false)
+ invite_member(user1.name, role: 'Reporter')
invite_modal = page.find(invite_modal_selector)
expect(invite_modal).to have_content("not authorized to update member")
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 86185b8dd32..e9f80b05fa7 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 do
+RSpec.describe 'Groups > Members > Owner adds member with expiration date', :js, feature_category: :subgroups do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
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 2a17e7d2a5c..951dc59feca 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' do
+RSpec.describe 'Groups > Members > Maintainer manages access requests', feature_category: :subgroups 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 f806c7d3704..35eb085a195 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' do
+RSpec.describe 'Groups > Members > Request access', feature_category: :subgroups 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 fe5fed307d7..6b2896b194c 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 do
+RSpec.describe 'Search group member', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 bf8e64fa1e2..4e9adda5f2b 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 do
+RSpec.describe 'Groups > Members > Sort members', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 2e9f332c0d6..2dc116842b3 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 do
+RSpec.describe 'Groups > Members > Tabs', :js, feature_category: :subgroups do
using RSpec::Parameterized::TableSyntax
shared_examples 'active "Members" tab' do
diff --git a/spec/features/groups/merge_requests_spec.rb b/spec/features/groups/merge_requests_spec.rb
index 296b839c8fc..87f1f422e90 100644
--- a/spec/features/groups/merge_requests_spec.rb
+++ b/spec/features/groups/merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group merge requests page' do
+RSpec.describe 'Group merge requests page', feature_category: :code_review do
include FilteredSearchHelpers
let(:path) { merge_requests_group_path(group) }
diff --git a/spec/features/groups/milestone_spec.rb b/spec/features/groups/milestone_spec.rb
index 92a40459737..a70a1e2e70b 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' do
+RSpec.describe 'Group milestones', feature_category: :subgroups 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/gfm_autocomplete_spec.rb b/spec/features/groups/milestones/gfm_autocomplete_spec.rb
index 1fec6091f1e..8df097dde88 100644
--- a/spec/features/groups/milestones/gfm_autocomplete_spec.rb
+++ b/spec/features/groups/milestones/gfm_autocomplete_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GFM autocomplete', :js do
+RSpec.describe 'GFM autocomplete', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user, name: '💃speciąl someone💃', username: 'someone.special') }
let_it_be(:group) { create(:group, name: 'Ancestor') }
let_it_be(:project) { create(:project, :repository, group: group) }
diff --git a/spec/features/groups/milestones_sorting_spec.rb b/spec/features/groups/milestones_sorting_spec.rb
index 6f3fc72775f..5543938957a 100644
--- a/spec/features/groups/milestones_sorting_spec.rb
+++ b/spec/features/groups/milestones_sorting_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Milestones sorting', :js do
+RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
let(:group) { create(:group) }
let!(:project) { create(:project_empty_repo, group: group) }
let!(:other_project) { create(:project_empty_repo, group: group) }
diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb
index b3fb563a202..180ccab78bc 100644
--- a/spec/features/groups/navbar_spec.rb
+++ b/spec/features/groups/navbar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group navbar' do
+RSpec.describe 'Group navbar', feature_category: :navigation do
include NavbarStructureHelper
include WikiHelpers
diff --git a/spec/features/groups/new_group_page_spec.rb b/spec/features/groups/new_group_page_spec.rb
index 6a8af9c31fd..662ef734299 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 do
+RSpec.describe 'New group page', :js, feature_category: :subgroups do
let(:user) { create(:user) }
let(:group) { create(:group) }
diff --git a/spec/features/groups/packages_spec.rb b/spec/features/groups/packages_spec.rb
index 26338b03349..dd238657fbc 100644
--- a/spec/features/groups/packages_spec.rb
+++ b/spec/features/groups/packages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Packages' do
+RSpec.describe 'Group Packages', feature_category: :package_registry do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
diff --git a/spec/features/groups/settings/access_tokens_spec.rb b/spec/features/groups/settings/access_tokens_spec.rb
index 198d3a40df2..1bee3be1ddb 100644
--- a/spec/features/groups/settings/access_tokens_spec.rb
+++ b/spec/features/groups/settings/access_tokens_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group > Settings > Access Tokens', :js do
+RSpec.describe 'Group > Settings > Access Tokens', :js, feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/groups/settings/ci_cd_spec.rb b/spec/features/groups/settings/ci_cd_spec.rb
index 50c481c115c..a1acb73178b 100644
--- a/spec/features/groups/settings/ci_cd_spec.rb
+++ b/spec/features/groups/settings/ci_cd_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group CI/CD settings' do
+RSpec.describe 'Group CI/CD settings', feature_category: :continuous_integration do
include WaitForRequests
let_it_be(:user) { create(:user) }
@@ -23,11 +23,6 @@ RSpec.describe 'Group CI/CD settings' do
visit group_settings_ci_cd_path(group)
end
- it 'displays the new group runners view banner' do
- expect(page).to have_content(s_('Runners|New group runners view'))
- expect(page).to have_link(href: group_runners_path(group))
- end
-
it 'has "Enable shared runners for this group" toggle', :js do
expect(shared_runners_toggle).to have_content(_('Enable shared runners for this group'))
end
diff --git a/spec/features/groups/settings/group_badges_spec.rb b/spec/features/groups/settings/group_badges_spec.rb
index 5bf736cc7ce..07c8451f8fb 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' do
+RSpec.describe 'Group Badges', feature_category: :subgroups 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 277471cb304..e7b87cda506 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' do
+RSpec.describe 'User manages applications', feature_category: :subgroups 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/packages_and_registries_spec.rb b/spec/features/groups/settings/packages_and_registries_spec.rb
index 7f3f5775559..60aad8452ce 100644
--- a/spec/features/groups/settings/packages_and_registries_spec.rb
+++ b/spec/features/groups/settings/packages_and_registries_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Package and registry settings' do
+RSpec.describe 'Group Package and registry settings', feature_category: :package_registry do
include WaitForRequests
let(:user) { create(:user) }
diff --git a/spec/features/groups/settings/repository_spec.rb b/spec/features/groups/settings/repository_spec.rb
index cd7dcbdb28d..c65a8268a18 100644
--- a/spec/features/groups/settings/repository_spec.rb
+++ b/spec/features/groups/settings/repository_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group Repository settings', :js do
+RSpec.describe 'Group Repository settings', :js, feature_category: :source_code_management do
include WaitForRequests
let_it_be(:user) { create(:user) }
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 fe0dd7cec9a..374ac236e20 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 do
+RSpec.describe 'User searches group settings', :js, feature_category: :subgroups 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 d8207899e24..2f5a5e6ba16 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' do
+RSpec.describe 'Group share with group lock', feature_category: :subgroups 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 d814906a274..c0af6080d0f 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' do
+RSpec.describe 'Group show page', feature_category: :subgroups do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
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 73fde7cafe5..38b879bb5b2 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' do
+RSpec.describe 'User browse group projects page', feature_category: :subgroups 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 ee216488232..64422f5cca5 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' do
+RSpec.describe 'Groups > sidebar', feature_category: :subgroups 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 4e4c0e509b0..e5e30ed1a55 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 do
+RSpec.describe 'Groups > User sees users dropdowns in issuables list', :js, feature_category: :subgroups do
include FilteredSearchHelpers
let(:group) { create(:group) }
@@ -11,6 +11,7 @@ RSpec.describe 'Groups > User sees users dropdowns in issuables list', :js do
let!(:project) { create(:project, group: group) }
before do
+ stub_feature_flags(or_issuable_queries: false)
group.add_developer(user_in_dropdown)
sign_in(user_in_dropdown)
end
diff --git a/spec/features/groups_spec.rb b/spec/features/groups_spec.rb
index 4e02f6f7ca2..8806d1c2219 100644
--- a/spec/features/groups_spec.rb
+++ b/spec/features/groups_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group' do
+RSpec.describe 'Group', feature_category: :subgroups do
let(:user) { create(:user) }
before do
@@ -350,10 +350,10 @@ RSpec.describe 'Group' do
visit path
end
- it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="group[name]"]' },
- { form: '.js-general-settings-form', input: '#group_visibility_level_0' },
- { form: '.js-general-permissions-form', input: '#group_request_access_enabled' },
- { form: '.js-general-permissions-form', input: 'input[name="group[two_factor_grace_period]"]' }]
+ it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="group[name]"]', submit: 'button[type="submit"]' },
+ { form: '.js-general-settings-form', input: '#group_visibility_level_0', submit: 'button[type="submit"]' },
+ { form: '.js-general-permissions-form', input: '#group_request_access_enabled', submit: 'button[type="submit"]' },
+ { form: '.js-general-permissions-form', input: 'input[name="group[two_factor_grace_period]"]', submit: 'button[type="submit"]' }]
it 'saves new settings' do
page.within('.gs-general') do
diff --git a/spec/features/help_dropdown_spec.rb b/spec/features/help_dropdown_spec.rb
index a9c014a9408..a5c9221ad26 100644
--- a/spec/features/help_dropdown_spec.rb
+++ b/spec/features/help_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Help Dropdown", :js do
+RSpec.describe "Help Dropdown", :js, feature_category: :not_owned do
let_it_be(:user) { create(:user) }
let_it_be(:admin) { create(:admin) }
diff --git a/spec/features/help_pages_spec.rb b/spec/features/help_pages_spec.rb
index eef48d09f32..6c0901d6169 100644
--- a/spec/features/help_pages_spec.rb
+++ b/spec/features/help_pages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Help Pages' do
+RSpec.describe 'Help Pages', feature_category: :not_owned do
describe 'Get the main help page' do
before do
allow(File).to receive(:read).and_call_original
diff --git a/spec/features/ics/dashboard_issues_spec.rb b/spec/features/ics/dashboard_issues_spec.rb
index 1d0ea495757..7115bd7dff7 100644
--- a/spec/features/ics/dashboard_issues_spec.rb
+++ b/spec/features/ics/dashboard_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dashboard Issues Calendar Feed' do
+RSpec.describe 'Dashboard Issues Calendar Feed', feature_category: :team_planning do
describe 'GET /issues' do
let!(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/ics/group_issues_spec.rb b/spec/features/ics/group_issues_spec.rb
index f29c39ad4ef..70ec156a7b0 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' do
+RSpec.describe 'Group Issues Calendar Feed', feature_category: :subgroups 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 771748060bb..4bbd966d72a 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' do
+RSpec.describe 'Project Issues Calendar Feed', feature_category: :projects do
describe 'GET /issues' do
let!(:user) do
user = create(:user, email: 'private1@example.com')
diff --git a/spec/features/ide/clientside_preview_csp_spec.rb b/spec/features/ide/clientside_preview_csp_spec.rb
index 849fdb0a44c..04427a5c294 100644
--- a/spec/features/ide/clientside_preview_csp_spec.rb
+++ b/spec/features/ide/clientside_preview_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'IDE Clientside Preview CSP' do
+RSpec.describe 'IDE Clientside Preview CSP', feature_category: :web_ide do
let_it_be(:user) { create(:user) }
shared_context 'disable feature' do
diff --git a/spec/features/ide/static_object_external_storage_csp_spec.rb b/spec/features/ide/static_object_external_storage_csp_spec.rb
index 421b5db0dbb..701be2626e5 100644
--- a/spec/features/ide/static_object_external_storage_csp_spec.rb
+++ b/spec/features/ide/static_object_external_storage_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Static Object External Storage Content Security Policy' do
+RSpec.describe 'Static Object External Storage Content Security Policy', feature_category: :web_ide do
let_it_be(:user) { create(:user) }
shared_context 'disable feature' do
diff --git a/spec/features/ide/user_opens_merge_request_spec.rb b/spec/features/ide/user_opens_merge_request_spec.rb
index 4ffa5212970..0074b4b1eb0 100644
--- a/spec/features/ide/user_opens_merge_request_spec.rb
+++ b/spec/features/ide/user_opens_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'IDE merge request', :js do
+RSpec.describe 'IDE merge request', :js, feature_category: :web_ide do
let(:merge_request) { create(:merge_request, :simple, source_project: project) }
let(:project) { create(:project, :public, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/ide_spec.rb b/spec/features/ide_spec.rb
index 1f6d34efc0f..2ca8d3f7156 100644
--- a/spec/features/ide_spec.rb
+++ b/spec/features/ide_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'IDE', :js do
+RSpec.describe 'IDE', :js, feature_category: :web_ide do
include WebIdeSpecHelpers
let_it_be(:ide_iframe_selector) { '#ide iframe' }
@@ -46,10 +46,6 @@ RSpec.describe 'IDE', :js do
end
it_behaves_like 'legacy Web IDE'
-
- it 'does not show switch button' do
- expect(page).not_to have_button('Switch to new Web IDE')
- end
end
context 'with vscode feature flag on and use_legacy_web_ide=true' do
@@ -61,19 +57,6 @@ RSpec.describe 'IDE', :js do
end
it_behaves_like 'legacy Web IDE'
-
- describe 'when user switches to new Web IDE' do
- before do
- click_button('Switch to new Web IDE')
-
- # Confirm modal
- page.within('#confirmationModal') do
- click_button('Switch editors')
- end
- end
-
- it_behaves_like 'new Web IDE'
- end
end
describe 'sub-groups' do
diff --git a/spec/features/import/manifest_import_spec.rb b/spec/features/import/manifest_import_spec.rb
index 520cf850da2..bb3eb34637b 100644
--- a/spec/features/import/manifest_import_spec.rb
+++ b/spec/features/import/manifest_import_spec.rb
@@ -2,9 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Import multiple repositories by uploading a manifest file', :js do
- include Select2Helper
-
+RSpec.describe 'Import multiple repositories by uploading a manifest file', :js, feature_category: :importers do
let(:user) { create(:admin) }
let(:group) { create(:group) }
diff --git a/spec/features/incidents/incident_details_spec.rb b/spec/features/incidents/incident_details_spec.rb
index 7c24943eb6f..e1167285464 100644
--- a/spec/features/incidents/incident_details_spec.rb
+++ b/spec/features/incidents/incident_details_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incident details', :js do
+RSpec.describe 'Incident details', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:incident) { create(:incident, project: project, author: developer, description: 'description') }
diff --git a/spec/features/incidents/incident_timeline_events_spec.rb b/spec/features/incidents/incident_timeline_events_spec.rb
index ef0eb27d310..3a73ea50247 100644
--- a/spec/features/incidents/incident_timeline_events_spec.rb
+++ b/spec/features/incidents/incident_timeline_events_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incident timeline events', :js do
+RSpec.describe 'Incident timeline events', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:incident) { create(:incident, project: project) }
@@ -50,9 +50,9 @@ RSpec.describe 'Incident timeline events', :js do
it 'shows the confirmation modal and edits the event' do
click_button _('More actions')
- page.within '.gl-new-dropdown-contents' do
+ page.within '.gl-dropdown-contents' do
expect(page).to have_content(_('Edit'))
- page.find('.gl-new-dropdown-item-text-primary', text: _('Edit')).click
+ page.find('.gl-dropdown-item-text-primary', text: _('Edit')).click
end
expect(page).to have_selector('.common-note-form')
@@ -82,9 +82,9 @@ RSpec.describe 'Incident timeline events', :js do
it 'shows the confirmation modal and deletes the event' do
click_button _('More actions')
- page.within '.gl-new-dropdown-contents' do
+ page.within '.gl-dropdown-contents' do
expect(page).to have_content(_('Delete'))
- page.find('.gl-new-dropdown-item-text-primary', text: 'Delete').click
+ page.find('.gl-dropdown-item-text-primary', text: 'Delete').click
end
page.within '.modal' do
diff --git a/spec/features/incidents/incidents_list_spec.rb b/spec/features/incidents/incidents_list_spec.rb
index 3241e71f537..61983f9290c 100644
--- a/spec/features/incidents/incidents_list_spec.rb
+++ b/spec/features/incidents/incidents_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incident Management index', :js do
+RSpec.describe 'Incident Management index', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:incident) { create(:incident, project: project) }
diff --git a/spec/features/incidents/user_creates_new_incident_spec.rb b/spec/features/incidents/user_creates_new_incident_spec.rb
index 685f6ab791a..bf5d7dac587 100644
--- a/spec/features/incidents/user_creates_new_incident_spec.rb
+++ b/spec/features/incidents/user_creates_new_incident_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incident Management index', :js do
+RSpec.describe 'Incident Management index', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:reporter) { create(:user) }
let_it_be(:guest) { create(:user) }
diff --git a/spec/features/incidents/user_filters_incidents_by_status_spec.rb b/spec/features/incidents/user_filters_incidents_by_status_spec.rb
index 661c737141b..f1f9dd45ff7 100644
--- a/spec/features/incidents/user_filters_incidents_by_status_spec.rb
+++ b/spec/features/incidents/user_filters_incidents_by_status_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User filters Incident Management table by status', :js do
+RSpec.describe 'User filters Incident Management table by status', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/incidents/user_searches_incidents_spec.rb b/spec/features/incidents/user_searches_incidents_spec.rb
index b8e3ff534c3..31a485801c4 100644
--- a/spec/features/incidents/user_searches_incidents_spec.rb
+++ b/spec/features/incidents/user_searches_incidents_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches Incident Management incidents', :js do
+RSpec.describe 'User searches Incident Management incidents', :js, feature_category: :incident_management do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
let_it_be(:incident) { create(:incident, project: project) }
diff --git a/spec/features/incidents/user_uses_quick_actions_spec.rb b/spec/features/incidents/user_uses_quick_actions_spec.rb
index fce9eadd42f..3740f2fca47 100644
--- a/spec/features/incidents/user_uses_quick_actions_spec.rb
+++ b/spec/features/incidents/user_uses_quick_actions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incidents > User uses quick actions', :js do
+RSpec.describe 'Incidents > User uses quick actions', :js, feature_category: :incident_management do
include Spec::Support::Helpers::Features::NotesHelpers
describe 'incident-only commands' do
diff --git a/spec/features/incidents/user_views_incident_spec.rb b/spec/features/incidents/user_views_incident_spec.rb
index 054a084ea9c..8216aca787a 100644
--- a/spec/features/incidents/user_views_incident_spec.rb
+++ b/spec/features/incidents/user_views_incident_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User views incident" do
+RSpec.describe "User views incident", feature_category: :incident_management do
let_it_be(:project) { create(:project_empty_repo, :public) }
let_it_be(:guest) { create(:user) }
let_it_be(:developer) { create(:user) }
@@ -57,7 +57,7 @@ RSpec.describe "User views incident" do
it 'shows incident actions', :js do
click_button 'Incident actions'
- expect(page).to have_link 'Report abuse'
+ expect(page).to have_link 'Report abuse to administrator'
end
end
end
diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb
index 34990a53b51..1091bea1ce3 100644
--- a/spec/features/invites_spec.rb
+++ b/spec/features/invites_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group or Project invitations', :aggregate_failures do
+RSpec.describe 'Group or Project invitations', :aggregate_failures, feature_category: :experimentation_expansion do
let_it_be(:owner) { create(:user, name: 'John Doe') }
let_it_be(:group) { create(:group, name: 'Owned') }
let_it_be(:project) { create(:project, :repository, namespace: group) }
@@ -155,11 +155,10 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
let(:new_user) { build_stubbed(:user) }
let(:invite_email) { new_user.email }
let(:group_invite) { create(:group_member, :invited, group: group, invite_email: invite_email, created_by: owner) }
- let(:send_email_confirmation) { true }
let(:extra_params) { { invite_type: Emails::Members::INITIAL_INVITE } }
before do
- stub_application_setting(send_user_confirmation_email: send_email_confirmation)
+ stub_application_setting_enum('email_confirmation_setting', 'hard')
end
context 'when registering using invitation email' do
@@ -181,7 +180,9 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
end
context 'email confirmation disabled' do
- let(:send_email_confirmation) { false }
+ before do
+ stub_application_setting_enum('email_confirmation_setting', 'off')
+ end
context 'the user signs up for an account with the invitation email address' do
it 'redirects to the most recent membership activity page with all the projects/groups invitations automatically accepted' do
@@ -213,6 +214,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
expect { fill_in_sign_up_form(new_user) }.not_to change { User.count }
expect(page).to have_content('prohibited this user from being saved')
expect(page).to have_current_path(user_registration_path, ignore_query: true)
+ expect(find_field('Email').value).to eq(group_invite.invite_email)
end
end
diff --git a/spec/features/issuables/issuable_list_spec.rb b/spec/features/issuables/issuable_list_spec.rb
index a1e80586c05..350b0582565 100644
--- a/spec/features/issuables/issuable_list_spec.rb
+++ b/spec/features/issuables/issuable_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issuable list', :js do
+RSpec.describe 'issuable list', :js, feature_category: :team_planning do
let(:project) { create(:project) }
let(:user) { create(:user) }
@@ -26,9 +26,9 @@ RSpec.describe 'issuable list', :js do
it "counts upvotes, downvotes and notes count for each #{issuable_type.to_s.humanize}" do
visit_issuable_list(issuable_type)
- expect(first('.issuable-upvotes')).to have_content(1)
- expect(first('.issuable-downvotes')).to have_content(1)
- expect(first('.issuable-comments')).to have_content(2)
+ expect(first('[data-testid="issuable-upvotes"]')).to have_content(1)
+ expect(first('[data-testid="issuable-downvotes"]')).to have_content(1)
+ expect(first('[data-testid="issuable-comments"]')).to have_content(2)
end
it 'sorts labels alphabetically' do
diff --git a/spec/features/issuables/markdown_references/internal_references_spec.rb b/spec/features/issuables/markdown_references/internal_references_spec.rb
index c5a8e9f367c..aeae76b1b77 100644
--- a/spec/features/issuables/markdown_references/internal_references_spec.rb
+++ b/spec/features/issuables/markdown_references/internal_references_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Internal references", :js do
+RSpec.describe "Internal references", :js, feature_category: :team_planning do
include Spec::Support::Helpers::Features::NotesHelpers
let(:private_project_user) { private_project.first_owner }
diff --git a/spec/features/issuables/markdown_references/jira_spec.rb b/spec/features/issuables/markdown_references/jira_spec.rb
index 66d0022f7e9..52464c6be8b 100644
--- a/spec/features/issuables/markdown_references/jira_spec.rb
+++ b/spec/features/issuables/markdown_references/jira_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Jira", :js do
+RSpec.describe "Jira", :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:actual_project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, target_project: actual_project, source_project: actual_project) }
diff --git a/spec/features/issuables/shortcuts_issuable_spec.rb b/spec/features/issuables/shortcuts_issuable_spec.rb
index 528420062dd..0190111b2f0 100644
--- a/spec/features/issuables/shortcuts_issuable_spec.rb
+++ b/spec/features/issuables/shortcuts_issuable_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Blob shortcuts', :js do
+RSpec.describe 'Blob shortcuts', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:issue) { create(:issue, project: project, author: user) }
@@ -87,7 +87,7 @@ RSpec.describe 'Blob shortcuts', :js do
it "opens milestones dropdown for editing" do
find('body').native.send_key('m')
- expect(find('[data-testid="milestone-edit"]')).to have_selector('.gl-new-dropdown-inner')
+ expect(find('[data-testid="milestone-edit"]')).to have_selector('.gl-dropdown-inner')
end
end
diff --git a/spec/features/issuables/sorting_list_spec.rb b/spec/features/issuables/sorting_list_spec.rb
index 53723b39d5b..b5362267309 100644
--- a/spec/features/issuables/sorting_list_spec.rb
+++ b/spec/features/issuables/sorting_list_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'Sort Issuable List' do
+RSpec.describe 'Sort Issuable List', feature_category: :team_planning do
let(:project) { create(:project, :public) }
let(:first_created_issuable) { issuables.order_created_asc.first }
diff --git a/spec/features/issuables/user_sees_sidebar_spec.rb b/spec/features/issuables/user_sees_sidebar_spec.rb
index 66ed6044de6..2c0157ea9e0 100644
--- a/spec/features/issuables/user_sees_sidebar_spec.rb
+++ b/spec/features/issuables/user_sees_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Sidebar on Mobile' do
+RSpec.describe 'Issue Sidebar on Mobile', feature_category: :team_planning do
include MobileHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/issue_rebalancing_spec.rb b/spec/features/issue_rebalancing_spec.rb
index 686aa5eb1b6..3933f0ffcf8 100644
--- a/spec/features/issue_rebalancing_spec.rb
+++ b/spec/features/issue_rebalancing_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue rebalancing' do
+RSpec.describe 'Issue rebalancing', feature_category: :team_planning do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
let_it_be(:user) { create(:user) }
@@ -41,13 +41,13 @@ RSpec.describe 'Issue rebalancing' do
it 'shows an alert in project issues list with manual sort', :js do
visit project_issues_path(project, sort: 'relative_position')
- expect(page).to have_selector('.flash-notice', text: alert_message_regex, count: 1)
+ expect(page).to have_selector('.gl-alert-info', text: alert_message_regex, count: 1)
end
it 'shows an alert in group issues list with manual sort', :js do
visit issues_group_path(group, sort: 'relative_position')
- expect(page).to have_selector('.flash-notice', text: alert_message_regex, count: 1)
+ expect(page).to have_selector('.gl-alert-info', text: alert_message_regex, count: 1)
end
it 'does not show an alert in project issues list with other sorts' do
diff --git a/spec/features/issues/confidential_notes_spec.rb b/spec/features/issues/confidential_notes_spec.rb
index 858c054c803..d87c73da44d 100644
--- a/spec/features/issues/confidential_notes_spec.rb
+++ b/spec/features/issues/confidential_notes_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "Confidential notes on issues", :js do
+RSpec.describe "Confidential notes on issues", :js, feature_category: :team_planning do
it_behaves_like 'confidential notes on issuables' do
let_it_be(:issuable_parent) { create(:project) }
let_it_be(:issuable) { create(:issue, project: issuable_parent) }
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 a385e8a5fd0..0bdb5930f30 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Resolving all open threads in a merge request from an issue', :js do
+RSpec.describe 'Resolving all open threads in a merge request from an issue', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb b/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
index 5ff61a52b21..3a32bd34af8 100644
--- a/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
+++ b/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Resolve an open thread in a merge request by creating an issue', :js do
+RSpec.describe 'Resolve an open thread in a merge request by creating an issue', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, only_allow_merge_if_all_discussions_are_resolved: true) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/issues/csv_spec.rb b/spec/features/issues/csv_spec.rb
index 9fd171bf44b..8629201459f 100644
--- a/spec/features/issues/csv_spec.rb
+++ b/spec/features/issues/csv_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues csv', :js do
+RSpec.describe 'Issues csv', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let(:milestone) { create(:milestone, title: 'v1.0', project: project) }
diff --git a/spec/features/issues/discussion_lock_spec.rb b/spec/features/issues/discussion_lock_spec.rb
index 13f1742fbf6..33fc9a6fd96 100644
--- a/spec/features/issues/discussion_lock_spec.rb
+++ b/spec/features/issues/discussion_lock_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Discussion Lock', :js do
+RSpec.describe 'Discussion Lock', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:issue) { create(:issue, project: project, author: user) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
index 40b0bfd9aa4..a89c36a2b78 100644
--- a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown assignee', :js do
+RSpec.describe 'Dropdown assignee', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
diff --git a/spec/features/issues/filtered_search/dropdown_author_spec.rb b/spec/features/issues/filtered_search/dropdown_author_spec.rb
index a67d114c6d1..b5d389b3bee 100644
--- a/spec/features/issues/filtered_search/dropdown_author_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_author_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown author', :js do
+RSpec.describe 'Dropdown author', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
diff --git a/spec/features/issues/filtered_search/dropdown_base_spec.rb b/spec/features/issues/filtered_search/dropdown_base_spec.rb
index 9e3e3d394cd..866b83a6319 100644
--- a/spec/features/issues/filtered_search/dropdown_base_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_base_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown base', :js do
+RSpec.describe 'Dropdown base', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
@@ -10,6 +10,7 @@ RSpec.describe 'Dropdown base', :js do
let_it_be(:issue) { create(:issue, project: project) }
before do
+ stub_feature_flags(or_issuable_queries: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/issues/filtered_search/dropdown_emoji_spec.rb b/spec/features/issues/filtered_search/dropdown_emoji_spec.rb
index 78450a9c3f7..52c85942a7c 100644
--- a/spec/features/issues/filtered_search/dropdown_emoji_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_emoji_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown emoji', :js do
+RSpec.describe 'Dropdown emoji', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project, :public) }
@@ -11,6 +11,7 @@ RSpec.describe 'Dropdown emoji', :js do
let_it_be(:award_emoji_star) { create(:award_emoji, name: 'star', user: user, awardable: issue) }
before do
+ stub_feature_flags(or_issuable_queries: false)
project.add_maintainer(user)
create_list(:award_emoji, 2, user: user, name: 'thumbsup')
create_list(:award_emoji, 1, user: user, name: 'thumbsdown')
diff --git a/spec/features/issues/filtered_search/dropdown_hint_spec.rb b/spec/features/issues/filtered_search/dropdown_hint_spec.rb
index cbe917931aa..39034a40b1f 100644
--- a/spec/features/issues/filtered_search/dropdown_hint_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_hint_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown hint', :js do
+RSpec.describe 'Dropdown hint', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/issues/filtered_search/dropdown_label_spec.rb b/spec/features/issues/filtered_search/dropdown_label_spec.rb
index 0ff56909ad1..a2eceb67841 100644
--- a/spec/features/issues/filtered_search/dropdown_label_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_label_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown label', :js do
+RSpec.describe 'Dropdown label', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
@@ -11,6 +11,7 @@ RSpec.describe 'Dropdown label', :js do
let_it_be(:label) { create(:label, project: project, title: 'bug-label') }
before do
+ stub_feature_flags(or_issuable_queries: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
index 37d604106f1..d08eb29b5c0 100644
--- a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown milestone', :js do
+RSpec.describe 'Dropdown milestone', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
@@ -12,6 +12,7 @@ RSpec.describe 'Dropdown milestone', :js do
let_it_be(:issue) { create(:issue, project: project) }
before do
+ stub_feature_flags(or_issuable_queries: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/issues/filtered_search/dropdown_release_spec.rb b/spec/features/issues/filtered_search/dropdown_release_spec.rb
index 08e20563c8e..5d9b8b04012 100644
--- a/spec/features/issues/filtered_search/dropdown_release_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_release_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Dropdown release', :js do
+RSpec.describe 'Dropdown release', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
@@ -12,6 +12,7 @@ RSpec.describe 'Dropdown release', :js do
let_it_be(:issue) { create(:issue, project: project) }
before do
+ stub_feature_flags(or_issuable_queries: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/issues/filtered_search/filter_issues_spec.rb b/spec/features/issues/filtered_search/filter_issues_spec.rb
index e48df1b1c53..f67d5c40efd 100644
--- a/spec/features/issues/filtered_search/filter_issues_spec.rb
+++ b/spec/features/issues/filtered_search/filter_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Filter issues', :js do
+RSpec.describe 'Filter issues', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let(:project) { create(:project) }
diff --git a/spec/features/issues/filtered_search/recent_searches_spec.rb b/spec/features/issues/filtered_search/recent_searches_spec.rb
index cb17349dd43..2d9c73f2756 100644
--- a/spec/features/issues/filtered_search/recent_searches_spec.rb
+++ b/spec/features/issues/filtered_search/recent_searches_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Recent searches', :js do
+RSpec.describe 'Recent searches', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project_1) { create(:project, :public) }
diff --git a/spec/features/issues/filtered_search/search_bar_spec.rb b/spec/features/issues/filtered_search/search_bar_spec.rb
index e075547e326..c975df2a531 100644
--- a/spec/features/issues/filtered_search/search_bar_spec.rb
+++ b/spec/features/issues/filtered_search/search_bar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Search bar', :js do
+RSpec.describe 'Search bar', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
diff --git a/spec/features/issues/filtered_search/visual_tokens_spec.rb b/spec/features/issues/filtered_search/visual_tokens_spec.rb
index 854b88c3f81..f25925ed33d 100644
--- a/spec/features/issues/filtered_search/visual_tokens_spec.rb
+++ b/spec/features/issues/filtered_search/visual_tokens_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Visual tokens', :js do
+RSpec.describe 'Visual tokens', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let_it_be(:project) { create(:project) }
diff --git a/spec/features/issues/form_spec.rb b/spec/features/issues/form_spec.rb
index fe591d7fe3a..2898c97c2e9 100644
--- a/spec/features/issues/form_spec.rb
+++ b/spec/features/issues/form_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New/edit issue', :js do
+RSpec.describe 'New/edit issue', :js, feature_category: :team_planning do
include ActionView::Helpers::JavaScriptHelper
let_it_be(:project) { create(:project, :repository) }
@@ -43,7 +43,7 @@ RSpec.describe 'New/edit issue', :js do
# To work around this, we have to hold on to and call to the original implementation manually.
original_issue_dropdown_options = FormHelper.instance_method(:assignees_dropdown_options)
allow_any_instance_of(FormHelper).to receive(:assignees_dropdown_options).and_wrap_original do |original, *args|
- options = original_issue_dropdown_options.bind(original.receiver).call(*args)
+ options = original_issue_dropdown_options.bind_call(original.receiver, *args)
options[:data][:per_page] = 2
options
diff --git a/spec/features/issues/gfm_autocomplete_spec.rb b/spec/features/issues/gfm_autocomplete_spec.rb
index fa4ce6fe1c1..2bd5373b715 100644
--- a/spec/features/issues/gfm_autocomplete_spec.rb
+++ b/spec/features/issues/gfm_autocomplete_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GFM autocomplete', :js do
+RSpec.describe 'GFM autocomplete', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user, name: '💃speciąl someone💃', username: 'someone.special') }
let_it_be(:user2) { create(:user, name: 'Marge Simpson', username: 'msimpson') }
diff --git a/spec/features/issues/group_label_sidebar_spec.rb b/spec/features/issues/group_label_sidebar_spec.rb
index 8150f9c6faf..b26030fe8d0 100644
--- a/spec/features/issues/group_label_sidebar_spec.rb
+++ b/spec/features/issues/group_label_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Group label on issue' do
+RSpec.describe 'Group label on issue', feature_category: :team_planning do
it 'renders link to the project issues page', :js do
group = create(:group)
project = create(:project, :public, namespace: group)
diff --git a/spec/features/issues/incident_issue_spec.rb b/spec/features/issues/incident_issue_spec.rb
index d6cde466d1b..2fba1ca9141 100644
--- a/spec/features/issues/incident_issue_spec.rb
+++ b/spec/features/issues/incident_issue_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Incident Detail', :js do
+RSpec.describe 'Incident Detail', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:payload) do
{
diff --git a/spec/features/issues/issue_detail_spec.rb b/spec/features/issues/issue_detail_spec.rb
index a253e6f4c86..44e9bbad1ba 100644
--- a/spec/features/issues/issue_detail_spec.rb
+++ b/spec/features/issues/issue_detail_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Detail', :js do
+RSpec.describe 'Issue Detail', :js, feature_category: :team_planning do
let_it_be_with_refind(:project) { create(:project, :public) }
let(:user) { create(:user) }
diff --git a/spec/features/issues/issue_header_spec.rb b/spec/features/issues/issue_header_spec.rb
index 165015013dd..090067fc4ac 100644
--- a/spec/features/issues/issue_header_spec.rb
+++ b/spec/features/issues/issue_header_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issue header', :js do
+RSpec.describe 'issue header', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
@@ -27,7 +27,7 @@ RSpec.describe 'issue header', :js do
it 'shows the "New related issue", "Report abuse", and "Delete issue" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
- expect(page).to have_link 'Report abuse'
+ expect(page).to have_link 'Report abuse to administrator'
expect(page).to have_button 'Delete issue'
expect(page).not_to have_link 'Submit as spam'
end
@@ -71,7 +71,7 @@ RSpec.describe 'issue header', :js do
it 'does not show "Report abuse" link in dropdown' do
click_button 'Issue actions'
- expect(page).not_to have_link 'Report abuse'
+ expect(page).not_to have_link 'Report abuse to administrator'
end
end
end
@@ -116,7 +116,7 @@ RSpec.describe 'issue header', :js do
it 'only shows the "New related issue" and "Report abuse" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
- expect(page).to have_link 'Report abuse'
+ expect(page).to have_link 'Report abuse to administrator'
expect(page).not_to have_link 'Submit as spam'
expect(page).not_to have_button 'Delete issue'
end
@@ -160,7 +160,7 @@ RSpec.describe 'issue header', :js do
it 'does not show "Report abuse" link in dropdown' do
click_button 'Issue actions'
- expect(page).not_to have_link 'Report abuse'
+ expect(page).not_to have_link 'Report abuse to administrator'
end
end
end
diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb
index 6fa8a52a9c5..fa72acad8c6 100644
--- a/spec/features/issues/issue_sidebar_spec.rb
+++ b/spec/features/issues/issue_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue Sidebar' do
+RSpec.describe 'Issue Sidebar', feature_category: :team_planning do
include MobileHelpers
let_it_be(:group) { create(:group, :nested) }
diff --git a/spec/features/issues/issue_state_spec.rb b/spec/features/issues/issue_state_spec.rb
index d5a115433aa..758dafccb86 100644
--- a/spec/features/issues/issue_state_spec.rb
+++ b/spec/features/issues/issue_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issue state', :js do
+RSpec.describe 'issue state', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/issues/keyboard_shortcut_spec.rb b/spec/features/issues/keyboard_shortcut_spec.rb
index 4dbc5d8e01c..f91a0d4b057 100644
--- a/spec/features/issues/keyboard_shortcut_spec.rb
+++ b/spec/features/issues/keyboard_shortcut_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues shortcut', :js do
+RSpec.describe 'Issues shortcut', :js, feature_category: :team_planning do
context 'New Issue shortcut' do
context 'issues are enabled' do
let(:project) { create(:project) }
diff --git a/spec/features/issues/markdown_toolbar_spec.rb b/spec/features/issues/markdown_toolbar_spec.rb
index aad5d319bc4..5cabaf16960 100644
--- a/spec/features/issues/markdown_toolbar_spec.rb
+++ b/spec/features/issues/markdown_toolbar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue markdown toolbar', :js do
+RSpec.describe 'Issue markdown toolbar', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/issues/move_spec.rb b/spec/features/issues/move_spec.rb
index 054b7b3855b..72c6e288168 100644
--- a/spec/features/issues/move_spec.rb
+++ b/spec/features/issues/move_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issue move to another project' do
+RSpec.describe 'issue move to another project', feature_category: :team_planning do
let(:user) { create(:user) }
let(:old_project) { create(:project, :repository) }
let(:text) { 'Some issue description' }
diff --git a/spec/features/issues/note_polling_spec.rb b/spec/features/issues/note_polling_spec.rb
index 5e02d5ad038..dae71481352 100644
--- a/spec/features/issues/note_polling_spec.rb
+++ b/spec/features/issues/note_polling_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue notes polling', :js do
+RSpec.describe 'Issue notes polling', :js, feature_category: :team_planning do
include NoteInteractionHelpers
let(:project) { create(:project, :public) }
diff --git a/spec/features/issues/notes_on_issues_spec.rb b/spec/features/issues/notes_on_issues_spec.rb
index 4e98062e8b2..8d6262efa53 100644
--- a/spec/features/issues/notes_on_issues_spec.rb
+++ b/spec/features/issues/notes_on_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Create notes on issues', :js do
+RSpec.describe 'Create notes on issues', :js, feature_category: :team_planning do
let(:user) { create(:user) }
def submit_comment(text)
diff --git a/spec/features/issues/related_issues_spec.rb b/spec/features/issues/related_issues_spec.rb
index 62127295a7c..f460b4b1c7f 100644
--- a/spec/features/issues/related_issues_spec.rb
+++ b/spec/features/issues/related_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Related issues', :js do
+RSpec.describe 'Related issues', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/issues/resource_label_events_spec.rb b/spec/features/issues/resource_label_events_spec.rb
index e8158b3e2aa..531361b19af 100644
--- a/spec/features/issues/resource_label_events_spec.rb
+++ b/spec/features/issues/resource_label_events_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'List issue resource label events', :js do
+RSpec.describe 'List issue resource label events', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let(:issue) { create(:issue, project: project, author: user) }
diff --git a/spec/features/issues/rss_spec.rb b/spec/features/issues/rss_spec.rb
index e3faed81c73..36dffeded50 100644
--- a/spec/features/issues/rss_spec.rb
+++ b/spec/features/issues/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Issues RSS', :js do
+RSpec.describe 'Project Issues RSS', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
diff --git a/spec/features/issues/service_desk_spec.rb b/spec/features/issues/service_desk_spec.rb
index 87cd00fac6b..922ab95538b 100644
--- a/spec/features/issues/service_desk_spec.rb
+++ b/spec/features/issues/service_desk_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Service Desk Issue Tracker', :js do
+RSpec.describe 'Service Desk Issue Tracker', :js, feature_category: :team_planning do
let(:project) { create(:project, :private, service_desk_enabled: true) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/issues/spam_akismet_issue_creation_spec.rb b/spec/features/issues/spam_akismet_issue_creation_spec.rb
index 4cc4c4cf607..7c62f141105 100644
--- a/spec/features/issues/spam_akismet_issue_creation_spec.rb
+++ b/spec/features/issues/spam_akismet_issue_creation_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Spam detection on issue creation', :js do
+RSpec.describe 'Spam detection on issue creation', :js, feature_category: :team_planning do
include StubENV
let(:project) { create(:project, :public) }
diff --git a/spec/features/issues/todo_spec.rb b/spec/features/issues/todo_spec.rb
index 6a53c12eda3..2c537cefa5e 100644
--- a/spec/features/issues/todo_spec.rb
+++ b/spec/features/issues/todo_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Manually create a todo item from issue', :js do
+RSpec.describe 'Manually create a todo item from issue', :js, feature_category: :team_planning do
let!(:project) { create(:project) }
let!(:issue) { create(:issue, project: project) }
let!(:user) { create(:user) }
diff --git a/spec/features/issues/user_bulk_edits_issues_labels_spec.rb b/spec/features/issues/user_bulk_edits_issues_labels_spec.rb
index 2a201e0bc23..1fc6609d1f5 100644
--- a/spec/features/issues/user_bulk_edits_issues_labels_spec.rb
+++ b/spec/features/issues/user_bulk_edits_issues_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > Labels bulk assignment' do
+RSpec.describe 'Issues > Labels bulk assignment', feature_category: :team_planning do
let(:user) { create(:user) }
let!(:project) { create(:project) }
let!(:bug) { create(:label, project: project, title: 'bug') }
diff --git a/spec/features/issues/user_bulk_edits_issues_spec.rb b/spec/features/issues/user_bulk_edits_issues_spec.rb
index d7fad355cb4..fc48bc4baf9 100644
--- a/spec/features/issues/user_bulk_edits_issues_spec.rb
+++ b/spec/features/issues/user_bulk_edits_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multiple issue updating from issues#index', :js do
+RSpec.describe 'Multiple issue updating from issues#index', :js, feature_category: :team_planning do
let!(:project) { create(:project) }
let!(:issue) { create(:issue, project: project) }
let!(:user) { create(:user) }
diff --git a/spec/features/issues/user_comments_on_issue_spec.rb b/spec/features/issues/user_comments_on_issue_spec.rb
index ef00e66af7e..59e1413fc97 100644
--- a/spec/features/issues/user_comments_on_issue_spec.rb
+++ b/spec/features/issues/user_comments_on_issue_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User comments on issue", :js do
+RSpec.describe "User comments on issue", :js, feature_category: :team_planning do
include Spec::Support::Helpers::Features::NotesHelpers
let_it_be(:project) { create(:project, :public) }
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 5ba09703852..bbc14368d82 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
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates branch and merge request on issue page', :js do
+RSpec.describe 'User creates branch and merge request on issue page', :js, feature_category: :team_planning do
let(:membership_level) { :developer }
let(:user) { create(:user) }
let!(:project) { create(:project, :repository, :public) }
@@ -84,7 +84,7 @@ RSpec.describe 'User creates branch and merge request on issue page', :js do
wait_for_requests
- expect(page).to have_selector('.dropdown-toggle-text ', text: '1-cherry-coloured-funk')
+ expect(page).to have_selector('.ref-selector ', text: '1-cherry-coloured-funk')
expect(page).to have_current_path project_tree_path(project, '1-cherry-coloured-funk'), ignore_query: true
end
end
@@ -109,7 +109,7 @@ RSpec.describe 'User creates branch and merge request on issue page', :js do
wait_for_requests
- expect(page).to have_selector('.dropdown-toggle-text ', text: branch_name)
+ expect(page).to have_selector('.ref-selector', text: branch_name)
expect(page).to have_current_path project_tree_path(project, branch_name), ignore_query: true
end
end
diff --git a/spec/features/issues/user_creates_confidential_merge_request_spec.rb b/spec/features/issues/user_creates_confidential_merge_request_spec.rb
index 6b4526cd624..23fef5fa46e 100644
--- a/spec/features/issues/user_creates_confidential_merge_request_spec.rb
+++ b/spec/features/issues/user_creates_confidential_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates confidential merge request on issue page', :js do
+RSpec.describe 'User creates confidential merge request on issue page', :js, feature_category: :team_planning do
include ProjectForksHelper
let(:user) { create(:user) }
diff --git a/spec/features/issues/user_creates_issue_by_email_spec.rb b/spec/features/issues/user_creates_issue_by_email_spec.rb
index c47f24ab836..d6d2b2a50f8 100644
--- a/spec/features/issues/user_creates_issue_by_email_spec.rb
+++ b/spec/features/issues/user_creates_issue_by_email_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > User creates issue by email' do
+RSpec.describe 'Issues > User creates issue by email', feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/issues/user_creates_issue_spec.rb b/spec/features/issues/user_creates_issue_spec.rb
index 1d023a15159..a4b8cb91999 100644
--- a/spec/features/issues/user_creates_issue_spec.rb
+++ b/spec/features/issues/user_creates_issue_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User creates issue" do
+RSpec.describe "User creates issue", feature_category: :team_planning do
include DropzoneHelper
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/issues/user_edits_issue_spec.rb b/spec/features/issues/user_edits_issue_spec.rb
index 75df85f362f..223832a6ede 100644
--- a/spec/features/issues/user_edits_issue_spec.rb
+++ b/spec/features/issues/user_edits_issue_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "Issues > User edits issue", :js do
+RSpec.describe "Issues > User edits issue", :js, feature_category: :team_planning do
let_it_be(:project) { create(:project_empty_repo, :public) }
let_it_be(:project_with_milestones) { create(:project_empty_repo, :public) }
let_it_be(:user) { create(:user) }
@@ -416,7 +416,7 @@ RSpec.describe "Issues > User edits issue", :js do
find('.gl-form-input', visible: true).send_keys "\"#{milestones[0].title}\""
wait_for_requests
- page.within '.gl-new-dropdown-contents' do
+ page.within '.gl-dropdown-contents' do
expect(page).to have_content milestones[0].title
end
end
diff --git a/spec/features/issues/user_filters_issues_spec.rb b/spec/features/issues/user_filters_issues_spec.rb
index 2941ea6ec36..9f69e94b86c 100644
--- a/spec/features/issues/user_filters_issues_spec.rb
+++ b/spec/features/issues/user_filters_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User filters issues', :js do
+RSpec.describe 'User filters issues', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/issues/user_interacts_with_awards_spec.rb b/spec/features/issues/user_interacts_with_awards_spec.rb
index a2dea7f048b..539e429534e 100644
--- a/spec/features/issues/user_interacts_with_awards_spec.rb
+++ b/spec/features/issues/user_interacts_with_awards_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User interacts with awards' do
+RSpec.describe 'User interacts with awards', feature_category: :team_planning do
include MobileHelpers
let(:user) { create(:user) }
@@ -136,6 +136,10 @@ RSpec.describe 'User interacts with awards' do
page.within('.note-actions') do
find('.note-emoji-button').click
end
+
+ # make sure emoji popup is visible
+ execute_script("window.scrollBy(0, 200)")
+
find('gl-emoji[data-name="8ball"]').click
wait_for_requests
diff --git a/spec/features/issues/user_resets_their_incoming_email_token_spec.rb b/spec/features/issues/user_resets_their_incoming_email_token_spec.rb
index 4580378dc8a..55c66eb8a39 100644
--- a/spec/features/issues/user_resets_their_incoming_email_token_spec.rb
+++ b/spec/features/issues/user_resets_their_incoming_email_token_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > User resets their incoming email token' do
+RSpec.describe 'Issues > User resets their incoming email token', feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public, namespace: user.namespace) }
let_it_be(:issue) { create(:issue, project: project) }
diff --git a/spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb b/spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb
index 1fa8f533869..f93fbd06964 100644
--- a/spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb
+++ b/spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User scrolls to deep-linked note' do
+RSpec.describe 'User scrolls to deep-linked note', feature_category: :team_planning do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:comment_1) { create(:note_on_issue, noteable: issue, project: project, note: 'written first') }
diff --git a/spec/features/issues/user_sees_breadcrumb_links_spec.rb b/spec/features/issues/user_sees_breadcrumb_links_spec.rb
index 4ec13533a8d..632999c5d49 100644
--- a/spec/features/issues/user_sees_breadcrumb_links_spec.rb
+++ b/spec/features/issues/user_sees_breadcrumb_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New issue breadcrumb' do
+RSpec.describe 'New issue breadcrumb', feature_category: :team_planning do
let_it_be(:project, reload: true) { create(:project) }
let(:user) { project.creator }
diff --git a/spec/features/issues/user_sees_empty_state_spec.rb b/spec/features/issues/user_sees_empty_state_spec.rb
index b4c5a57de4f..5b95eb96e3b 100644
--- a/spec/features/issues/user_sees_empty_state_spec.rb
+++ b/spec/features/issues/user_sees_empty_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > User sees empty state', :js do
+RSpec.describe 'Issues > User sees empty state', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:user) { project.creator }
diff --git a/spec/features/issues/user_sees_live_update_spec.rb b/spec/features/issues/user_sees_live_update_spec.rb
index 7e4880f209e..860603ad546 100644
--- a/spec/features/issues/user_sees_live_update_spec.rb
+++ b/spec/features/issues/user_sees_live_update_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > User sees live update', :js do
+RSpec.describe 'Issues > User sees live update', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:user) { project.creator }
diff --git a/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb b/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
index 311818d2d15..b9a25f47da9 100644
--- a/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
+++ b/spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issues > Real-time sidebar', :js do
+RSpec.describe 'Issues > Real-time sidebar', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/issues/user_sorts_issue_comments_spec.rb b/spec/features/issues/user_sorts_issue_comments_spec.rb
index 4b38ce329b8..ca52e620ea7 100644
--- a/spec/features/issues/user_sorts_issue_comments_spec.rb
+++ b/spec/features/issues/user_sorts_issue_comments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Comment sort direction' do
+RSpec.describe 'Comment sort direction', feature_category: :team_planning do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:comment_1) { create(:note_on_issue, noteable: issue, project: project, note: 'written first') }
diff --git a/spec/features/issues/user_sorts_issues_spec.rb b/spec/features/issues/user_sorts_issues_spec.rb
index 2716d742be3..206544b32a4 100644
--- a/spec/features/issues/user_sorts_issues_spec.rb
+++ b/spec/features/issues/user_sorts_issues_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User sorts issues" do
+RSpec.describe "User sorts issues", feature_category: :team_planning do
include SortingHelper
include IssueHelpers
diff --git a/spec/features/issues/user_toggles_subscription_spec.rb b/spec/features/issues/user_toggles_subscription_spec.rb
index 541bbc8a8e7..904fafdf56a 100644
--- a/spec/features/issues/user_toggles_subscription_spec.rb
+++ b/spec/features/issues/user_toggles_subscription_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User toggles subscription", :js do
+RSpec.describe "User toggles subscription", :js, feature_category: :team_planning do
let(:project) { create(:project_empty_repo, :public) }
let(:user) { create(:user) }
let(:user2) { create(:user) }
diff --git a/spec/features/issues/user_uses_quick_actions_spec.rb b/spec/features/issues/user_uses_quick_actions_spec.rb
index d458c991668..963f1c56fef 100644
--- a/spec/features/issues/user_uses_quick_actions_spec.rb
+++ b/spec/features/issues/user_uses_quick_actions_spec.rb
@@ -7,7 +7,7 @@ require 'spec_helper'
# for example, adding quick actions when creating the issue and checking DateTime formats on UI.
# Because this kind of spec takes more time to run there is no need to add new ones
# for each existing quick action unless they test something not tested by existing tests.
-RSpec.describe 'Issues > User uses quick actions', :js do
+RSpec.describe 'Issues > User uses quick actions', :js, feature_category: :team_planning do
include Spec::Support::Helpers::Features::NotesHelpers
context "issuable common quick actions" do
diff --git a/spec/features/issues/user_views_issue_spec.rb b/spec/features/issues/user_views_issue_spec.rb
index eca698bb2f4..17ff3e0c702 100644
--- a/spec/features/issues/user_views_issue_spec.rb
+++ b/spec/features/issues/user_views_issue_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User views issue" do
+RSpec.describe "User views issue", feature_category: :team_planning do
let_it_be(:project) { create(:project_empty_repo, :public) }
let_it_be(:user) { create(:user) }
let_it_be(:issue) { create(:issue, project: project, description: "# Description header\n\n**Lorem** _ipsum_ dolor sit [amet](https://example.com)", author: user) }
diff --git a/spec/features/issues/user_views_issues_spec.rb b/spec/features/issues/user_views_issues_spec.rb
index 56afa7eb6ba..39d3dfbd487 100644
--- a/spec/features/issues/user_views_issues_spec.rb
+++ b/spec/features/issues/user_views_issues_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User views issues" do
+RSpec.describe "User views issues", feature_category: :team_planning do
let!(:closed_issue) { create(:closed_issue, project: project) }
let!(:open_issue1) { create(:issue, project: project) }
let!(:open_issue2) { create(:issue, project: project) }
diff --git a/spec/features/jira_connect/branches_spec.rb b/spec/features/jira_connect/branches_spec.rb
index c334a425849..489d3743a2a 100644
--- a/spec/features/jira_connect/branches_spec.rb
+++ b/spec/features/jira_connect/branches_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Create GitLab branches from Jira', :js do
+RSpec.describe 'Create GitLab branches from Jira', :js, feature_category: :integrations do
let_it_be(:alice) { create(:user, name: 'Alice') }
let_it_be(:bob) { create(:user, name: 'Bob') }
@@ -49,16 +49,11 @@ RSpec.describe 'Create GitLab branches from Jira', :js do
expect(page).to have_button('Create branch', disabled: false)
click_on 'master'
+ fill_in 'Search', with: source_branch
+ expect(page).not_to have_text(source_branch)
- within_dropdown do
- fill_in 'Search', with: source_branch
-
- expect(page).not_to have_text(source_branch)
-
- fill_in 'Search', with: 'master'
-
- expect(page).to have_text('master')
- end
+ fill_in 'Search', with: 'master'
+ expect(page).to have_text('master')
# Switch to project2
@@ -70,10 +65,13 @@ RSpec.describe 'Create GitLab branches from Jira', :js do
end
click_on 'master'
+ wait_for_requests
- within_dropdown do
- fill_in 'Search', with: source_branch
- click_on source_branch
+ fill_in 'Search', with: source_branch
+ wait_for_requests
+
+ within '[role="listbox"]' do
+ find('li', text: source_branch).click
end
fill_in 'Branch name', with: new_branch
diff --git a/spec/features/jira_connect/subscriptions_spec.rb b/spec/features/jira_connect/subscriptions_spec.rb
index 0468cfd70fc..8686234df01 100644
--- a/spec/features/jira_connect/subscriptions_spec.rb
+++ b/spec/features/jira_connect/subscriptions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Subscriptions Content Security Policy' do
+RSpec.describe 'Subscriptions Content Security Policy', feature_category: :integrations do
include ContentSecurityPolicyHelpers
let(:installation) { create(:jira_connect_installation) }
diff --git a/spec/features/jira_oauth_provider_authorize_spec.rb b/spec/features/jira_oauth_provider_authorize_spec.rb
index eb26440aff9..a542aaa7619 100644
--- a/spec/features/jira_oauth_provider_authorize_spec.rb
+++ b/spec/features/jira_oauth_provider_authorize_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'JIRA OAuth Provider' do
+RSpec.describe 'JIRA OAuth Provider', feature_category: :integrations do
describe 'JIRA DVCS OAuth Authorization' do
let(:application) { create(:oauth_application, redirect_uri: oauth_jira_dvcs_callback_url, scopes: 'read_user') }
diff --git a/spec/features/labels_hierarchy_spec.rb b/spec/features/labels_hierarchy_spec.rb
index 2f22ac8b395..d6e607e80df 100644
--- a/spec/features/labels_hierarchy_spec.rb
+++ b/spec/features/labels_hierarchy_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Labels Hierarchy', :js do
+RSpec.describe 'Labels Hierarchy', :js, feature_category: :team_planning do
include FilteredSearchHelpers
let!(:user) { create(:user) }
@@ -17,6 +17,7 @@ RSpec.describe 'Labels Hierarchy', :js do
let!(:project_label_1) { create(:label, project: project_1, title: 'Label_4') }
before do
+ stub_feature_flags(or_issuable_queries: false)
grandparent.add_owner(user)
sign_in(user)
diff --git a/spec/features/markdown/copy_as_gfm_spec.rb b/spec/features/markdown/copy_as_gfm_spec.rb
index b5bf9279371..8073e7e9556 100644
--- a/spec/features/markdown/copy_as_gfm_spec.rb
+++ b/spec/features/markdown/copy_as_gfm_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Copy as GFM', :js do
+RSpec.describe 'Copy as GFM', :js, feature_category: :team_planning do
include MarkupHelper
include RepoHelpers
include ActionView::Helpers::JavaScriptHelper
@@ -26,7 +26,7 @@ RSpec.describe 'Copy as GFM', :js do
# by verifying (`html_to_gfm(gfm_to_html(gfm)) == gfm`) for a number of examples of GFM for every filter, using the `verify` helper.
# These are all in a single `it` for performance reasons.
- it 'works', :aggregate_failures do
+ it 'transforms HTML to GFM', :aggregate_failures do
verify(
'nesting',
'> 1. [x] **[$`2 + 2`$ {-=-}{+=+} 2^2 ~~:thumbsup:~~](http://google.com)**'
@@ -459,25 +459,25 @@ RSpec.describe 'Copy as GFM', :js do
</a>
</div>
<!---->
- <button type="button" class="btn qa-apply-btn js-apply-btn">Apply suggestion</button>
+ <button type="button" class="btn js-apply-btn">Apply suggestion</button>
</div>
<table class="mb-3 md-suggestion-diff js-syntax-highlight code white">
<tbody>
<tr class="line_holder old">
- <td class="diff-line-num old_line qa-old-diff-line-number old">9</td>
+ <td class="diff-line-num old_line old">9</td>
<td class="diff-line-num new_line old"></td>
<td class="line_content old"><span>Old
</span></td>
</tr>
<tr class="line_holder new">
<td class="diff-line-num old_line new"></td>
- <td class="diff-line-num new_line qa-new-diff-line-number new">9</td>
+ <td class="diff-line-num new_line new">9</td>
<td class="line_content new"><span>New
</span></td>
</tr>
<tr class="line_holder new">
<td class="diff-line-num old_line new"></td>
- <td class="diff-line-num new_line qa-new-diff-line-number new">10</td>
+ <td class="diff-line-num new_line new">10</td>
<td class="line_content new"><span> And newer
</span></td>
</tr>
diff --git a/spec/features/markdown/gitlab_flavored_markdown_spec.rb b/spec/features/markdown/gitlab_flavored_markdown_spec.rb
index 17fe2dab8f7..36b02b17924 100644
--- a/spec/features/markdown/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/markdown/gitlab_flavored_markdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "GitLab Flavored Markdown" do
+RSpec.describe "GitLab Flavored Markdown", feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:issue) { create(:issue, project: project) }
diff --git a/spec/features/markdown/json_table_spec.rb b/spec/features/markdown/json_table_spec.rb
index 6b74dbac255..a9afbe1fc57 100644
--- a/spec/features/markdown/json_table_spec.rb
+++ b/spec/features/markdown/json_table_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Rendering json:table code block in markdown', :js do
+RSpec.describe 'Rendering json:table code block in markdown', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
it 'creates table correctly' do
diff --git a/spec/features/markdown/keyboard_shortcuts_spec.rb b/spec/features/markdown/keyboard_shortcuts_spec.rb
index 82288af1f9f..cfb8e61689f 100644
--- a/spec/features/markdown/keyboard_shortcuts_spec.rb
+++ b/spec/features/markdown/keyboard_shortcuts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Markdown keyboard shortcuts', :js do
+RSpec.describe 'Markdown keyboard shortcuts', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/markdown/kroki_spec.rb b/spec/features/markdown/kroki_spec.rb
index f02f5d44244..dca00c5f2fa 100644
--- a/spec/features/markdown/kroki_spec.rb
+++ b/spec/features/markdown/kroki_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'kroki rendering', :js do
+RSpec.describe 'kroki rendering', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
before do
diff --git a/spec/features/markdown/markdown_spec.rb b/spec/features/markdown/markdown_spec.rb
index 08f9b8eda13..132a03877f8 100644
--- a/spec/features/markdown/markdown_spec.rb
+++ b/spec/features/markdown/markdown_spec.rb
@@ -26,7 +26,7 @@ require 'erb'
#
# See the MarkdownFeature class for setup details.
-RSpec.describe 'GitLab Markdown', :aggregate_failures do
+RSpec.describe 'GitLab Markdown', :aggregate_failures, feature_category: :team_planning do
include Capybara::Node::Matchers
include MarkupHelper
include MarkdownMatchers
@@ -290,6 +290,13 @@ RSpec.describe 'GitLab Markdown', :aggregate_failures do
aggregate_failures 'KrokiFilter' do
expect(doc).to parse_kroki
end
+
+ aggregate_failures 'AttributeFilter' do
+ img = doc.at_css('img[alt="Sized Image"]')
+
+ expect(img.attr('width')).to eq('75%')
+ expect(img.attr('height')).to eq('100')
+ end
end
end
diff --git a/spec/features/markdown/math_spec.rb b/spec/features/markdown/math_spec.rb
index 1f219886818..0c77bd2a8ff 100644
--- a/spec/features/markdown/math_spec.rb
+++ b/spec/features/markdown/math_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Math rendering', :js do
+RSpec.describe 'Math rendering', :js, feature_category: :team_planning do
let!(:project) { create(:project, :public) }
it 'renders inline and display math correctly' do
diff --git a/spec/features/markdown/metrics_spec.rb b/spec/features/markdown/metrics_spec.rb
index 61dd41204f8..b5e42b16f87 100644
--- a/spec/features/markdown/metrics_spec.rb
+++ b/spec/features/markdown/metrics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Metrics rendering', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline do
+RSpec.describe 'Metrics rendering', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline, feature_category: :team_planning do
include PrometheusHelpers
include KubernetesHelpers
include GrafanaApiHelpers
diff --git a/spec/features/markdown/observability_spec.rb b/spec/features/markdown/observability_spec.rb
new file mode 100644
index 00000000000..0c7d8cc006b
--- /dev/null
+++ b/spec/features/markdown/observability_spec.rb
@@ -0,0 +1,83 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Observability rendering', :js do
+ let_it_be(:group) { create(:group, :public) }
+ let_it_be(:project) { create(:project, :repository, group: group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:observable_url) { "https://observe.gitlab.com/" }
+
+ let_it_be(:expected) do
+ %(<iframe src="#{observable_url}?theme=light&amp;kiosk" frameborder="0")
+ end
+
+ before do
+ project.add_maintainer(user)
+ sign_in(user)
+ end
+
+ context 'when embedding in an issue' do
+ let(:issue) do
+ create(:issue, project: project, description: observable_url)
+ end
+
+ before do
+ visit project_issue_path(project, issue)
+ wait_for_requests
+ end
+
+ it 'renders iframe in description' do
+ page.within('.description') do
+ expect(page.html).to include(expected)
+ end
+ end
+
+ it 'renders iframe in comment' do
+ expect(page).not_to have_css('.note-text')
+
+ page.within('.js-main-target-form') do
+ fill_in('note[note]', with: observable_url)
+ click_button('Comment')
+ end
+
+ wait_for_requests
+
+ page.within('.note-text') do
+ expect(page.html).to include(expected)
+ end
+ end
+ end
+
+ context 'when embedding in an MR' do
+ let(:merge_request) do
+ create(:merge_request, source_project: project, target_project: project, description: observable_url)
+ end
+
+ before do
+ visit merge_request_path(merge_request)
+ wait_for_requests
+ end
+
+ it 'renders iframe in description' do
+ page.within('.description') do
+ expect(page.html).to include(expected)
+ end
+ end
+
+ it 'renders iframe in comment' do
+ expect(page).not_to have_css('.note-text')
+
+ page.within('.js-main-target-form') do
+ fill_in('note[note]', with: observable_url)
+ click_button('Comment')
+ end
+
+ wait_for_requests
+
+ page.within('.note-text') do
+ expect(page.html).to include(expected)
+ end
+ end
+ end
+end
diff --git a/spec/features/markdown/sandboxed_mermaid_spec.rb b/spec/features/markdown/sandboxed_mermaid_spec.rb
index 2bf88d7882d..26b397a1fd5 100644
--- a/spec/features/markdown/sandboxed_mermaid_spec.rb
+++ b/spec/features/markdown/sandboxed_mermaid_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Sandboxed Mermaid rendering', :js do
+RSpec.describe 'Sandboxed Mermaid rendering', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:description) do
<<~MERMAID
diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb
index f01217df8c5..e16c1ae094b 100644
--- a/spec/features/merge_request/batch_comments_spec.rb
+++ b/spec/features/merge_request/batch_comments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > Batch comments', :js do
+RSpec.describe 'Merge request > Batch comments', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/close_reopen_report_toggle_spec.rb b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
index 5e9400935c3..63ed355b16e 100644
--- a/spec/features/merge_request/close_reopen_report_toggle_spec.rb
+++ b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issuables Close/Reopen/Report toggle' do
+RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_review do
include IssuablesHelper
let(:user) { create(:user) }
@@ -27,14 +27,14 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
find('[data-testid="merge-request-actions"]').click
expect(container).to have_link("Close merge request")
- expect(container).to have_link('Report abuse')
+ expect(container).to have_link('Report abuse to administrator')
end
it 'links to Report Abuse' do
find('[data-testid="merge-request-actions"]').click
- click_link 'Report abuse'
+ click_link 'Report abuse to administrator'
- expect(page).to have_content('Report abuse to admin')
+ expect(page).to have_content('Report abuse to administrator')
end
end
@@ -47,7 +47,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
expect(container).to have_link('Edit')
expect(container).to have_link('Mark as draft')
expect(container).to have_link('Close merge request')
- expect(container).to have_link('Report abuse')
+ expect(container).to have_link('Report abuse to administrator')
expect(container).not_to have_link('Reopen merge request')
end
end
@@ -59,7 +59,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
find('[data-testid="merge-request-actions"]').click
expect(container).to have_link('Edit')
- expect(container).to have_link('Report abuse')
+ expect(container).to have_link('Report abuse to administrator')
expect(container).to have_link('Reopen merge request')
expect(container).not_to have_link('Close merge request')
end
@@ -73,7 +73,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
expect(container).to have_link('Edit')
expect(container).to have_link('Reopen merge request')
expect(container).not_to have_link('Close merge request')
- expect(container).not_to have_link('Report abuse')
+ expect(container).not_to have_link('Report abuse to administrator')
end
end
end
@@ -83,7 +83,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_link('Report abuse')
+ expect(container).not_to have_link('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -93,7 +93,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_link('Report abuse')
+ expect(container).not_to have_link('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -112,7 +112,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle' do
end
it 'only shows a `Report abuse` button' do
- expect(container).to have_link('Report abuse')
+ expect(container).to have_link('Report abuse to administrator')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
expect(container).not_to have_link(exact_text: 'Edit')
diff --git a/spec/features/merge_request/maintainer_edits_fork_spec.rb b/spec/features/merge_request/maintainer_edits_fork_spec.rb
index 39d948bb6fb..bd040a5b894 100644
--- a/spec/features/merge_request/maintainer_edits_fork_spec.rb
+++ b/spec/features/merge_request/maintainer_edits_fork_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'a maintainer edits files on a source-branch of an MR from a fork', :js, :sidekiq_might_not_need_inline do
+RSpec.describe 'a maintainer edits files on a source-branch of an MR from a fork', :js, :sidekiq_might_not_need_inline,
+feature_category: :code_review do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
include ProjectForksHelper
let(:user) { create(:user, username: 'the-maintainer') }
diff --git a/spec/features/merge_request/merge_request_discussion_lock_spec.rb b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
index d69295744f7..b48d4d80647 100644
--- a/spec/features/merge_request/merge_request_discussion_lock_spec.rb
+++ b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
@@ -4,7 +4,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Request Discussion Lock', :js do
+RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, author: user) }
diff --git a/spec/features/merge_request/user_accepts_merge_request_spec.rb b/spec/features/merge_request/user_accepts_merge_request_spec.rb
index b50e6779e07..dda22abada0 100644
--- a/spec/features/merge_request/user_accepts_merge_request_spec.rb
+++ b/spec/features/merge_request/user_accepts_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline do
+RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline, feature_category: :code_review do
let(:merge_request) { create(:merge_request, :simple, source_project: project) }
let(:project) { create(:project, :public, :repository) }
let(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
index 75912238501..cf6836b544b 100644
--- a/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
+++ b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'create a merge request, allowing commits from members who can merge to the target branch', :js do
+RSpec.describe 'create a merge request, allowing commits from members who can merge to the target branch', :js,
+feature_category: :code_review do
include ProjectForksHelper
let(:user) { create(:user) }
let(:target_project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_approves_spec.rb b/spec/features/merge_request/user_approves_spec.rb
index 9670012803e..bfb6a3ec8de 100644
--- a/spec/features/merge_request/user_approves_spec.rb
+++ b/spec/features/merge_request/user_approves_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User approves', :js do
+RSpec.describe 'Merge request > User approves', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb
new file mode 100644
index 00000000000..2b93f88e96b
--- /dev/null
+++ b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Merge request > User assigns themselves as a reviewer', feature_category: :code_review do
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let(:user) { project.creator }
+ let(:merge_request) { create(:merge_request, :simple, source_project: project, author: user, description: "test mr") }
+
+ context 'when logged in as a member of the project' do
+ before do
+ sign_in(user)
+ visit project_merge_request_path(project, merge_request)
+ end
+
+ it 'updates updated_by', :js do
+ wait_for_requests
+
+ expect do
+ page.within('.reviewer') do
+ click_button 'assign yourself'
+ end
+
+ expect(find('.reviewer')).to have_content(user.name)
+ wait_for_all_requests
+ end.to change { merge_request.reload.updated_at }
+ end
+
+ context 'when logged in as a non-member of the project' do
+ before do
+ sign_in(create(:user))
+ visit project_merge_request_path(project, merge_request)
+ end
+
+ it 'does not show link to assign self as Reviewer' do
+ page.within('.reviewer') do
+ expect(page).not_to have_content 'Assign yourself'
+ end
+ end
+ end
+ end
+end
diff --git a/spec/features/merge_request/user_assigns_themselves_spec.rb b/spec/features/merge_request/user_assigns_themselves_spec.rb
index 2aaddc7791b..826904bd165 100644
--- a/spec/features/merge_request/user_assigns_themselves_spec.rb
+++ b/spec/features/merge_request/user_assigns_themselves_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User assigns themselves' do
+RSpec.describe 'Merge request > User assigns themselves', feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue1) { create(:issue, project: project) }
@@ -22,8 +22,12 @@ RSpec.describe 'Merge request > User assigns themselves' do
end
it 'updates updated_by', :js do
+ wait_for_requests
+
expect do
- click_button 'assign yourself'
+ page.within('[data-testid="assignee-block-container"]') do
+ click_button 'assign yourself'
+ end
expect(find('.assignee')).to have_content(user.name)
wait_for_all_requests
@@ -36,7 +40,9 @@ RSpec.describe 'Merge request > User assigns themselves' do
end
it 'does not display if related issues are already assigned' do
- expect(page).not_to have_content 'Assign yourself'
+ page.within('[data-testid="assignee-block-container"]') do
+ expect(page).not_to have_content 'Assign yourself'
+ end
end
end
end
@@ -48,7 +54,9 @@ RSpec.describe 'Merge request > User assigns themselves' do
end
it 'does not show assignment link' do
- expect(page).not_to have_content 'Assign yourself'
+ page.within('[data-testid="assignee-block-container"]') do
+ expect(page).not_to have_content 'Assign yourself'
+ end
end
end
end
diff --git a/spec/features/merge_request/user_awards_emoji_spec.rb b/spec/features/merge_request/user_awards_emoji_spec.rb
index 6fdc1a29174..dceac8d6a69 100644
--- a/spec/features/merge_request/user_awards_emoji_spec.rb
+++ b/spec/features/merge_request/user_awards_emoji_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User awards emoji', :js do
+RSpec.describe 'Merge request > User awards emoji', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project, author: create(:user)) }
diff --git a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
index f3cbc1ea1f5..3e3ff91ad19 100644
--- a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
+++ b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User clicks on merge request tabs', :js do
+RSpec.describe 'User clicks on merge request tabs', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
diff --git a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb
index 70951982c22..c5ef6b912fe 100644
--- a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb
+++ b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'User closes/reopens a merge request', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500' do
+RSpec.describe 'User closes/reopens a merge request', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500',
+ feature_category: :code_review do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_comments_on_commit_spec.rb b/spec/features/merge_request/user_comments_on_commit_spec.rb
index 8fa1fe3812d..64fe144cd0d 100644
--- a/spec/features/merge_request/user_comments_on_commit_spec.rb
+++ b/spec/features/merge_request/user_comments_on_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a commit', :js do
+RSpec.describe 'User comments on a commit', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_comments_on_diff_spec.rb b/spec/features/merge_request/user_comments_on_diff_spec.rb
index ffaf403e873..f1a942d5708 100644
--- a/spec/features/merge_request/user_comments_on_diff_spec.rb
+++ b/spec/features/merge_request/user_comments_on_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a diff', :js do
+RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_comments_on_merge_request_spec.rb b/spec/features/merge_request/user_comments_on_merge_request_spec.rb
index dbcfc2b968f..d5ad78746f4 100644
--- a/spec/features/merge_request/user_comments_on_merge_request_spec.rb
+++ b/spec/features/merge_request/user_comments_on_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a merge request', :js do
+RSpec.describe 'User comments on a merge request', :js, feature_category: :code_review do
include RepoHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
index bd5048374d5..eb7894f4ef7 100644
--- a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User creates image diff notes', :js do
+RSpec.describe 'Merge request > User creates image diff notes', :js, feature_category: :code_review do
include NoteInteractionHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_creates_merge_request_spec.rb b/spec/features/merge_request/user_creates_merge_request_spec.rb
index 0ae4ef18649..50629f11959 100644
--- a/spec/features/merge_request/user_creates_merge_request_spec.rb
+++ b/spec/features/merge_request/user_creates_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates a merge request', :js do
+RSpec.describe 'User creates a merge request', :js, feature_category: :code_review do
include ProjectForksHelper
shared_examples 'creates a merge request' do
@@ -77,7 +77,7 @@ RSpec.describe 'User creates a merge request', :js do
first('.dropdown-source-project a', text: forked_project.full_path)
first('.js-target-project').click
- first('.dropdown-target-project a', text: project.full_path)
+ first('.dropdown-target-project li', text: project.full_path)
first('.js-source-branch').click
diff --git a/spec/features/merge_request/user_creates_mr_spec.rb b/spec/features/merge_request/user_creates_mr_spec.rb
index 9d97e57fe3a..5effde234cd 100644
--- a/spec/features/merge_request/user_creates_mr_spec.rb
+++ b/spec/features/merge_request/user_creates_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User creates MR' do
+RSpec.describe 'Merge request > User creates MR', feature_category: :code_review do
include ProjectForksHelper
before do
diff --git a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
index f0c0142a6cc..4f1119d6c33 100644
--- a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
+++ b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request < User customizes merge commit message', :js do
+RSpec.describe 'Merge request < User customizes merge commit message', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue_1) { create(:issue, project: project) }
diff --git a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
index 59b5923b2a1..c04040dd6fd 100644
--- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits assignees sidebar', :js do
+RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:protected_branch) { create(:protected_branch, :maintainers_can_push, name: 'master', project: project) }
let(:merge_request) { create(:merge_request, :simple, source_project: project, target_branch: protected_branch.name) }
diff --git a/spec/features/merge_request/user_edits_merge_request_spec.rb b/spec/features/merge_request/user_edits_merge_request_spec.rb
index 4ac25ea7ae0..6701c7d91ae 100644
--- a/spec/features/merge_request/user_edits_merge_request_spec.rb
+++ b/spec/features/merge_request/user_edits_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edits a merge request', :js do
+RSpec.describe 'User edits a merge request', :js, feature_category: :code_review do
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb
index 2c949ed84f4..18e6827a872 100644
--- a/spec/features/merge_request/user_edits_mr_spec.rb
+++ b/spec/features/merge_request/user_edits_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits MR' do
+RSpec.describe 'Merge request > User edits MR', feature_category: :code_review do
include ProjectForksHelper
before do
diff --git a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
index caf0c609f64..38c76314b9e 100644
--- a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User edits reviewers sidebar', :js do
+RSpec.describe 'Merge request > User edits reviewers sidebar', :js, feature_category: :code_review do
context 'with invite members considerations' do
let_it_be(:merge_request) { create(:merge_request) }
let_it_be(:project) { merge_request.project }
diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb
index 25c9584350d..8adbdcd310c 100644
--- a/spec/features/merge_request/user_expands_diff_spec.rb
+++ b/spec/features/merge_request/user_expands_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User expands diff', :js do
+RSpec.describe 'User expands diff', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_branch: 'expand-collapse-files', source_project: project, target_project: project) }
diff --git a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
index 07d99a786ba..1b9b3941714 100644
--- a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
+++ b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Batch diffs', :js do
+RSpec.describe 'Batch diffs', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_locks_discussion_spec.rb b/spec/features/merge_request/user_locks_discussion_spec.rb
index c8a6fdd4007..1bfd52d49e8 100644
--- a/spec/features/merge_request/user_locks_discussion_spec.rb
+++ b/spec/features/merge_request/user_locks_discussion_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User locks discussion', :js do
+RSpec.describe 'Merge request > User locks discussion', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb
index a8d59a6ffb5..16d869fc5a1 100644
--- a/spec/features/merge_request/user_manages_subscription_spec.rb
+++ b/spec/features/merge_request/user_manages_subscription_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User manages subscription', :js do
+RSpec.describe 'User manages subscription', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
index d85f275b724..201cdc94b56 100644
--- a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
+++ b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User marks merge request as draft', :js do
+RSpec.describe 'Merge request > User marks merge request as draft', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_merges_immediately_spec.rb b/spec/features/merge_request/user_merges_immediately_spec.rb
index 91327059e0f..b0aeea997f0 100644
--- a/spec/features/merge_request/user_merges_immediately_spec.rb
+++ b/spec/features/merge_request/user_merges_immediately_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User merges immediately', :js do
+RSpec.describe 'Merge requests > User merges immediately', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let!(:merge_request) do
diff --git a/spec/features/merge_request/user_merges_merge_request_spec.rb b/spec/features/merge_request/user_merges_merge_request_spec.rb
index c91dc7b1c00..4196fdd5dac 100644
--- a/spec/features/merge_request/user_merges_merge_request_spec.rb
+++ b/spec/features/merge_request/user_merges_merge_request_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User merges a merge request", :js do
+RSpec.describe "User merges a merge request", :js, feature_category: :code_review do
let(:user) { project.first_owner }
before do
diff --git a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb
index d6b132b18da..447418b5a4b 100644
--- a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb
+++ b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js do
+RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js, feature_category: :code_review do
let(:merge_request) { create(:merge_request_with_diffs) }
let(:project) { merge_request.target_project }
diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
index abf916c72b3..78a21527794 100644
--- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
+++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do
+RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) do
diff --git a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
index 4d2c59665bb..116de50f2a2 100644
--- a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
+++ b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User opens checkout branch modal', :js do
+RSpec.describe 'Merge request > User opens checkout branch modal', :js, feature_category: :code_review do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
index 2d574e57fe9..f32a51cfcd4 100644
--- a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
+++ b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > Context commits', :js do
+RSpec.describe 'Merge request > Context commits', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_posts_diff_notes_spec.rb b/spec/features/merge_request/user_posts_diff_notes_spec.rb
index 8af0e957c14..f2ec0e2df6d 100644
--- a/spec/features/merge_request/user_posts_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_diff_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User posts diff notes', :js do
+RSpec.describe 'Merge request > User posts diff notes', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb
index 844ef6133c8..194e04a9544 100644
--- a/spec/features/merge_request/user_posts_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User posts notes', :js do
+RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_review do
include NoteInteractionHelpers
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_rebases_merge_request_spec.rb b/spec/features/merge_request/user_rebases_merge_request_spec.rb
index d42864200ec..c3ee5ddc3b1 100644
--- a/spec/features/merge_request/user_rebases_merge_request_spec.rb
+++ b/spec/features/merge_request/user_rebases_merge_request_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User rebases a merge request", :js do
+RSpec.describe "User rebases a merge request", :js, feature_category: :code_review do
let(:merge_request) { create(:merge_request, :simple, source_project: project) }
let(:user) { project.first_owner }
diff --git a/spec/features/merge_request/user_resolves_conflicts_spec.rb b/spec/features/merge_request/user_resolves_conflicts_spec.rb
index a04ca4e789c..d4c80c1e9e2 100644
--- a/spec/features/merge_request/user_resolves_conflicts_spec.rb
+++ b/spec/features/merge_request/user_resolves_conflicts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves conflicts', :js do
+RSpec.describe 'Merge request > User resolves conflicts', :js, feature_category: :code_review do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
index 99f1b1ab1ad..f0507e94424 100644
--- a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
+++ b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves diff notes and threads', :js do
+RSpec.describe 'Merge request > User resolves diff notes and threads', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:guest) { create(:user) }
diff --git a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
index f8f3467f6fb..a7508ede1a1 100644
--- a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
+++ b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves outdated diff discussions', :js do
+RSpec.describe 'Merge request > User resolves outdated diff discussions', :js, feature_category: :code_review do
let(:project) { create(:project, :repository, :public) }
let(:merge_request) do
diff --git a/spec/features/merge_request/user_resolves_wip_mr_spec.rb b/spec/features/merge_request/user_resolves_wip_mr_spec.rb
index 92927b713f1..b7f20a16a3f 100644
--- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb
+++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User resolves Draft', :js do
+RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) do
diff --git a/spec/features/merge_request/user_reverts_merge_request_spec.rb b/spec/features/merge_request/user_reverts_merge_request_spec.rb
index 9cbba6c470f..edfa9267871 100644
--- a/spec/features/merge_request/user_reverts_merge_request_spec.rb
+++ b/spec/features/merge_request/user_reverts_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User reverts a merge request', :js do
+RSpec.describe 'User reverts a merge request', :js, feature_category: :code_review do
let(:merge_request) { create(:merge_request, :simple, source_project: project) }
let(:project) { create(:project, :public, :repository) }
let(:user) { create(:user) }
diff --git a/spec/features/merge_request/user_reviews_image_spec.rb b/spec/features/merge_request/user_reviews_image_spec.rb
index bd490294829..5814dc6b58c 100644
--- a/spec/features/merge_request/user_reviews_image_spec.rb
+++ b/spec/features/merge_request/user_reviews_image_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > image review', :js do
+RSpec.describe 'Merge request > image review', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
index cf4875a7a25..fdd2aeec274 100644
--- a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
+++ b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User scrolls to note on load', :js do
+RSpec.describe 'Merge request > User scrolls to note on load', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project, author: user) }
diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
index a6c024be698..8c2fc62d16f 100644
--- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
include Spec::Support::Helpers::ModalHelpers # rubocop:disable Style/MixinUsage
-RSpec.describe 'Merge request > User sees avatars on diff notes', :js do
+RSpec.describe 'Merge request > User sees avatars on diff notes', :js, feature_category: :code_review do
include NoteInteractionHelpers
include Spec::Support::Helpers::ModalHelpers
include MergeRequestDiffHelpers
diff --git a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
index d8b258bac47..0b6aefcdab6 100644
--- a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
+++ b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New merge request breadcrumb' do
+RSpec.describe 'New merge request breadcrumb', feature_category: :code_review do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
index 5827266d4b7..bbfa2be47cc 100644
--- a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
+++ b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees check out branch modal', :js do
+RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb
index 35be21a646e..07b7cb1e8d8 100644
--- a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb
+++ b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User cherry-picks', :js do
+RSpec.describe 'Merge request > User cherry-picks', :js, feature_category: :code_review do
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
index f56db3d3dbe..9a1d47a13b5 100644
--- a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
+++ b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees closing issues message', :js do
+RSpec.describe 'Merge request > User sees closing issues message', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:issue_1) { create(:issue, project: project) }
diff --git a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
index dc50c3bc8db..16ae8b4304b 100644
--- a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees deleted target branch', :js do
+RSpec.describe 'Merge request > User sees deleted target branch', :js, feature_category: :code_review do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_deployment_widget_spec.rb b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
index 6f8ecf5f5c2..40ab06937ff 100644
--- a/spec/features/merge_request/user_sees_deployment_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees deployment widget', :js do
+RSpec.describe 'Merge request > User sees deployment widget', :js, feature_category: :continuous_delivery do
include Spec::Support::Helpers::ModalHelpers
describe 'when merge request has associated environments' do
diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb
index 0bae019793c..101ff8fc152 100644
--- a/spec/features/merge_request/user_sees_diff_spec.rb
+++ b/spec/features/merge_request/user_sees_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees diff', :js do
+RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_review do
include ProjectForksHelper
include RepoHelpers
include MergeRequestDiffHelpers
diff --git a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
index 9fbe7662fc0..a22fb2cff00 100644
--- a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
+++ b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees discussions navigation', :js do
+RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_category: :code_review 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) }
diff --git a/spec/features/merge_request/user_sees_discussions_spec.rb b/spec/features/merge_request/user_sees_discussions_spec.rb
index cc477e363a4..0eae6e39eec 100644
--- a/spec/features/merge_request/user_sees_discussions_spec.rb
+++ b/spec/features/merge_request/user_sees_discussions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees threads', :js do
+RSpec.describe 'Merge request > User sees threads', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
index e250837f398..6db5480abb4 100644
--- a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees merge button depending on unresolved threads', :js do
+RSpec.describe 'Merge request > User sees merge button depending on unresolved threads', :js,
+feature_category: :code_review do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
let!(:merge_request) { create(:merge_request_with_diff_notes, source_project: project, author: user) }
diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
index 2a1b9ea6009..f7594c717d1 100644
--- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js do
+RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js, feature_category: :code_review do
include ProjectForksHelper
include TestReportsHelper
diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb
index c4a29c1fb07..e5aa0f6e64d 100644
--- a/spec/features/merge_request/user_sees_merge_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees merge widget', :js do
+RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: :code_review do
include ProjectForksHelper
include TestReportsHelper
include ReactiveCachingHelpers
diff --git a/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb b/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb
index 03f9f6ef565..5756218d20f 100644
--- a/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb
+++ b/spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request < User sees mini pipeline graph', :js do
+RSpec.describe 'Merge request < User sees mini pipeline graph', :js, feature_category: :continuous_integration do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project, head_pipeline: pipeline) }
diff --git a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
index a764dd97878..4bfdce29c6a 100644
--- a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
+++ b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees MR from deleted forked project', :js do
+RSpec.describe 'Merge request > User sees MR from deleted forked project', :js, feature_category: :code_review do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
index 39bba3f2f73..8e6f6d04676 100644
--- a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
# This test serves as a regression test for a bug that caused an error
# message to be shown by JavaScript when the source branch was deleted.
# Please do not remove ":js".
-RSpec.describe 'Merge request > User sees MR with deleted source branch', :js do
+RSpec.describe 'Merge request > User sees MR with deleted source branch', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
index b8b7fc2009f..8f011f5616b 100644
--- a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
+++ b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees notes from forked project', :js do
+RSpec.describe 'Merge request > User sees notes from forked project', :js, feature_category: :code_review do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_sees_page_metadata_spec.rb b/spec/features/merge_request/user_sees_page_metadata_spec.rb
index 7b3e07152a0..f97732f91a7 100644
--- a/spec/features/merge_request/user_sees_page_metadata_spec.rb
+++ b/spec/features/merge_request/user_sees_page_metadata_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees page metadata' do
+RSpec.describe 'Merge request > User sees page metadata', feature_category: :code_review do
let(:merge_request) { create(:merge_request, description: '**Lorem** _ipsum_ dolor sit [amet](https://example.com)') }
let(:project) { merge_request.target_project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb b/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb
index a9fefc89d6c..0816b14f9a5 100644
--- a/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb
+++ b/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees pipelines from forked project', :js do
+RSpec.describe 'Merge request > User sees pipelines from forked project', :js,
+feature_category: :continuous_integration do
include ProjectForksHelper
let(:target_project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb
index 11e542916f9..8faaf6bf39b 100644
--- a/spec/features/merge_request/user_sees_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_pipelines_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees pipelines', :js do
+RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :code_review do
describe 'pipeline tab' do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.target_project }
@@ -35,7 +35,7 @@ RSpec.describe 'Merge request > User sees pipelines', :js do
end
wait_for_requests
- expect(page).to have_selector('.stage-cell')
+ expect(page).to have_css('[data-testid="pipeline-mini-graph"]')
end
context 'with a detached merge request pipeline' do
diff --git a/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb b/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb
index 448ef750508..3a2e382fe99 100644
--- a/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb
+++ b/spec/features/merge_request/user_sees_suggest_pipeline_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees suggest pipeline', :js do
+RSpec.describe 'Merge request > User sees suggest pipeline', :js, feature_category: :continuous_integration do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.source_project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_sees_system_notes_spec.rb b/spec/features/merge_request/user_sees_system_notes_spec.rb
index 9f8d4c6d63f..40402c95d6f 100644
--- a/spec/features/merge_request/user_sees_system_notes_spec.rb
+++ b/spec/features/merge_request/user_sees_system_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees system notes', :js do
+RSpec.describe 'Merge request > User sees system notes', :js, feature_category: :code_review do
let(:public_project) { create(:project, :public, :repository) }
let(:private_project) { create(:project, :private, :repository) }
let(:user) { private_project.creator }
diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb
index 0e86e970f46..f0ff6e1769a 100644
--- a/spec/features/merge_request/user_sees_versions_spec.rb
+++ b/spec/features/merge_request/user_sees_versions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees versions', :js do
+RSpec.describe 'Merge request > User sees versions', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
let(:merge_request) do
diff --git a/spec/features/merge_request/user_sees_wip_help_message_spec.rb b/spec/features/merge_request/user_sees_wip_help_message_spec.rb
index d33e54f2e3d..1a751af6ded 100644
--- a/spec/features/merge_request/user_sees_wip_help_message_spec.rb
+++ b/spec/features/merge_request/user_sees_wip_help_message_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees draft help message' do
+RSpec.describe 'Merge request > User sees draft help message', feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
index bcc6abd4f65..8b6c9dc18f6 100644
--- a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
+++ b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User selects branches for new MR', :js do
+RSpec.describe 'Merge request > User selects branches for new MR', :js, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_squashes_merge_request_spec.rb b/spec/features/merge_request/user_squashes_merge_request_spec.rb
index da0d4ca23d1..43590aed3cc 100644
--- a/spec/features/merge_request/user_squashes_merge_request_spec.rb
+++ b/spec/features/merge_request/user_squashes_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User squashes a merge request', :js do
+RSpec.describe 'User squashes a merge request', :js, feature_category: :code_review do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:source_branch) { 'csv' }
diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
index f77a42ee506..5a5494a2fe9 100644
--- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
+++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User comments on a diff', :js do
+RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do
include MergeRequestDiffHelpers
include RepoHelpers
diff --git a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
index 19774accaaf..993eb59cb74 100644
--- a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
+++ b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User toggles whitespace changes', :js do
+RSpec.describe 'Merge request > User toggles whitespace changes', :js, feature_category: :code_review do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
let(:user) { project.creator }
diff --git a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
index 96a1cd81c93..5095457509a 100644
--- a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
+++ b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge Request > User tries to access private project information through the new mr page' do
+RSpec.describe 'Merge Request > User tries to access private project information through the new mr page',
+feature_category: :code_review do
let(:current_user) { create(:user) }
let(:private_project) do
create(:project, :public, :repository,
diff --git a/spec/features/merge_request/user_uses_quick_actions_spec.rb b/spec/features/merge_request/user_uses_quick_actions_spec.rb
index ca102913369..99befbace74 100644
--- a/spec/features/merge_request/user_uses_quick_actions_spec.rb
+++ b/spec/features/merge_request/user_uses_quick_actions_spec.rb
@@ -7,7 +7,8 @@ require 'spec_helper'
# for example, adding quick actions when creating the issue and checking DateTime formats on UI.
# Because this kind of spec takes more time to run there is no need to add new ones
# for each existing quick action unless they test something not tested by existing tests.
-RSpec.describe 'Merge request > User uses quick actions', :js, :use_clean_rails_redis_caching do
+RSpec.describe 'Merge request > User uses quick actions', :js, :use_clean_rails_redis_caching,
+feature_category: :code_review do
include Spec::Support::Helpers::Features::NotesHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
index 1748f66c934..19a77a9192c 100644
--- a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
+++ b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs file-by-file', :js do
+RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do
let(:merge_request) do
create(:merge_request, source_branch: 'squash-large-files', source_project: project, target_project: project)
end
diff --git a/spec/features/merge_request/user_views_diffs_commit_spec.rb b/spec/features/merge_request/user_views_diffs_commit_spec.rb
index cf92603972e..84cbfb35539 100644
--- a/spec/features/merge_request/user_views_diffs_commit_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diff by commit', :js do
+RSpec.describe 'User views diff by commit', :js, feature_category: :code_review do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
index ad9c342df3e..9db6f86e14d 100644
--- a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs file-by-file', :js do
+RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_diffs_spec.rb b/spec/features/merge_request/user_views_diffs_spec.rb
index 894292c99eb..7363f6dfb32 100644
--- a/spec/features/merge_request/user_views_diffs_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views diffs', :js do
+RSpec.describe 'User views diffs', :js, feature_category: :code_review do
let(:merge_request) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
diff --git a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
index e3272a6e280..2a9275adfcf 100644
--- a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
+++ b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb
@@ -6,7 +6,7 @@ require 'spec_helper'
# updated.
# This can occur when the fork a merge request is created from is in the process
# of being destroyed.
-RSpec.describe 'User views merged merge request from deleted fork' do
+RSpec.describe 'User views merged merge request from deleted fork', feature_category: :code_review do
include ProjectForksHelper
let(:project) { create(:project, :repository) }
diff --git a/spec/features/merge_request/user_views_open_merge_request_spec.rb b/spec/features/merge_request/user_views_open_merge_request_spec.rb
index 1f4682b4a46..8b9e973217d 100644
--- a/spec/features/merge_request/user_views_open_merge_request_spec.rb
+++ b/spec/features/merge_request/user_views_open_merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views an open merge request' do
+RSpec.describe 'User views an open merge request', feature_category: :code_review do
let(:merge_request) do
create(:merge_request, source_project: project, target_project: project, description: '# Description header')
end
diff --git a/spec/features/merge_requests/filters_generic_behavior_spec.rb b/spec/features/merge_requests/filters_generic_behavior_spec.rb
index 80009cca2fb..0d6b5edcbab 100644
--- a/spec/features/merge_requests/filters_generic_behavior_spec.rb
+++ b/spec/features/merge_requests/filters_generic_behavior_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > Filters generic behavior', :js do
+RSpec.describe 'Merge Requests > Filters generic behavior', :js, feature_category: :code_review do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/rss_spec.rb b/spec/features/merge_requests/rss_spec.rb
index 9fc3d3d6ae1..4c73ce3b684 100644
--- a/spec/features/merge_requests/rss_spec.rb
+++ b/spec/features/merge_requests/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Merge Requests RSS' do
+RSpec.describe 'Project Merge Requests RSS', feature_category: :code_review do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, :repository, group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
diff --git a/spec/features/merge_requests/user_exports_as_csv_spec.rb b/spec/features/merge_requests/user_exports_as_csv_spec.rb
index 351e714b612..aedd7ef4d79 100644
--- a/spec/features/merge_requests/user_exports_as_csv_spec.rb
+++ b/spec/features/merge_requests/user_exports_as_csv_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > Exports as CSV', :js do
+RSpec.describe 'Merge Requests > Exports as CSV', :js, feature_category: :code_review do
let!(:project) { create(:project, :public, :repository) }
let!(:user) { project.creator }
let!(:open_mr) { create(:merge_request, title: 'Bugfix1', source_project: project, target_project: project, source_branch: 'bugfix1') }
diff --git a/spec/features/merge_requests/user_filters_by_approvals_spec.rb b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
index 6dda9ca7952..56c8a65385c 100644
--- a/spec/features/merge_requests/user_filters_by_approvals_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters', :js do
+RSpec.describe 'Merge Requests > User filters', :js, feature_category: :code_review do
include FilteredSearchHelpers
let_it_be(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_assignees_spec.rb b/spec/features/merge_requests/user_filters_by_assignees_spec.rb
index 9827b067649..818cf6f076f 100644
--- a/spec/features/merge_requests/user_filters_by_assignees_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_assignees_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by assignees', :js do
+RSpec.describe 'Merge Requests > User filters by assignees', :js, feature_category: :code_review do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_deployments_spec.rb b/spec/features/merge_requests/user_filters_by_deployments_spec.rb
index 157454d4e10..5f7d2fa9f9a 100644
--- a/spec/features/merge_requests/user_filters_by_deployments_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_deployments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by deployments', :js do
+RSpec.describe 'Merge Requests > User filters by deployments', :js, feature_category: :code_review do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_draft_spec.rb b/spec/features/merge_requests/user_filters_by_draft_spec.rb
index de070805d96..d50d7edaefb 100644
--- a/spec/features/merge_requests/user_filters_by_draft_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_draft_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by draft', :js do
+RSpec.describe 'Merge Requests > User filters by draft', :js, feature_category: :code_review do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_labels_spec.rb b/spec/features/merge_requests/user_filters_by_labels_spec.rb
index 980046ccd71..030eb1b6431 100644
--- a/spec/features/merge_requests/user_filters_by_labels_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by labels', :js do
+RSpec.describe 'Merge Requests > User filters by labels', :js, feature_category: :code_review do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_milestones_spec.rb b/spec/features/merge_requests/user_filters_by_milestones_spec.rb
index 877d5e6a4ee..abdb6c7787b 100644
--- a/spec/features/merge_requests/user_filters_by_milestones_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_milestones_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by milestones', :js do
+RSpec.describe 'Merge Requests > User filters by milestones', :js, feature_category: :code_review do
include FilteredSearchHelpers
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
index 3aba023b077..ae171f47ec3 100644
--- a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User filters by multiple criteria', :js do
+RSpec.describe 'Merge requests > User filters by multiple criteria', :js, feature_category: :code_review do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
index 1d9c80238f5..e0755695f5c 100644
--- a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
+++ b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge Requests > User filters by target branch', :js do
+RSpec.describe 'Merge Requests > User filters by target branch', :js, feature_category: :code_review do
include FilteredSearchHelpers
let!(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_lists_merge_requests_spec.rb b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
index 2743f7e8ed4..d9c3bcda0d3 100644
--- a/spec/features/merge_requests/user_lists_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User lists merge requests' do
+RSpec.describe 'Merge requests > User lists merge requests', feature_category: :code_review do
include MergeRequestHelpers
include SortingHelper
diff --git a/spec/features/merge_requests/user_mass_updates_spec.rb b/spec/features/merge_requests/user_mass_updates_spec.rb
index 5c3cb098e28..133017d5b25 100644
--- a/spec/features/merge_requests/user_mass_updates_spec.rb
+++ b/spec/features/merge_requests/user_mass_updates_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge requests > User mass updates', :js do
+RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review do
let(:project) { create(:project, :repository) }
let(:user) { project.creator }
let(:user2) { create(:user) }
diff --git a/spec/features/merge_requests/user_sees_empty_state_spec.rb b/spec/features/merge_requests/user_sees_empty_state_spec.rb
index 056da53c47b..a50ea300249 100644
--- a/spec/features/merge_requests/user_sees_empty_state_spec.rb
+++ b/spec/features/merge_requests/user_sees_empty_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees empty state' do
+RSpec.describe 'Merge request > User sees empty state', feature_category: :code_review do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
index 4a124299c61..d268cfc59f3 100644
--- a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sorts merge requests', :js do
+RSpec.describe 'User sorts merge requests', :js, feature_category: :code_review do
include CookieHelper
include Spec::Support::Helpers::Features::SortingHelpers
diff --git a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
index f8fe2c5ebe2..b55e4bd153f 100644
--- a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views all merge requests' do
+RSpec.describe 'User views all merge requests', feature_category: :code_review do
let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
index abc652c3bbd..4c2598dcc9c 100644
--- a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views closed merge requests' do
+RSpec.describe 'User views closed merge requests', feature_category: :code_review do
let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
index 3b93fb7e4bf..2526f1a855b 100644
--- a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views merged merge requests' do
+RSpec.describe 'User views merged merge requests', feature_category: :code_review do
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let!(:merged_merge_request) { create(:merged_merge_request, source_project: project, target_project: project) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
index 49509f89a8d..3c53bc5e283 100644
--- a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views open merge requests' do
+RSpec.describe 'User views open merge requests', feature_category: :code_review do
let_it_be(:user) { create(:user) }
shared_examples_for 'shows merge requests' do
diff --git a/spec/features/milestone_spec.rb b/spec/features/milestone_spec.rb
index 98d623902a5..50cd6b9e801 100644
--- a/spec/features/milestone_spec.rb
+++ b/spec/features/milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Milestone' do
+RSpec.describe 'Milestone', feature_category: :team_planning do
let(:group) { create(:group, :public) }
let(:project) { create(:project, :public, namespace: group) }
let(:user) { create(:user) }
diff --git a/spec/features/milestones/user_creates_milestone_spec.rb b/spec/features/milestones/user_creates_milestone_spec.rb
index 1ab231632fb..b750f035e36 100644
--- a/spec/features/milestones/user_creates_milestone_spec.rb
+++ b/spec/features/milestones/user_creates_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User creates milestone", :js do
+RSpec.describe "User creates milestone", :js, feature_category: :team_planning do
let_it_be(:developer) { create(:user) }
let_it_be(:inherited_guest) { create(:user) }
let_it_be(:inherited_developer) { create(:user) }
diff --git a/spec/features/milestones/user_deletes_milestone_spec.rb b/spec/features/milestones/user_deletes_milestone_spec.rb
index 40626407642..141e626c6f3 100644
--- a/spec/features/milestones/user_deletes_milestone_spec.rb
+++ b/spec/features/milestones/user_deletes_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User deletes milestone", :js do
+RSpec.describe "User deletes milestone", :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
diff --git a/spec/features/milestones/user_edits_milestone_spec.rb b/spec/features/milestones/user_edits_milestone_spec.rb
index 3edd50922b6..438ca6a2518 100644
--- a/spec/features/milestones/user_edits_milestone_spec.rb
+++ b/spec/features/milestones/user_edits_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User edits milestone", :js do
+RSpec.describe "User edits milestone", :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
let_it_be(:milestone) { create(:milestone, project: project, start_date: Date.today, due_date: 5.days.from_now) }
diff --git a/spec/features/milestones/user_promotes_milestone_spec.rb b/spec/features/milestones/user_promotes_milestone_spec.rb
index a9c3c9706a0..0eacf36cdde 100644
--- a/spec/features/milestones/user_promotes_milestone_spec.rb
+++ b/spec/features/milestones/user_promotes_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User promotes milestone' do
+RSpec.describe 'User promotes milestone', feature_category: :team_planning do
let_it_be(:group) { create(:group) }
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, namespace: group) }
diff --git a/spec/features/milestones/user_sees_breadcrumb_links_spec.rb b/spec/features/milestones/user_sees_breadcrumb_links_spec.rb
index e9cfa9b20dc..febe803426a 100644
--- a/spec/features/milestones/user_sees_breadcrumb_links_spec.rb
+++ b/spec/features/milestones/user_sees_breadcrumb_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New project milestone breadcrumb' do
+RSpec.describe 'New project milestone breadcrumb', feature_category: :team_planning do
let(:project) { create(:project) }
let(:milestone) { create(:milestone, project: project) }
let(:user) { project.creator }
diff --git a/spec/features/milestones/user_views_milestone_spec.rb b/spec/features/milestones/user_views_milestone_spec.rb
index 8674d59afdf..6c8dc47cce1 100644
--- a/spec/features/milestones/user_views_milestone_spec.rb
+++ b/spec/features/milestones/user_views_milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User views milestone" do
+RSpec.describe "User views milestone", feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, :repository, group: group) }
diff --git a/spec/features/milestones/user_views_milestones_spec.rb b/spec/features/milestones/user_views_milestones_spec.rb
index 752cc63486f..81823d6ba30 100644
--- a/spec/features/milestones/user_views_milestones_spec.rb
+++ b/spec/features/milestones/user_views_milestones_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "User views milestones" do
+RSpec.describe "User views milestones", feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
let_it_be(:milestone) { create(:milestone, project: project) }
diff --git a/spec/features/monitor_sidebar_link_spec.rb b/spec/features/monitor_sidebar_link_spec.rb
index 4f529179522..d5f987d15c2 100644
--- a/spec/features/monitor_sidebar_link_spec.rb
+++ b/spec/features/monitor_sidebar_link_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do
+RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures, feature_category: :not_owned do
let_it_be_with_reload(:project) { create(:project, :internal, :repository) }
let_it_be(:user) { create(:user) }
@@ -19,21 +19,13 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do
let(:enabled) { Featurable::PRIVATE }
let(:disabled) { Featurable::DISABLED }
- where(:flag_enabled, :operations_access_level, :monitor_level, :render) do
- true | ref(:disabled) | ref(:enabled) | true
- true | ref(:disabled) | ref(:disabled) | false
- true | ref(:enabled) | ref(:enabled) | true
- true | ref(:enabled) | ref(:disabled) | false
- false | ref(:disabled) | ref(:enabled) | false
- false | ref(:disabled) | ref(:disabled) | false
- false | ref(:enabled) | ref(:enabled) | true
- false | ref(:enabled) | ref(:disabled) | true
+ where(:monitor_level, :render) do
+ ref(:enabled) | true
+ ref(:disabled) | false
end
with_them do
it 'renders when expected to' do
- stub_feature_flags(split_operations_visibility_permissions: flag_enabled)
- project.project_feature.update_attribute(:operations_access_level, operations_access_level)
project.project_feature.update_attribute(:monitor_access_level, monitor_level)
visit project_issues_path(project)
@@ -51,7 +43,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do
let(:access_level) { ProjectFeature::PUBLIC }
before do
- project.project_feature.update_attribute(:operations_access_level, access_level)
project.project_feature.update_attribute(:monitor_access_level, access_level)
end
@@ -67,41 +58,19 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do
expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project))
end
- context 'with new monitor visiblity flag disabled' do
- stub_feature_flags(split_operations_visibility_permissions: false)
+ context 'when monitor project feature is PRIVATE' do
+ let(:access_level) { ProjectFeature::PRIVATE }
- context 'when operations project feature is PRIVATE' do
- let(:access_level) { ProjectFeature::PRIVATE }
-
- it 'does not show the `Monitor` menu' do
- expect(page).not_to have_selector('a.shortcuts-monitor')
- end
- end
-
- context 'when operations project feature is DISABLED' do
- let(:access_level) { ProjectFeature::DISABLED }
-
- it 'does not show the `Operations` menu' do
- expect(page).not_to have_selector('a.shortcuts-monitor')
- end
+ it 'does not show the `Monitor` menu' do
+ expect(page).not_to have_selector('a.shortcuts-monitor')
end
end
- context 'with new monitor visiblity flag enabled' do
- context 'when monitor project feature is PRIVATE' do
- let(:access_level) { ProjectFeature::PRIVATE }
+ context 'when monitor project feature is DISABLED' do
+ let(:access_level) { ProjectFeature::DISABLED }
- it 'does not show the `Monitor` menu' do
- expect(page).not_to have_selector('a.shortcuts-monitor')
- end
- end
-
- context 'when operations project feature is DISABLED' do
- let(:access_level) { ProjectFeature::DISABLED }
-
- it 'does not show the `Operations` menu' do
- expect(page).not_to have_selector('a.shortcuts-monitor')
- end
+ it 'does not show the `Monitor` menu' do
+ expect(page).not_to have_selector('a.shortcuts-monitor')
end
end
end
diff --git a/spec/features/nav/new_nav_toggle_spec.rb b/spec/features/nav/new_nav_toggle_spec.rb
new file mode 100644
index 00000000000..f040d801cfb
--- /dev/null
+++ b/spec/features/nav/new_nav_toggle_spec.rb
@@ -0,0 +1,71 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'new navigation toggle', :js, feature_category: :navigation do
+ let_it_be(:user) { create(:user) }
+
+ 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 }
+
+ where(:user_preference) do
+ [true, false]
+ end
+
+ 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
+ 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 }
+
+ 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
+ end
+
+ context 'when user has new nav enabled' do
+ let(:user_preference) { true }
+
+ it 'allows to disable new nav', :aggregate_failures do
+ within '.js-nav-user-dropdown' do
+ find('a[data-toggle="dropdown"]').click
+ expect(page).to have_content('Navigation redesign')
+
+ toggle = page.find('.gl-toggle.is-checked')
+ toggle.click # reloads the page
+ end
+
+ wait_for_requests
+
+ expect(user.reload.use_new_navigation).to eq false
+ end
+ end
+ end
+end
diff --git a/spec/features/nav/top_nav_responsive_spec.rb b/spec/features/nav/top_nav_responsive_spec.rb
index 4f8e47b5068..d038c5d9e32 100644
--- a/spec/features/nav/top_nav_responsive_spec.rb
+++ b/spec/features/nav/top_nav_responsive_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'top nav responsive', :js do
+RSpec.describe 'top nav responsive', :js, feature_category: :navigation do
include MobileHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/nav/top_nav_tooltip_spec.rb b/spec/features/nav/top_nav_tooltip_spec.rb
index a110c6cfecf..17828778112 100644
--- a/spec/features/nav/top_nav_tooltip_spec.rb
+++ b/spec/features/nav/top_nav_tooltip_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'top nav tooltips', :js do
+RSpec.describe 'top nav tooltips', :js, feature_category: :navigation do
let_it_be(:user) { create(:user) }
before do
diff --git a/spec/features/oauth_login_spec.rb b/spec/features/oauth_login_spec.rb
index fca8972b56c..07d0fca0139 100644
--- a/spec/features/oauth_login_spec.rb
+++ b/spec/features/oauth_login_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'OAuth Login', :allow_forgery_protection do
+RSpec.describe 'OAuth Login', :allow_forgery_protection, feature_category: :system_access do
include DeviseHelpers
def enter_code(code)
diff --git a/spec/features/oauth_provider_authorize_spec.rb b/spec/features/oauth_provider_authorize_spec.rb
index f5a1a35b66f..7638563b4a3 100644
--- a/spec/features/oauth_provider_authorize_spec.rb
+++ b/spec/features/oauth_provider_authorize_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'OAuth Provider' do
+RSpec.describe 'OAuth Provider', feature_category: :system_access do
describe 'Standard OAuth Authorization' do
let(:application) { create(:oauth_application, scopes: 'read_user') }
diff --git a/spec/features/oauth_registration_spec.rb b/spec/features/oauth_registration_spec.rb
index 0a35b5a7e42..48996164bd3 100644
--- a/spec/features/oauth_registration_spec.rb
+++ b/spec/features/oauth_registration_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection do
+RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection, feature_category: :system_access do
include LoginHelpers
include TermsHelper
using RSpec::Parameterized::TableSyntax
diff --git a/spec/features/one_trust_spec.rb b/spec/features/one_trust_spec.rb
index a7dfbfd6bdf..2aeb722886e 100644
--- a/spec/features/one_trust_spec.rb
+++ b/spec/features/one_trust_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'OneTrust' do
+RSpec.describe 'OneTrust', feature_category: :system_access do
context 'almost there page' do
context 'when OneTrust is enabled' do
let_it_be(:onetrust_url) { 'https://*.onetrust.com' }
diff --git a/spec/features/participants_autocomplete_spec.rb b/spec/features/participants_autocomplete_spec.rb
index b2739454b52..272365ac7ee 100644
--- a/spec/features/participants_autocomplete_spec.rb
+++ b/spec/features/participants_autocomplete_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Member autocomplete', :js do
+RSpec.describe 'Member autocomplete', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:user) { create(:user) }
let_it_be(:author) { create(:user) }
diff --git a/spec/features/password_reset_spec.rb b/spec/features/password_reset_spec.rb
index f89e19f5361..7d36e905327 100644
--- a/spec/features/password_reset_spec.rb
+++ b/spec/features/password_reset_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Password reset' do
+RSpec.describe 'Password reset', feature_category: :system_access do
describe 'throttling' do
it 'sends reset instructions when not previously sent' do
user = create(:user)
diff --git a/spec/features/populate_new_pipeline_vars_with_params_spec.rb b/spec/features/populate_new_pipeline_vars_with_params_spec.rb
index 75fa8561235..a83b5a81a41 100644
--- a/spec/features/populate_new_pipeline_vars_with_params_spec.rb
+++ b/spec/features/populate_new_pipeline_vars_with_params_spec.rb
@@ -2,47 +2,29 @@
require 'spec_helper'
-RSpec.describe "Populate new pipeline CI variables with url params", :js do
+RSpec.describe "Populate new pipeline CI variables with url params", :js, feature_category: :pipeline_authoring do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:page_path) { new_project_pipeline_path(project) }
- shared_examples 'form pre-filled with URL params' do
- before do
- sign_in(user)
- project.add_maintainer(user)
+ before do
+ sign_in(user)
+ project.add_maintainer(user)
- visit "#{page_path}?var[key1]=value1&file_var[key2]=value2"
- end
-
- it "var[key1]=value1 populates env_var variable correctly" do
- page.within(all("[data-testid='ci-variable-row']")[0]) do
- expect(find("[data-testid='pipeline-form-ci-variable-key']").value).to eq('key1')
- expect(find("[data-testid='pipeline-form-ci-variable-value']").value).to eq('value1')
- end
- end
-
- it "file_var[key2]=value2 populates file variable correctly" do
- page.within(all("[data-testid='ci-variable-row']")[1]) do
- expect(find("[data-testid='pipeline-form-ci-variable-key']").value).to eq('key2')
- expect(find("[data-testid='pipeline-form-ci-variable-value']").value).to eq('value2')
- end
- end
+ visit "#{page_path}?var[key1]=value1&file_var[key2]=value2"
end
- context 'when feature flag is disabled' do
- before do
- stub_feature_flags(run_pipeline_graphql: false)
+ it "var[key1]=value1 populates env_var variable correctly" do
+ page.within(all("[data-testid='ci-variable-row']")[0]) do
+ expect(find("[data-testid='pipeline-form-ci-variable-key']").value).to eq('key1')
+ expect(find("[data-testid='pipeline-form-ci-variable-value']").value).to eq('value1')
end
-
- it_behaves_like 'form pre-filled with URL params'
end
- context 'when feature flag is enabled' do
- before do
- stub_feature_flags(run_pipeline_graphql: true)
+ it "file_var[key2]=value2 populates file variable correctly" do
+ page.within(all("[data-testid='ci-variable-row']")[1]) do
+ expect(find("[data-testid='pipeline-form-ci-variable-key']").value).to eq('key2')
+ expect(find("[data-testid='pipeline-form-ci-variable-value']").value).to eq('value2')
end
-
- it_behaves_like 'form pre-filled with URL params'
end
end
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
index ca156642bc8..87a65438768 100644
--- a/spec/features/profile_spec.rb
+++ b/spec/features/profile_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile account page', :js do
+RSpec.describe 'Profile account page', :js, feature_category: :users do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
diff --git a/spec/features/profiles/account_spec.rb b/spec/features/profiles/account_spec.rb
index 4fe0c3d035e..82c45862e07 100644
--- a/spec/features/profiles/account_spec.rb
+++ b/spec/features/profiles/account_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Account', :js do
+RSpec.describe 'Profile > Account', :js, feature_category: :users do
let(:user) { create(:user, username: 'foo') }
before do
diff --git a/spec/features/profiles/active_sessions_spec.rb b/spec/features/profiles/active_sessions_spec.rb
index d0819bb5363..5c20735cf35 100644
--- a/spec/features/profiles/active_sessions_spec.rb
+++ b/spec/features/profiles/active_sessions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
+RSpec.describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state, feature_category: :users do
include Spec::Support::Helpers::ModalHelpers
let(:user) do
diff --git a/spec/features/profiles/chat_names_spec.rb b/spec/features/profiles/chat_names_spec.rb
index 82134de582a..b3d65ab3a3c 100644
--- a/spec/features/profiles/chat_names_spec.rb
+++ b/spec/features/profiles/chat_names_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Chat' do
+RSpec.describe 'Profile > Chat', feature_category: :users do
let(:user) { create(:user) }
let(:integration) { create(:integration) }
diff --git a/spec/features/profiles/emails_spec.rb b/spec/features/profiles/emails_spec.rb
index 24917412826..e8ea227c072 100644
--- a/spec/features/profiles/emails_spec.rb
+++ b/spec/features/profiles/emails_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Emails' do
+RSpec.describe 'Profile > Emails', feature_category: :users do
let(:user) { create(:user) }
let(:other_user) { create(:user) }
diff --git a/spec/features/profiles/gpg_keys_spec.rb b/spec/features/profiles/gpg_keys_spec.rb
index 4eedeeac262..1d014f983e7 100644
--- a/spec/features/profiles/gpg_keys_spec.rb
+++ b/spec/features/profiles/gpg_keys_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > GPG Keys' do
+RSpec.describe 'Profile > GPG Keys', feature_category: :users do
let(:user) { create(:user, email: GpgHelpers::User2.emails.first) }
before do
diff --git a/spec/features/profiles/keys_spec.rb b/spec/features/profiles/keys_spec.rb
index 65944f5a537..7a2a12d8dca 100644
--- a/spec/features/profiles/keys_spec.rb
+++ b/spec/features/profiles/keys_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > SSH Keys' do
+RSpec.describe 'Profile > SSH Keys', feature_category: :users do
let(:user) { create(:user) }
before do
@@ -80,7 +80,7 @@ RSpec.describe 'Profile > SSH Keys' do
shared_examples 'removes key' do
it 'removes key' do
visit path
- click_button('Delete')
+ find('[data-testid=remove-icon]').click
page.within('.modal') do
page.click_button('Delete')
diff --git a/spec/features/profiles/oauth_applications_spec.rb b/spec/features/profiles/oauth_applications_spec.rb
index 7d8cd2dc6ca..80d05fd5cc7 100644
--- a/spec/features/profiles/oauth_applications_spec.rb
+++ b/spec/features/profiles/oauth_applications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Applications' do
+RSpec.describe 'Profile > Applications', feature_category: :users do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
diff --git a/spec/features/profiles/password_spec.rb b/spec/features/profiles/password_spec.rb
index 8887ff1746d..b324ee17873 100644
--- a/spec/features/profiles/password_spec.rb
+++ b/spec/features/profiles/password_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Password' do
+RSpec.describe 'Profile > Password', feature_category: :users do
let(:user) { create(:user) }
def fill_passwords(password, confirmation)
diff --git a/spec/features/profiles/personal_access_tokens_spec.rb b/spec/features/profiles/personal_access_tokens_spec.rb
index 3ae88da06f6..3087d7ff296 100644
--- a/spec/features/profiles/personal_access_tokens_spec.rb
+++ b/spec/features/profiles/personal_access_tokens_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Profile > Personal Access Tokens', :js do
+RSpec.describe 'Profile > Personal Access Tokens', :js, feature_category: :users do
include Spec::Support::Helpers::ModalHelpers
include Spec::Support::Helpers::AccessTokenHelpers
diff --git a/spec/features/profiles/two_factor_auths_spec.rb b/spec/features/profiles/two_factor_auths_spec.rb
index decc2904b6e..8dddaad11c3 100644
--- a/spec/features/profiles/two_factor_auths_spec.rb
+++ b/spec/features/profiles/two_factor_auths_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Two factor auths' do
+RSpec.describe 'Two factor auths', feature_category: :users do
include Spec::Support::Helpers::ModalHelpers
context 'when signed in' do
diff --git a/spec/features/profiles/user_changes_notified_of_own_activity_spec.rb b/spec/features/profiles/user_changes_notified_of_own_activity_spec.rb
index 1b6215c1308..197a33c355d 100644
--- a/spec/features/profiles/user_changes_notified_of_own_activity_spec.rb
+++ b/spec/features/profiles/user_changes_notified_of_own_activity_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Profile > Notifications > User changes notified_of_own_activity setting', :js do
+RSpec.describe 'Profile > Notifications > User changes notified_of_own_activity setting', :js,
+feature_category: :users do
let(:user) { create(:user) }
before do
diff --git a/spec/features/profiles/user_edit_preferences_spec.rb b/spec/features/profiles/user_edit_preferences_spec.rb
index c724de04043..1a231f1d269 100644
--- a/spec/features/profiles/user_edit_preferences_spec.rb
+++ b/spec/features/profiles/user_edit_preferences_spec.rb
@@ -2,16 +2,18 @@
require 'spec_helper'
-RSpec.describe 'User edit preferences profile', :js do
+RSpec.describe 'User edit preferences profile', :js, feature_category: :users do
include StubLanguagesTranslationPercentage
# Empty value doesn't change the levels
let(:language_percentage_levels) { nil }
let(:user) { create(:user) }
+ let(:vscode_web_ide) { true }
before do
stub_languages_translation_percentage(language_percentage_levels)
stub_feature_flags(user_time_settings: true)
+ stub_feature_flags(vscode_web_ide: vscode_web_ide)
sign_in(user)
visit(profile_preferences_path)
end
@@ -36,6 +38,24 @@ RSpec.describe 'User edit preferences profile', :js do
expect(field).not_to be_checked
end
+ it 'allows the user to toggle using the legacy web ide' do
+ field = page.find_field("user[use_legacy_web_ide]")
+
+ expect(field).not_to be_checked
+
+ field.click
+
+ expect(field).to be_checked
+ end
+
+ describe 'when vscode_web_ide feature flag is disabled' do
+ let(:vscode_web_ide) { false }
+
+ it 'does not display the legacy web ide user preference' do
+ expect(page).not_to have_field("user[use_legacy_web_ide]")
+ end
+ end
+
describe 'User changes tab width to acceptable value' do
it 'shows success message' do
fill_in 'Tab width', with: 9
diff --git a/spec/features/profiles/user_edit_profile_spec.rb b/spec/features/profiles/user_edit_profile_spec.rb
index 1d99f7a8511..67604292090 100644
--- a/spec/features/profiles/user_edit_profile_spec.rb
+++ b/spec/features/profiles/user_edit_profile_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edit profile' do
+RSpec.describe 'User edit profile', feature_category: :users do
include Spec::Support::Helpers::Features::NotesHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/profiles/user_manages_applications_spec.rb b/spec/features/profiles/user_manages_applications_spec.rb
index ea7a6b4b6ba..179da61b8ed 100644
--- a/spec/features/profiles/user_manages_applications_spec.rb
+++ b/spec/features/profiles/user_manages_applications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User manages applications' do
+RSpec.describe 'User manages applications', feature_category: :users do
let_it_be(:user) { create(:user) }
let_it_be(:new_application_path) { applications_profile_path }
let_it_be(:index_path) { oauth_applications_path }
diff --git a/spec/features/profiles/user_manages_emails_spec.rb b/spec/features/profiles/user_manages_emails_spec.rb
index b037d5048aa..16a9fbc2f47 100644
--- a/spec/features/profiles/user_manages_emails_spec.rb
+++ b/spec/features/profiles/user_manages_emails_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User manages emails' do
+RSpec.describe 'User manages emails', feature_category: :users do
let(:user) { create(:user) }
let(:other_user) { create(:user) }
diff --git a/spec/features/profiles/user_search_settings_spec.rb b/spec/features/profiles/user_search_settings_spec.rb
index 0b05e6c9489..09ee8ddeaab 100644
--- a/spec/features/profiles/user_search_settings_spec.rb
+++ b/spec/features/profiles/user_search_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches their settings', :js do
+RSpec.describe 'User searches their settings', :js, feature_category: :users do
let_it_be(:user) { create(:user) }
before do
diff --git a/spec/features/profiles/user_visits_notifications_tab_spec.rb b/spec/features/profiles/user_visits_notifications_tab_spec.rb
index e960cc76219..d212982f4e3 100644
--- a/spec/features/profiles/user_visits_notifications_tab_spec.rb
+++ b/spec/features/profiles/user_visits_notifications_tab_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits the notifications tab', :js do
+RSpec.describe 'User visits the notifications tab', :js, feature_category: :users do
let(:project) { create(:project) }
let(:user) { create(:user) }
diff --git a/spec/features/profiles/user_visits_profile_account_page_spec.rb b/spec/features/profiles/user_visits_profile_account_page_spec.rb
index b4d1185412b..1cf34478ecf 100644
--- a/spec/features/profiles/user_visits_profile_account_page_spec.rb
+++ b/spec/features/profiles/user_visits_profile_account_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits the profile account page' do
+RSpec.describe 'User visits the profile account page', feature_category: :users do
let(:user) { create(:user) }
before do
diff --git a/spec/features/profiles/user_visits_profile_authentication_log_spec.rb b/spec/features/profiles/user_visits_profile_authentication_log_spec.rb
index 22292eff9a3..726cca4a4bd 100644
--- a/spec/features/profiles/user_visits_profile_authentication_log_spec.rb
+++ b/spec/features/profiles/user_visits_profile_authentication_log_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits the authentication log' do
+RSpec.describe 'User visits the authentication log', feature_category: :users do
let(:user) { create(:user) }
context 'when user signed in' do
diff --git a/spec/features/profiles/user_visits_profile_preferences_page_spec.rb b/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
index 4c61e8d45e4..9eee1b85e5e 100644
--- a/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
+++ b/spec/features/profiles/user_visits_profile_preferences_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits the profile preferences page', :js do
+RSpec.describe 'User visits the profile preferences page', :js, feature_category: :users do
include Select2Helper
let(:user) { create(:user) }
diff --git a/spec/features/profiles/user_visits_profile_spec.rb b/spec/features/profiles/user_visits_profile_spec.rb
index df096c2f151..7fca0f24deb 100644
--- a/spec/features/profiles/user_visits_profile_spec.rb
+++ b/spec/features/profiles/user_visits_profile_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits their profile' do
+RSpec.describe 'User visits their profile', feature_category: :users do
let_it_be_with_refind(:user) { create(:user) }
before do
diff --git a/spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb b/spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb
index 0531434f00c..8467e9abeaf 100644
--- a/spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb
+++ b/spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User visits the profile SSH keys page' do
+RSpec.describe 'User visits the profile SSH keys page', feature_category: :users do
let(:user) { create(:user) }
before do
diff --git a/spec/features/project_group_variables_spec.rb b/spec/features/project_group_variables_spec.rb
index fc482261fb1..0e1e6e49c6d 100644
--- a/spec/features/project_group_variables_spec.rb
+++ b/spec/features/project_group_variables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project group variables', :js do
+RSpec.describe 'Project group variables', :js, feature_category: :pipeline_authoring do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:subgroup) { create(:group, parent: group) }
diff --git a/spec/features/project_variables_spec.rb b/spec/features/project_variables_spec.rb
index 33b4af3b5aa..d1258937ce6 100644
--- a/spec/features/project_variables_spec.rb
+++ b/spec/features/project_variables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project variables', :js do
+RSpec.describe 'Project variables', :js, feature_category: :pipeline_authoring do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:variable) { create(:ci_variable, key: 'test_key', value: 'test_value', masked: true) }
diff --git a/spec/features/projects/active_tabs_spec.rb b/spec/features/projects/active_tabs_spec.rb
index ff97d3c9503..c27c9530f61 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' do
+RSpec.describe 'Project active tab', feature_category: :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 a3e511b5c22..5297f30220d 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' do
+RSpec.describe 'Project Activity RSS', feature_category: :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 a9cdbd5c342..cfa62415c49 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' do
+RSpec.describe 'Projects > Activity > User sees activity', feature_category: :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_design_activity_spec.rb b/spec/features/projects/activity/user_sees_design_activity_spec.rb
index 70153921b82..6a51e548700 100644
--- a/spec/features/projects/activity/user_sees_design_activity_spec.rb
+++ b/spec/features/projects/activity/user_sees_design_activity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Activity > User sees design Activity', :js do
+RSpec.describe 'Projects > Activity > User sees design Activity', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:uploader) { create(:user) }
diff --git a/spec/features/projects/activity/user_sees_design_comment_spec.rb b/spec/features/projects/activity/user_sees_design_comment_spec.rb
index 3a8e2790858..2d333e55b13 100644
--- a/spec/features/projects/activity/user_sees_design_comment_spec.rb
+++ b/spec/features/projects/activity/user_sees_design_comment_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Activity > User sees design comment', :js do
+RSpec.describe 'Projects > Activity > User sees design comment', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:project) { create(:project, :repository, :public) }
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 86692bc6b4c..e0aaf1dbbc3 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 do
+RSpec.describe 'Project > Activity > User sees private activity', :js, feature_category: :projects do
let(:project) { create(:project, :public) }
let(:author) { create(:user) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/artifacts/file_spec.rb b/spec/features/projects/artifacts/file_spec.rb
index f97c1b0e543..fe38cbc70f1 100644
--- a/spec/features/projects/artifacts/file_spec.rb
+++ b/spec/features/projects/artifacts/file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Artifact file', :js do
+RSpec.describe 'Artifact file', :js, feature_category: :build_artifacts do
let(:project) { create(:project, :public) }
let(:pipeline) { create(:ci_empty_pipeline, project: project) }
let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) }
diff --git a/spec/features/projects/artifacts/raw_spec.rb b/spec/features/projects/artifacts/raw_spec.rb
index c10cb56a44b..544875d36e3 100644
--- a/spec/features/projects/artifacts/raw_spec.rb
+++ b/spec/features/projects/artifacts/raw_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Raw artifact' do
+RSpec.describe 'Raw artifact', feature_category: :build_artifacts do
let(:project) { create(:project, :public) }
let(:pipeline) { create(:ci_empty_pipeline, project: project) }
let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) }
diff --git a/spec/features/projects/artifacts/user_browses_artifacts_spec.rb b/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
index c0d710fe186..6948a26196b 100644
--- a/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
+++ b/spec/features/projects/artifacts/user_browses_artifacts_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User browses artifacts" do
+RSpec.describe "User browses artifacts", feature_category: :build_artifacts do
let(:project) { create(:project, :public) }
let(:pipeline) { create(:ci_empty_pipeline, project: project) }
let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) }
diff --git a/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb b/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb
index 7d6ae03e08e..48dcb95e09b 100644
--- a/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb
+++ b/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User downloads artifacts" do
+RSpec.describe "User downloads artifacts", feature_category: :build_artifacts do
let_it_be(:project) { create(:project, :repository, :public) }
let_it_be(:pipeline) { create(:ci_empty_pipeline, status: :success, sha: project.commit.id, project: project) }
let_it_be(:job) { create(:ci_build, :artifacts, :success, pipeline: pipeline) }
diff --git a/spec/features/projects/badges/coverage_spec.rb b/spec/features/projects/badges/coverage_spec.rb
index 7555e567c37..3c8b17607ca 100644
--- a/spec/features/projects/badges/coverage_spec.rb
+++ b/spec/features/projects/badges/coverage_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'test coverage badge' do
+RSpec.describe 'test coverage badge', feature_category: :code_testing do
let!(:user) { create(:user) }
let!(:project) { create(:project, :private) }
diff --git a/spec/features/projects/badges/list_spec.rb b/spec/features/projects/badges/list_spec.rb
index d1e635f11c0..e6bd4b22b0a 100644
--- a/spec/features/projects/badges/list_spec.rb
+++ b/spec/features/projects/badges/list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'list of badges' do
+RSpec.describe 'list of badges', feature_category: :continuous_integration do
before do
user = create(:user)
project = create(:project, :repository)
diff --git a/spec/features/projects/badges/pipeline_badge_spec.rb b/spec/features/projects/badges/pipeline_badge_spec.rb
index e3a01ab6fa2..c0f5d0ffead 100644
--- a/spec/features/projects/badges/pipeline_badge_spec.rb
+++ b/spec/features/projects/badges/pipeline_badge_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Pipeline Badge' do
+RSpec.describe 'Pipeline Badge', feature_category: :continuous_integration do
let_it_be(:project) { create(:project, :repository, :public) }
let(:ref) { project.default_branch }
diff --git a/spec/features/projects/blobs/blame_spec.rb b/spec/features/projects/blobs/blame_spec.rb
index 5287d5e4f7d..27b7c6ef2d5 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 do
+RSpec.describe 'File blame', :js, feature_category: :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 9b0edcd09d2..48ee39dad19 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 do
+RSpec.describe 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js, feature_category: :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 e01382cf31f..b7e0e3fd590 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 do
+RSpec.describe 'File blob', :js, feature_category: :projects do
include MobileHelpers
let(:project) { create(:project, :public, :repository) }
@@ -589,76 +589,35 @@ RSpec.describe 'File blob', :js do
file_path: '.gitlab/dashboards/custom-dashboard.yml',
file_content: file_content
).execute
- end
-
- context 'with metrics_dashboard_exhaustive_validations feature flag off' do
- before do
- stub_feature_flags(metrics_dashboard_exhaustive_validations: false)
- 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
- 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
+ visit_blob('.gitlab/dashboards/custom-dashboard.yml')
end
- context 'with metrics_dashboard_exhaustive_validations feature flag on' do
- before do
- stub_feature_flags(metrics_dashboard_exhaustive_validations: true)
- 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')) }
+ 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.')
+ 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
+ # shows a learn more link
+ expect(page).to have_link('Learn more')
end
end
+ end
- context 'invalid dashboard file' do
- let(:file_content) { "dashboard: 'invalid'" }
+ 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("root is missing required keys: panel_groups")
+ 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
+ # shows a learn more link
+ expect(page).to have_link('Learn more')
end
end
end
@@ -1002,7 +961,7 @@ RSpec.describe 'File blob', :js do
end
it 'renders sandboxed iframe' do
- expected = %(<iframe src="/-/sandbox/swagger" sandbox="allow-scripts allow-popups" frameborder="0" width="100%" height="1000">)
+ expected = %(<iframe src="/-/sandbox/swagger" sandbox="allow-scripts allow-popups allow-forms" frameborder="0" width="100%" height="1000">)
expect(page.html).to include(expected)
end
end
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index 5587b8abab3..144b4ed85cd 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 do
+RSpec.describe 'Editing file blob', :js, feature_category: :projects do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
include TreeHelper
include BlobSpecHelpers
@@ -97,11 +97,16 @@ RSpec.describe 'Editing file blob', :js do
"Add a table"
]
- before do
+ 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" do
+ it "has defined set of toolbar buttons when the flag is off" do
+ stub_feature_flags(source_editor_toolbar: false)
+ 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)
toolbar_buttons.each_with_index do |button_title, i|
diff --git a/spec/features/projects/blobs/shortcuts_blob_spec.rb b/spec/features/projects/blobs/shortcuts_blob_spec.rb
index 64d643aa102..03276a737da 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 do
+RSpec.describe 'Blob shortcuts', :js, feature_category: :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 a2db5e11c7c..a497be4cbc3 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 do
+RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled', :js, feature_category: :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 15e7a495e60..2f67e909543 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 do
+RSpec.describe 'User views pipeline editor button on root ci config file', :js, feature_category: :projects do
include BlobSpecHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/branches/download_buttons_spec.rb b/spec/features/projects/branches/download_buttons_spec.rb
index 569a93a55fc..80ccd9c1417 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' do
+RSpec.describe 'Download buttons in branches page', feature_category: :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 5f58e446ed9..eb370cfc1fc 100644
--- a/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
+++ b/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
@@ -2,10 +2,11 @@
require 'spec_helper'
-RSpec.describe 'New Branch Ref Dropdown', :js do
+RSpec.describe 'New Branch Ref Dropdown', :js, feature_category: :projects do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
- let(:toggle) { find('.create-from .dropdown-menu-toggle') }
+ let(:sha) { project.commit.sha }
+ let(:toggle) { find('.ref-selector') }
before do
project.add_maintainer(user)
@@ -14,37 +15,75 @@ RSpec.describe 'New Branch Ref Dropdown', :js do
visit new_project_branch_path(project)
end
- it 'filters a list of branches and tags' do
+ it 'finds a tag in a list' do
+ tag_name = 'v1.0.0'
+
toggle.click
- filter_by('v1.0.0')
+ filter_by(tag_name)
+
+ wait_for_requests
+
+ expect(items_count(tag_name)).to be(1)
- expect(items_count).to be(1)
+ item(tag_name).click
- filter_by('video')
+ expect(toggle).to have_content tag_name
+ end
+
+ it 'finds a branch in a list' do
+ branch_name = 'audio'
- expect(items_count).to be(1)
+ toggle.click
- find('.create-from .dropdown-content li').click
+ filter_by(branch_name)
- expect(toggle).to have_content 'video'
+ wait_for_requests
+
+ expect(items_count(branch_name)).to be(1)
+
+ item(branch_name).click
+
+ expect(toggle).to have_content branch_name
end
- it 'accepts a manually entered commit SHA' do
+ it 'finds a commit in a list' do
toggle.click
- filter_by('somecommitsha')
+ filter_by(sha)
+
+ wait_for_requests
+
+ sha_short = sha[0, 7]
- find('.create-from input[type=search]').send_keys(:enter)
+ expect(items_count(sha_short)).to be(1)
+
+ item(sha_short).click
+
+ expect(toggle).to have_content sha_short
+ end
+
+ it 'shows no results when there is no branch, tag or commit sha found' do
+ non_existing_ref = 'non_existing_branch_name'
+
+ toggle.click
+
+ filter_by(non_existing_ref)
+
+ wait_for_requests
+
+ expect(find('.gl-dropdown-contents')).not_to have_content(non_existing_ref)
+ end
- expect(toggle).to have_content 'somecommitsha'
+ def item(ref_name)
+ find('li', text: ref_name, match: :prefer_exact)
end
- def items_count
- all('.create-from .dropdown-content li').length
+ def items_count(ref_name)
+ all('li', text: ref_name, match: :prefer_exact).length
end
def filter_by(filter_text)
- fill_in 'Filter by Git revision', with: filter_text
+ fill_in _('Search by Git revision'), with: filter_text
end
end
diff --git a/spec/features/projects/branches/user_creates_branch_spec.rb b/spec/features/projects/branches/user_creates_branch_spec.rb
index be236b7ca7e..60bd77393e9 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 do
+RSpec.describe 'User creates branch', :js, feature_category: :projects do
include Spec::Support::Helpers::Features::BranchesHelpers
let_it_be(:group) { create(:group, :public) }
@@ -81,11 +81,7 @@ RSpec.describe 'User creates branch', :js do
it 'does not create new branch' do
invalid_branch_name = '1.0 stable'
- fill_in('branch_name', with: invalid_branch_name)
- page.find('body').click # defocus the branch_name input
-
- select_branch('master')
- click_button('Create branch')
+ create_branch(invalid_branch_name)
expect(page).to have_content('Branch name is invalid')
expect(page).to have_content("can't contain spaces")
diff --git a/spec/features/projects/branches/user_deletes_branch_spec.rb b/spec/features/projects/branches/user_deletes_branch_spec.rb
index a89fed3a78a..92b5f176d2d 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 do
+RSpec.describe "User deletes branch", :js, feature_category: :projects do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/branches/user_views_branches_spec.rb b/spec/features/projects/branches/user_views_branches_spec.rb
index 3f0614532f1..f0a1ba84ec6 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 do
+RSpec.describe "User views branches", :js, feature_category: :projects do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { project.first_owner }
diff --git a/spec/features/projects/branches_spec.rb b/spec/features/projects/branches_spec.rb
index ecf6349e431..fc7833809b3 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' do
+RSpec.describe 'Branches', feature_category: :projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public, :repository) }
let(:repository) { project.repository }
@@ -143,7 +143,7 @@ RSpec.describe 'Branches' do
click_button "Updated date" # Open sorting dropdown
within '[data-testid="branches-dropdown"]' do
- find('p', text: 'Name').click
+ first('span', text: 'Name').click
end
expect(page).to have_content(sorted_branches(repository, count: 20, sort_by: :name))
@@ -154,7 +154,7 @@ RSpec.describe 'Branches' do
click_button "Updated date" # Open sorting dropdown
within '[data-testid="branches-dropdown"]' do
- find('p', text: 'Oldest updated').click
+ first('span', text: 'Oldest updated').click
end
expect(page).to have_content(sorted_branches(repository, count: 20, sort_by: :updated_asc))
diff --git a/spec/features/projects/ci/editor_spec.rb b/spec/features/projects/ci/editor_spec.rb
index c96d5f5823f..536152626af 100644
--- a/spec/features/projects/ci/editor_spec.rb
+++ b/spec/features/projects/ci/editor_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Pipeline Editor', :js do
+RSpec.describe 'Pipeline Editor', :js, feature_category: :pipeline_authoring do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
let(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/ci/lint_spec.rb b/spec/features/projects/ci/lint_spec.rb
index 8d5f62d8a06..4fea07b18bc 100644
--- a/spec/features/projects/ci/lint_spec.rb
+++ b/spec/features/projects/ci/lint_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'CI Lint', :js do
+RSpec.describe 'CI Lint', :js, feature_category: :pipeline_authoring do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
let_it_be(:project) { create(:project, :repository) }
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 9522e5ce2cf..662b2296234 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' do
+RSpec.describe 'Classification label on project pages', feature_category: :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 8c557a9c37a..43046db2b6c 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 do
+RSpec.describe 'ClusterAgents', :js, feature_category: :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/gcp_spec.rb b/spec/features/projects/clusters/gcp_spec.rb
index 5c54b7fda7c..114182982e2 100644
--- a/spec/features/projects/clusters/gcp_spec.rb
+++ b/spec/features/projects/clusters/gcp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Gcp Cluster', :js do
+RSpec.describe 'Gcp Cluster', :js, feature_category: :kubernetes_management do
include GoogleApi::CloudPlatformHelpers
let(:project) { create(:project) }
diff --git a/spec/features/projects/clusters/user_spec.rb b/spec/features/projects/clusters/user_spec.rb
index 527d038f975..34fc0a76c7f 100644
--- a/spec/features/projects/clusters/user_spec.rb
+++ b/spec/features/projects/clusters/user_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User Cluster', :js do
+RSpec.describe 'User Cluster', :js, feature_category: :kubernetes_management do
include GoogleApi::CloudPlatformHelpers
let(:project) { create(:project) }
diff --git a/spec/features/projects/clusters_spec.rb b/spec/features/projects/clusters_spec.rb
index 9e1d66bc73e..3fb586bd143 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 do
+RSpec.describe 'Clusters', :js, feature_category: :projects do
include GoogleApi::CloudPlatformHelpers
let(:project) { create(:project) }
diff --git a/spec/features/projects/commit/builds_spec.rb b/spec/features/projects/commit/builds_spec.rb
index 7b10f72006f..dfd58a99953 100644
--- a/spec/features/projects/commit/builds_spec.rb
+++ b/spec/features/projects/commit/builds_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'project commit pipelines', :js do
+RSpec.describe 'project commit pipelines', :js, feature_category: :continuous_integration do
let(:project) { create(:project, :repository) }
before do
diff --git a/spec/features/projects/commit/cherry_pick_spec.rb b/spec/features/projects/commit/cherry_pick_spec.rb
index fce9fa4fb62..dc8b84283a1 100644
--- a/spec/features/projects/commit/cherry_pick_spec.rb
+++ b/spec/features/projects/commit/cherry_pick_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Cherry-pick Commits', :js do
+RSpec.describe 'Cherry-pick Commits', :js, feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
let_it_be(:sha) { '7d3b0f7cff5f37573aea97cebfd5692ea1689924' }
diff --git a/spec/features/projects/commit/comments/user_adds_comment_spec.rb b/spec/features/projects/commit/comments/user_adds_comment_spec.rb
index a470215186b..c53ac27bb5f 100644
--- a/spec/features/projects/commit/comments/user_adds_comment_spec.rb
+++ b/spec/features/projects/commit/comments/user_adds_comment_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User adds a comment on a commit", :js do
+RSpec.describe "User adds a comment on a commit", :js, feature_category: :source_code_management do
include Spec::Support::Helpers::Features::NotesHelpers
include RepoHelpers
diff --git a/spec/features/projects/commit/comments/user_deletes_comments_spec.rb b/spec/features/projects/commit/comments/user_deletes_comments_spec.rb
index 9059f9e4857..a1e7ddb4d6e 100644
--- a/spec/features/projects/commit/comments/user_deletes_comments_spec.rb
+++ b/spec/features/projects/commit/comments/user_deletes_comments_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User deletes comments on a commit", :js do
+RSpec.describe "User deletes comments on a commit", :js, feature_category: :source_code_management do
include Spec::Support::Helpers::Features::NotesHelpers
include Spec::Support::Helpers::ModalHelpers
include RepoHelpers
diff --git a/spec/features/projects/commit/comments/user_edits_comments_spec.rb b/spec/features/projects/commit/comments/user_edits_comments_spec.rb
index 8ac15c9cb7f..9019a981a18 100644
--- a/spec/features/projects/commit/comments/user_edits_comments_spec.rb
+++ b/spec/features/projects/commit/comments/user_edits_comments_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User edits a comment on a commit", :js do
+RSpec.describe "User edits a comment on a commit", :js, feature_category: :source_code_management do
include Spec::Support::Helpers::Features::NotesHelpers
include RepoHelpers
diff --git a/spec/features/projects/commit/diff_notes_spec.rb b/spec/features/projects/commit/diff_notes_spec.rb
index 6cebff1cc9a..f29e0803f61 100644
--- a/spec/features/projects/commit/diff_notes_spec.rb
+++ b/spec/features/projects/commit/diff_notes_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Commit diff', :js do
+RSpec.describe 'Commit diff', :js, feature_category: :source_code_management do
include RepoHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/commit/mini_pipeline_graph_spec.rb b/spec/features/projects/commit/mini_pipeline_graph_spec.rb
index 417e14e2376..3611efd1477 100644
--- a/spec/features/projects/commit/mini_pipeline_graph_spec.rb
+++ b/spec/features/projects/commit/mini_pipeline_graph_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Mini Pipeline Graph in Commit View', :js do
+RSpec.describe 'Mini Pipeline Graph in Commit View', :js, feature_category: :source_code_management do
let(:project) { create(:project, :public, :repository) }
context 'when commit has pipelines' do
diff --git a/spec/features/projects/commit/user_comments_on_commit_spec.rb b/spec/features/projects/commit/user_comments_on_commit_spec.rb
index a7f23f093a3..66a407b5ff6 100644
--- a/spec/features/projects/commit/user_comments_on_commit_spec.rb
+++ b/spec/features/projects/commit/user_comments_on_commit_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User comments on commit", :js do
+RSpec.describe "User comments on commit", :js, feature_category: :source_code_management do
include Spec::Support::Helpers::Features::NotesHelpers
include Spec::Support::Helpers::ModalHelpers
include RepoHelpers
diff --git a/spec/features/projects/commit/user_reverts_commit_spec.rb b/spec/features/projects/commit/user_reverts_commit_spec.rb
index 1c6cf5eb258..8c7b8e6ba32 100644
--- a/spec/features/projects/commit/user_reverts_commit_spec.rb
+++ b/spec/features/projects/commit/user_reverts_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User reverts a commit', :js do
+RSpec.describe 'User reverts a commit', :js, feature_category: :source_code_management do
include RepoHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb b/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb
index cc3c70e66ce..5670ed17eba 100644
--- a/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb
+++ b/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > Commit > View user status' do
+RSpec.describe 'Project > Commit > View user status', feature_category: :source_code_management do
include RepoHelpers
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/commits/multi_view_diff_spec.rb b/spec/features/projects/commits/multi_view_diff_spec.rb
index c0e48b7b86c..b178a1c2171 100644
--- a/spec/features/projects/commits/multi_view_diff_spec.rb
+++ b/spec/features/projects/commits/multi_view_diff_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.shared_examples "no multiple viewers" do |commit_ref|
+RSpec.shared_examples "no multiple viewers", feature_category: :source_code_management do |commit_ref|
let(:ref) { commit_ref }
it "does not display multiple diff viewers" do
diff --git a/spec/features/projects/commits/rss_spec.rb b/spec/features/projects/commits/rss_spec.rb
index b521bb865ae..49da0727fbd 100644
--- a/spec/features/projects/commits/rss_spec.rb
+++ b/spec/features/projects/commits/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project Commits RSS' do
+RSpec.describe 'Project Commits RSS', feature_category: :source_code_management do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
let(:path) { project_commits_path(project, :master) }
diff --git a/spec/features/projects/commits/user_browses_commits_spec.rb b/spec/features/projects/commits/user_browses_commits_spec.rb
index 2719316c5dc..791f626b8d9 100644
--- a/spec/features/projects/commits/user_browses_commits_spec.rb
+++ b/spec/features/projects/commits/user_browses_commits_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User browses commits' do
+RSpec.describe 'User browses commits', feature_category: :source_code_management do
include RepoHelpers
let(:user) { create(:user) }
@@ -208,6 +208,10 @@ RSpec.describe 'User browses commits' do
expect(page).not_to have_link 'Create merge request'
end
+ it 'shows ref switcher with correct text', :js do
+ expect(find('.ref-selector')).to have_text('master')
+ end
+
context 'when click the compare tab' do
before do
wait_for_requests
@@ -220,9 +224,18 @@ RSpec.describe 'User browses commits' do
end
end
- context 'feature branch' do
+ context 'feature branch', :js do
let(:visit_commits_page) do
- visit project_commits_path(project, 'feature')
+ visit project_commits_path(project)
+
+ find('.ref-selector').click
+ wait_for_requests
+
+ page.within('.ref-selector') do
+ fill_in 'Search by Git revision', with: 'feature'
+ wait_for_requests
+ find('li', text: 'feature', match: :prefer_exact).click
+ end
end
context 'when project does not have open merge requests' do
@@ -230,6 +243,10 @@ RSpec.describe 'User browses commits' do
visit_commits_page
end
+ it 'shows ref switcher with correct text' do
+ expect(find('.ref-selector')).to have_text('feature')
+ end
+
it 'renders project commits' do
commit = project.repository.commit('0b4bc9a')
diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb
index 22b0f344606..8284299443f 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 do
+RSpec.describe "Compare", :js, feature_category: :projects do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
@@ -17,10 +17,10 @@ RSpec.describe "Compare", :js do
visit project_compare_index_path(project, from: 'master', to: 'master')
select_using_dropdown 'from', 'feature'
- expect(find('.js-compare-from-dropdown .gl-new-dropdown-button-text')).to have_content('feature')
+ expect(find('.js-compare-from-dropdown .gl-dropdown-button-text')).to have_content('feature')
select_using_dropdown 'to', 'binary-encoding'
- expect(find('.js-compare-to-dropdown .gl-new-dropdown-button-text')).to have_content('binary-encoding')
+ expect(find('.js-compare-to-dropdown .gl-dropdown-button-text')).to have_content('binary-encoding')
click_button 'Compare'
@@ -32,8 +32,8 @@ RSpec.describe "Compare", :js do
it "pre-populates fields" do
visit project_compare_index_path(project, from: "master", to: "master")
- expect(find(".js-compare-from-dropdown .gl-new-dropdown-button-text")).to have_content("master")
- expect(find(".js-compare-to-dropdown .gl-new-dropdown-button-text")).to have_content("master")
+ expect(find(".js-compare-from-dropdown .gl-dropdown-button-text")).to have_content("master")
+ expect(find(".js-compare-to-dropdown .gl-dropdown-button-text")).to have_content("master")
end
it_behaves_like 'compares branches'
@@ -99,7 +99,7 @@ RSpec.describe "Compare", :js do
find(".js-compare-from-dropdown .compare-dropdown-toggle").click
- expect(find(".js-compare-from-dropdown .gl-new-dropdown-contents")).to have_selector('li.gl-new-dropdown-item', count: 1)
+ expect(find(".js-compare-from-dropdown .gl-dropdown-contents")).to have_selector('li.gl-dropdown-item', count: 1)
end
context 'when commit has overflow', :js do
@@ -153,10 +153,10 @@ RSpec.describe "Compare", :js do
visit project_compare_index_path(project, from: "master", to: "master")
select_using_dropdown "from", "v1.0.0"
- expect(find(".js-compare-from-dropdown .gl-new-dropdown-button-text")).to have_content("v1.0.0")
+ expect(find(".js-compare-from-dropdown .gl-dropdown-button-text")).to have_content("v1.0.0")
select_using_dropdown "to", "v1.1.0"
- expect(find(".js-compare-to-dropdown .gl-new-dropdown-button-text")).to have_content("v1.1.0")
+ expect(find(".js-compare-to-dropdown .gl-dropdown-button-text")).to have_content("v1.1.0")
click_button "Compare"
expect(page).to have_content "Commits"
diff --git a/spec/features/projects/confluence/user_views_confluence_page_spec.rb b/spec/features/projects/confluence/user_views_confluence_page_spec.rb
index 49e7839f16c..c1ce6ea4536 100644
--- a/spec/features/projects/confluence/user_views_confluence_page_spec.rb
+++ b/spec/features/projects/confluence/user_views_confluence_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views the Confluence page' do
+RSpec.describe 'User views the Confluence page', feature_category: :integrations do
let_it_be(:user) { create(:user) }
let(:project) { create(:project, :public) }
diff --git a/spec/features/projects/container_registry_spec.rb b/spec/features/projects/container_registry_spec.rb
index e99af734c43..98cf024afa8 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 do
+RSpec.describe 'Container Registry', :js, feature_category: :projects do
include_context 'container registry tags'
let(:user) { create(:user) }
@@ -104,8 +104,6 @@ RSpec.describe 'Container Registry', :js do
find('.modal .modal-footer .btn-danger').click
end
- it_behaves_like 'rejecting tags destruction for an importing repository on', tags: ['1']
-
it('pagination navigate to the second page') do
visit_next_page
diff --git a/spec/features/projects/deploy_keys_spec.rb b/spec/features/projects/deploy_keys_spec.rb
index 06462263f5a..bd48fb68304 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 do
+RSpec.describe 'Project deploy keys', :js, feature_category: :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/diffs/diff_show_spec.rb b/spec/features/projects/diffs/diff_show_spec.rb
index dcd6f1239bb..973c61de31d 100644
--- a/spec/features/projects/diffs/diff_show_spec.rb
+++ b/spec/features/projects/diffs/diff_show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache do
+RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
def visit_commit(sha, anchor: nil)
diff --git a/spec/features/projects/environments/environment_metrics_spec.rb b/spec/features/projects/environments/environment_metrics_spec.rb
index d486d8cf551..4a112445ab9 100644
--- a/spec/features/projects/environments/environment_metrics_spec.rb
+++ b/spec/features/projects/environments/environment_metrics_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Environment > Metrics' do
+RSpec.describe 'Environment > Metrics', feature_category: :projects do
include PrometheusHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/environments/environment_spec.rb b/spec/features/projects/environments/environment_spec.rb
index 706c880d097..75913082803 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' do
+RSpec.describe 'Environment', feature_category: :projects do
let_it_be(:project) { create(:project, :repository) }
let(:user) { create(:user) }
let(:role) { :developer }
@@ -10,12 +10,83 @@ RSpec.describe 'Environment' do
before do
sign_in(user)
project.add_role(user, role)
+ stub_feature_flags(environment_details_vue: false)
end
def auto_stop_button_selector
%q{button[title="Prevent environment from auto-stopping"]}
end
+ describe 'environment details page vue' do
+ let_it_be(:environment) { create(:environment, project: project) }
+ let!(:permissions) {}
+ let!(:deployment) {}
+ let!(:action) {}
+ let!(:cluster) {}
+
+ before do
+ stub_feature_flags(environment_details_vue: true)
+ end
+
+ context 'with auto-stop' do
+ let_it_be(:environment) { create(:environment, :will_auto_stop, name: 'staging', project: project) }
+
+ before do
+ visit_environment(environment)
+ end
+
+ it 'shows auto stop info', :js do
+ expect(page).to have_content('Auto stops')
+ end
+
+ it 'shows auto stop button', :js do
+ expect(page).to have_selector(auto_stop_button_selector)
+ expect(page.find(auto_stop_button_selector).find(:xpath, '..')['action']).to have_content(cancel_auto_stop_project_environment_path(environment.project, environment))
+ end
+
+ it 'allows user to cancel auto stop', :js do
+ page.find(auto_stop_button_selector).click
+ wait_for_all_requests
+ expect(page).to have_content('Auto stop successfully canceled.')
+ expect(page).not_to have_selector(auto_stop_button_selector)
+ end
+ end
+
+ context 'with deployments' do
+ before do
+ visit_environment(environment)
+ end
+
+ context 'when there is a successful deployment' do
+ let(:pipeline) { create(:ci_pipeline, project: project) }
+ let(:build) { create(:ci_build, :success, pipeline: pipeline) }
+
+ let(:deployment) do
+ create(:deployment, :success, environment: environment, deployable: build)
+ end
+
+ it 'does show deployments', :js do
+ wait_for_requests
+ expect(page).to have_link("#{build.name} (##{build.id})")
+ end
+ end
+
+ context 'when there is a failed deployment' do
+ let(:pipeline) { create(:ci_pipeline, project: project) }
+ let(:build) { create(:ci_build, pipeline: pipeline) }
+
+ let(:deployment) do
+ create(:deployment, :failed, environment: environment, deployable: build)
+ end
+
+ it 'does show deployments', :js do
+ wait_for_requests
+ expect(page).to have_link("#{build.name} (##{build.id})")
+ end
+ end
+ end
+ end
+
describe 'environment details page' do
let_it_be(:environment) { create(:environment, project: project) }
let!(:permissions) {}
diff --git a/spec/features/projects/environments/environments_spec.rb b/spec/features/projects/environments/environments_spec.rb
index b445b0da901..788bf6477b1 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 do
+RSpec.describe 'Environments page', :js, feature_category: :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 37d6f299883..6383c3196c4 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 do
+RSpec.describe 'User deletes feature flag user list', :js, feature_category: :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 b37c2780827..8ab9e9baab9 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 do
+RSpec.describe 'User edits feature flag user list', :js, feature_category: :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 dfebe6408bd..7614349c5a4 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 do
+RSpec.describe 'User sees feature flag user list details', :js, feature_category: :projects do
let_it_be(:project) { create(:project) }
let_it_be(:developer) { create(:user) }
diff --git a/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb b/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb
index 43540dc4522..852d7bca96a 100644
--- a/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb
+++ b/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User deletes feature flag', :js do
+RSpec.describe 'User deletes feature flag', :js, feature_category: :feature_flags do
include FeatureFlagHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb b/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb
index 949e530f86d..e2448887531 100644
--- a/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb
+++ b/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User sees feature flag list', :js do
+RSpec.describe 'User sees feature flag list', :js, feature_category: :feature_flags do
include FeatureFlagHelpers
let_it_be(:user) { create(:user) }
@@ -42,7 +42,7 @@ RSpec.describe 'User sees feature flag list', :js do
expect_status_toggle_button_not_to_be_checked
within_feature_flag_scopes do
- expect(page.find('[data-testid="strategy-badge"]')).to have_content('All Users: All Environments, review/*')
+ expect(page.find('[data-testid="strategy-label"]')).to have_content('All Users: All Environments, review/*')
end
end
end
@@ -66,7 +66,7 @@ RSpec.describe 'User sees feature flag list', :js do
expect_status_toggle_button_to_be_checked
within_feature_flag_scopes do
- expect(page.find('[data-testid="strategy-badge"]')).to have_content('All Users: production')
+ expect(page.find('[data-testid="strategy-label"]')).to have_content('All Users: production')
end
end
end
diff --git a/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb b/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb
index eb9ac078662..ce99ae92d63 100644
--- a/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb
+++ b/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User updates feature flag', :js do
+RSpec.describe 'User updates feature flag', :js, feature_category: :feature_flags do
include FeatureFlagHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/features_visibility_spec.rb b/spec/features/projects/features_visibility_spec.rb
index 649c21d4459..5e0998412ed 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' do
+RSpec.describe 'Edit Project Settings', feature_category: :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 dd1635c900e..1e05bdae204 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 do
+RSpec.describe 'Projects > Files > User wants to add a Dockerfile file', :js, feature_category: :projects do
include Spec::Support::Helpers::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 a486d7517ac..2710e2efa94 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' do
+RSpec.describe 'Projects > Files > Download buttons in files tree', feature_category: :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 e08c53a67dd..f6342257847 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 do
+RSpec.describe 'Projects > Files > User uses soft wrap while editing file', :js, feature_category: :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 e256bec2a1c..04f45de42cc 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' do
+RSpec.describe 'Projects > Files > User wants to edit a file', feature_category: :projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
let(:commit_params) do
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 a283f7d128c..d791e22e4f8 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' do
+RSpec.describe 'Projects > Files > User views files page', feature_category: :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 9ae3be4993b..19813396435 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 do
+RSpec.describe 'Projects > Files > Find file keyboard shortcuts', :js, feature_category: :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 a86adf951d8..5e11a94e65b 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 do
+RSpec.describe 'Projects > Files > User wants to add a .gitignore file', :js, feature_category: :projects do
include Spec::Support::Helpers::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 46ac0dee7eb..67678a937e5 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 do
+RSpec.describe 'Projects > Files > User wants to add a .gitlab-ci.yml file', :js, feature_category: :projects do
include Spec::Support::Helpers::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 c9ba8cbd2bb..7ac9cb33060 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 do
+RSpec.describe 'Projects > Files > Project owner creates a license file', :js, feature_category: :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 52686469243..8d64151e680 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
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Project owner sees a link to create a license file in empty project', :js do
+RSpec.describe 'Projects > Files > Project owner sees a link to create a license file in empty project', :js,
+feature_category: :projects do
include 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 51ae6616d4a..8dbfa3afb0b 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 do
+RSpec.describe 'Template selector menu', :js, feature_category: :projects do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/files/template_type_dropdown_spec.rb b/spec/features/projects/files/template_type_dropdown_spec.rb
index 9cdb5eeb076..990b118d172 100644
--- a/spec/features/projects/files/template_type_dropdown_spec.rb
+++ b/spec/features/projects/files/template_type_dropdown_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > Template type dropdown selector', :js do
+RSpec.describe 'Projects > Files > Template type dropdown selector', :js, feature_category: :projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb
index 0b2daf12063..afc9a5fd232 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 do
+RSpec.describe 'Projects > Files > Template Undo Button', :js, feature_category: :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 220572c6a6d..8b60d21a77e 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
@@ -3,7 +3,8 @@
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 do
+RSpec.describe 'Projects > Files > User browses a tree with a folder containing only a folder', :js,
+feature_category: :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 0f3ce5a2bad..125f7209ab4 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 do
+RSpec.describe "User browses files", :js, feature_category: :projects do
include RepoHelpers
let(:fork_message) do
@@ -86,6 +86,15 @@ RSpec.describe "User browses files", :js do
visit(project_tree_path(project, "markdown"))
end
+ it "redirects to the permalink URL" do
+ click_link(".gitignore")
+ click_link("Permalink")
+
+ permalink_path = project_blob_path(project, "#{project.repository.commit('markdown').sha}/.gitignore")
+
+ expect(page).to have_current_path(permalink_path, ignore_query: true)
+ end
+
it "shows correct files and links" do
expect(page).to have_current_path(project_tree_path(project, "markdown"), ignore_query: true)
expect(page).to have_content("README.md")
@@ -262,6 +271,8 @@ RSpec.describe "User browses files", :js do
context "when browsing a specific ref", :js do
let(:ref) { project_tree_path(project, "6d39438") }
+ ref_selector = '.ref-selector'
+
before do
visit(ref)
end
@@ -272,24 +283,34 @@ RSpec.describe "User browses files", :js do
end
it "shows files from a repository with apostroph in its name" do
- first(".js-project-refs-dropdown").click
+ ref_name = 'test'
- page.within(".project-refs-form") do
- click_link("'test'")
+ find(ref_selector).click
+ wait_for_requests
+
+ page.within(ref_selector) do
+ fill_in 'Search by Git revision', with: ref_name
+ wait_for_requests
+ find('li', text: ref_name, match: :prefer_exact).click
end
- expect(page).to have_selector(".dropdown-toggle-text", text: "'test'")
+ expect(find(ref_selector)).to have_text(ref_name)
- visit(project_tree_path(project, "'test'"))
+ visit(project_tree_path(project, ref_name))
expect(page).not_to have_selector(".tree-commit .animation-container")
end
it "shows the code with a leading dot in the directory" do
- first(".js-project-refs-dropdown").click
+ ref_name = 'fix'
+
+ find(ref_selector).click
+ wait_for_requests
- page.within(".project-refs-form") do
- click_link("fix")
+ page.within(ref_selector) do
+ fill_in 'Search by Git revision', with: ref_name
+ wait_for_requests
+ find('li', text: ref_name, match: :prefer_exact).click
end
visit(project_tree_path(project, "fix/.testdir"))
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 56e18871810..6b401d6d789 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' do
+RSpec.describe 'Projects > Files > User browses LFS files', feature_category: :projects do
let(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/files/user_creates_directory_spec.rb b/spec/features/projects/files/user_creates_directory_spec.rb
index 9e0168d7ef3..4dd579ba8e9 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 do
+RSpec.describe 'Projects > Files > User creates a directory', :js, feature_category: :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 a81f31d663e..97ccb45dfc6 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 do
+RSpec.describe 'Projects > Files > User creates files', :js, feature_category: :projects do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
include BlobSpecHelpers
diff --git a/spec/features/projects/files/user_deletes_files_spec.rb b/spec/features/projects/files/user_deletes_files_spec.rb
index 806f1e8e9ed..61152a8badc 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 do
+RSpec.describe 'Projects > Files > User deletes files', :js, feature_category: :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 1a9c5483218..5a61aa146a2 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 do
+RSpec.describe 'Projects > Files > User edits files', :js, feature_category: :projects do
include Spec::Support::Helpers::Features::SourceEditorSpecHelpers
include ProjectForksHelper
include BlobSpecHelpers
diff --git a/spec/features/projects/files/user_find_file_spec.rb b/spec/features/projects/files/user_find_file_spec.rb
index 69ea8b0eb5f..1b53189da83 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' do
+RSpec.describe 'User find project file', feature_category: :projects do
let(:user) { create :user }
let(:project) { create :project, :repository }
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 294a03813cd..18a5fb71b10 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 do
+RSpec.describe 'user reads pipeline status', :js, feature_category: :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 1ecd50b6463..9fa3ddf92c6 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 do
+RSpec.describe 'Projects > Files > User replaces files', :js, feature_category: :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 cce73d06f94..b438b203141 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' do
+RSpec.describe 'Projects > Files > User searches for files', feature_category: :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 cc621dfd9f8..575a6290a32 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' do
+RSpec.describe 'Projects > Files > User uploads files', feature_category: :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 9ceadb63178..3867f7fd086 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' do
+RSpec.describe 'Project fork', feature_category: :projects do
include ProjectForksHelper
let(:user) { create(:user) }
diff --git a/spec/features/projects/forks/fork_list_spec.rb b/spec/features/projects/forks/fork_list_spec.rb
index b48c46ef8cb..18424c18cbc 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' do
+RSpec.describe 'listing forks of a project', feature_category: :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 a7d68b07dd3..bb9f4e121d8 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 do
+RSpec.describe 'GFM autocomplete loading', :js, feature_category: :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 0b628ad1e9a..f96356b11c9 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 do
+RSpec.describe 'Project Graph', :js, feature_category: :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 9b7ec14c36f..92ddc559cf4 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' do
+RSpec.describe 'Hook logs', feature_category: :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/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb
index ccf3ccc6a96..8986ce91ae3 100644
--- a/spec/features/projects/import_export/export_file_spec.rb
+++ b/spec/features/projects/import_export/export_file_spec.rb
@@ -6,7 +6,7 @@ require 'spec_helper'
# It looks up for any sensitive word inside the JSON, so if a sensitive word is found
# we'll have to either include it adding the model that includes it to the +safe_list+
# or make sure the attribute is blacklisted in the +import_export.yml+ configuration
-RSpec.describe 'Import/Export - project export integration test', :js do
+RSpec.describe 'Import/Export - project export integration test', :js, feature_category: :importers do
include Select2Helper
include ExportFileHelper
@@ -53,7 +53,7 @@ RSpec.describe 'Import/Export - project export integration test', :js do
project_json_path = File.join(tmpdir, 'project.json')
expect(File).to exist(project_json_path)
- project_hash = Gitlab::Json.parse(IO.read(project_json_path))
+ project_hash = Gitlab::Json.parse(File.read(project_json_path))
sensitive_words.each do |sensitive_word|
found = find_sensitive_attributes(sensitive_word, project_hash)
@@ -79,7 +79,7 @@ RSpec.describe 'Import/Export - project export integration test', :js do
expect(File).to exist(project_json_path)
relations = []
- relations << Gitlab::Json.parse(IO.read(project_json_path))
+ relations << Gitlab::Json.parse(File.read(project_json_path))
Dir.glob(File.join(tmpdir, 'tree/project', '*.ndjson')) do |rb_filename|
File.foreach(rb_filename) do |line|
relations << Gitlab::Json.parse(line)
diff --git a/spec/features/projects/import_export/import_file_spec.rb b/spec/features/projects/import_export/import_file_spec.rb
index 6f015f9cd22..8fb11f06cdd 100644
--- a/spec/features/projects/import_export/import_file_spec.rb
+++ b/spec/features/projects/import_export/import_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Import/Export - project import integration test', :js do
+RSpec.describe 'Import/Export - project import integration test', :js, feature_category: :importers do
let(:user) { create(:user) }
let(:file) { File.join(Rails.root, 'spec', 'features', 'projects', 'import_export', 'test_project_export.tar.gz') }
let(:export_path) { "#{Dir.tmpdir}/import_file_spec" }
diff --git a/spec/features/projects/infrastructure_registry_spec.rb b/spec/features/projects/infrastructure_registry_spec.rb
index aab1cec8762..e1619726c8d 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' do
+RSpec.describe 'Infrastructure Registry', feature_category: :projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
diff --git a/spec/features/projects/integrations/disable_triggers_spec.rb b/spec/features/projects/integrations/disable_triggers_spec.rb
index b039d610ecb..f7afce6d87c 100644
--- a/spec/features/projects/integrations/disable_triggers_spec.rb
+++ b/spec/features/projects/integrations/disable_triggers_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Disable individual triggers', :js do
+RSpec.describe 'Disable individual triggers', :js, feature_category: :integrations do
include_context 'project integration activation'
let(:checkbox_selector) { 'input[name$="_events]"]' }
diff --git a/spec/features/projects/integrations/project_integrations_spec.rb b/spec/features/projects/integrations/project_integrations_spec.rb
index 708a5bca8c1..d99b6ca9092 100644
--- a/spec/features/projects/integrations/project_integrations_spec.rb
+++ b/spec/features/projects/integrations/project_integrations_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project integrations', :js do
+RSpec.describe 'Project integrations', :js, feature_category: :integrations do
include_context 'project integration activation'
it_behaves_like 'integration settings form' do
diff --git a/spec/features/projects/integrations/user_activates_asana_spec.rb b/spec/features/projects/integrations/user_activates_asana_spec.rb
index 9ec9f00529a..b99ca2ebc1c 100644
--- a/spec/features/projects/integrations/user_activates_asana_spec.rb
+++ b/spec/features/projects/integrations/user_activates_asana_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Asana' do
+RSpec.describe 'User activates Asana', feature_category: :integrations do
include_context 'project integration activation'
it 'activates integration', :js do
diff --git a/spec/features/projects/integrations/user_activates_assembla_spec.rb b/spec/features/projects/integrations/user_activates_assembla_spec.rb
index be9034ec5ba..db5774e4514 100644
--- a/spec/features/projects/integrations/user_activates_assembla_spec.rb
+++ b/spec/features/projects/integrations/user_activates_assembla_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Assembla' do
+RSpec.describe 'User activates Assembla', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb b/spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb
index 49f62a34bd2..a532c1b8644 100644
--- a/spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb
+++ b/spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Atlassian Bamboo CI' do
+RSpec.describe 'User activates Atlassian Bamboo CI', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_emails_on_push_spec.rb b/spec/features/projects/integrations/user_activates_emails_on_push_spec.rb
index 168779aad07..9a2d693a9f0 100644
--- a/spec/features/projects/integrations/user_activates_emails_on_push_spec.rb
+++ b/spec/features/projects/integrations/user_activates_emails_on_push_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Emails on push' do
+RSpec.describe 'User activates Emails on push', feature_category: :integrations do
include_context 'project integration activation'
it 'activates integration', :js do
diff --git a/spec/features/projects/integrations/user_activates_flowdock_spec.rb b/spec/features/projects/integrations/user_activates_flowdock_spec.rb
deleted file mode 100644
index df1a4feddfb..00000000000
--- a/spec/features/projects/integrations/user_activates_flowdock_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'User activates Flowdock' do
- include_context 'project integration activation' do
- let(:project) { create(:project, :repository) }
- end
-
- before do
- stub_request(:post, /.*api.flowdock.com.*/)
- end
-
- it 'activates integration', :js do
- visit_project_integration('Flowdock')
- fill_in('Token', with: 'verySecret')
-
- click_test_then_save_integration(expect_test_to_fail: false)
-
- expect(page).to have_content('Flowdock settings saved and active.')
- end
-end
diff --git a/spec/features/projects/integrations/user_activates_irker_spec.rb b/spec/features/projects/integrations/user_activates_irker_spec.rb
index 23b5f2a5c47..17c46bfaff7 100644
--- a/spec/features/projects/integrations/user_activates_irker_spec.rb
+++ b/spec/features/projects/integrations/user_activates_irker_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates irker (IRC gateway)' do
+RSpec.describe 'User activates irker (IRC gateway)', feature_category: :integrations do
include_context 'project integration activation'
it 'activates integration', :js do
diff --git a/spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb b/spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb
index f86a1b8a0a4..a18c052beb9 100644
--- a/spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb
+++ b/spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates JetBrains TeamCity CI' do
+RSpec.describe 'User activates JetBrains TeamCity CI', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_jira_spec.rb b/spec/features/projects/integrations/user_activates_jira_spec.rb
index dad201ffbb6..e4b10aeb340 100644
--- a/spec/features/projects/integrations/user_activates_jira_spec.rb
+++ b/spec/features/projects/integrations/user_activates_jira_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Jira', :js do
+RSpec.describe 'User activates Jira', :js, feature_category: :integrations do
include_context 'project integration activation'
include_context 'project integration Jira context'
diff --git a/spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb b/spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb
index 54c9ec0f62e..16c7a3ff226 100644
--- a/spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb
+++ b/spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Set up Mattermost slash commands', :js do
+RSpec.describe 'Set up Mattermost slash commands', :js, feature_category: :integrations do
describe 'user visits the mattermost slash command config page' do
include_context 'project integration activation'
diff --git a/spec/features/projects/integrations/user_activates_packagist_spec.rb b/spec/features/projects/integrations/user_activates_packagist_spec.rb
index 0892843e840..2d77abfea7c 100644
--- a/spec/features/projects/integrations/user_activates_packagist_spec.rb
+++ b/spec/features/projects/integrations/user_activates_packagist_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Packagist' do
+RSpec.describe 'User activates Packagist', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb b/spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb
index fe6ed786ace..b4dec8ffdb5 100644
--- a/spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb
+++ b/spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates PivotalTracker' do
+RSpec.describe 'User activates PivotalTracker', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_prometheus_spec.rb b/spec/features/projects/integrations/user_activates_prometheus_spec.rb
index 56b895919b8..5b2d885410f 100644
--- a/spec/features/projects/integrations/user_activates_prometheus_spec.rb
+++ b/spec/features/projects/integrations/user_activates_prometheus_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Prometheus' do
+RSpec.describe 'User activates Prometheus', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_pushover_spec.rb b/spec/features/projects/integrations/user_activates_pushover_spec.rb
index 616efdc836f..a705c354a1e 100644
--- a/spec/features/projects/integrations/user_activates_pushover_spec.rb
+++ b/spec/features/projects/integrations/user_activates_pushover_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Pushover' do
+RSpec.describe 'User activates Pushover', feature_category: :integrations do
include_context 'project integration activation'
before do
diff --git a/spec/features/projects/integrations/user_activates_slack_notifications_spec.rb b/spec/features/projects/integrations/user_activates_slack_notifications_spec.rb
index e89f6e309ea..01c202baf70 100644
--- a/spec/features/projects/integrations/user_activates_slack_notifications_spec.rb
+++ b/spec/features/projects/integrations/user_activates_slack_notifications_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User activates Slack notifications', :js do
+RSpec.describe 'User activates Slack notifications', :js, feature_category: :integrations do
include_context 'project integration activation'
context 'when integration is not configured yet' do
diff --git a/spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb b/spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb
index df8cd84ffdb..0f6d721565e 100644
--- a/spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb
+++ b/spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Slack slash commands', :js do
+RSpec.describe 'Slack slash commands', :js, feature_category: :integrations do
include_context 'project integration activation'
before do
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 8a2881c95dc..e0063a9c733 100644
--- a/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb
+++ b/spec/features/projects/integrations/user_uses_inherited_settings_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uses inherited settings', :js do
+RSpec.describe 'User uses inherited settings', :js, feature_category: :integrations do
include JiraIntegrationHelpers
include_context 'project integration activation'
diff --git a/spec/features/projects/integrations/user_views_services_spec.rb b/spec/features/projects/integrations/user_views_services_spec.rb
index 559461f911f..e6be300c0a9 100644
--- a/spec/features/projects/integrations/user_views_services_spec.rb
+++ b/spec/features/projects/integrations/user_views_services_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views integrations', :js do
+RSpec.describe 'User views integrations', :js, feature_category: :integrations do
include_context 'project integration activation'
it 'shows the list of available integrations' do
diff --git a/spec/features/projects/issuable_templates_spec.rb b/spec/features/projects/issuable_templates_spec.rb
index ac83de3e765..adf410ce6e8 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 do
+RSpec.describe 'issuable templates', :js, feature_category: :projects do
include ProjectForksHelper
let(:user) { create(:user) }
diff --git a/spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb b/spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb
index 78fb470d4ea..ef7022dcda8 100644
--- a/spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb
+++ b/spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'viewing issues with design references' do
+RSpec.describe 'viewing issues with design references', feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:public_project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb b/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb
index 908e30478b2..1490702a964 100644
--- a/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb
+++ b/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User paginates issue designs', :js do
+RSpec.describe 'User paginates issue designs', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb b/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb
index cfd8a4540ee..094bc9218ed 100644
--- a/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb
+++ b/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User design permissions', :js do
+RSpec.describe 'User design permissions', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
index 27d0be23aec..858d6751afa 100644
--- a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
+++ b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uploads new design', :js do
+RSpec.describe 'User uploads new design', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_views_design_images_spec.rb b/spec/features/projects/issues/design_management/user_views_design_images_spec.rb
index c3aefe05f75..c5fc11222c2 100644
--- a/spec/features/projects/issues/design_management/user_views_design_images_spec.rb
+++ b/spec/features/projects/issues/design_management/user_views_design_images_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Users views raw design image files' do
+RSpec.describe 'Users views raw design image files', feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/projects/issues/design_management/user_views_design_spec.rb b/spec/features/projects/issues/design_management/user_views_design_spec.rb
index b513a4fe3fa..11c8bdda3ac 100644
--- a/spec/features/projects/issues/design_management/user_views_design_spec.rb
+++ b/spec/features/projects/issues/design_management/user_views_design_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views issue designs', :js do
+RSpec.describe 'User views issue designs', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_views_designs_spec.rb b/spec/features/projects/issues/design_management/user_views_designs_spec.rb
index 46c772027ad..995ed66df98 100644
--- a/spec/features/projects/issues/design_management/user_views_designs_spec.rb
+++ b/spec/features/projects/issues/design_management/user_views_designs_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views issue designs', :js do
+RSpec.describe 'User views issue designs', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb b/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb
index 682a45cf592..a45b9b718c3 100644
--- a/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb
+++ b/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views an SVG design that contains XSS', :js do
+RSpec.describe 'User views an SVG design that contains XSS', :js, feature_category: :design_management do
include DesignManagementTestHelpers
let(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/issues/email_participants_spec.rb b/spec/features/projects/issues/email_participants_spec.rb
index 3ffe0a5ced8..4dedbff608e 100644
--- a/spec/features/projects/issues/email_participants_spec.rb
+++ b/spec/features/projects/issues/email_participants_spec.rb
@@ -2,16 +2,15 @@
require 'spec_helper'
-RSpec.describe 'viewing an issue', :js do
+RSpec.describe 'viewing an issue', :js, feature_category: :issue_email_participants do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :public) }
- let_it_be(:issue) { create(:issue, project: project) }
+ let_it_be_with_refind(:issue) { create(:issue, project: project) }
let_it_be(:note) { create(:note_on_issue, project: project, noteable: issue) }
let_it_be(:participants) { create_list(:issue_email_participant, 4, issue: issue) }
before do
- sign_in(user)
- visit project_issue_path(project, issue)
+ project.add_reporter(user)
end
shared_examples 'email participants warning' do |selector|
@@ -20,15 +19,48 @@ RSpec.describe 'viewing an issue', :js do
end
end
- context 'for a new note' do
- it_behaves_like 'email participants warning', '.new-note'
+ shared_examples 'no email participants warning' do |selector|
+ it 'does not show email participants warning' do
+ expect(find(selector)).not_to have_content(", and 1 more will be notified of your comment")
+ end
+ end
+
+ context 'when issue is confidential' do
+ before do
+ issue.update!(confidential: true)
+ sign_in(user)
+ visit project_issue_path(project, issue)
+ end
+
+ context 'for a new note' do
+ it_behaves_like 'email participants warning', '.new-note'
+ end
+
+ context 'for a reply form' do
+ before do
+ find('.js-reply-button').click
+ end
+
+ it_behaves_like 'email participants warning', '.note-edit-form'
+ end
end
- context 'for a reply form' do
+ context 'when issue is not confidential' do
before do
- find('.js-reply-button').click
+ sign_in(user)
+ visit project_issue_path(project, issue)
end
- it_behaves_like 'email participants warning', '.note-edit-form'
+ context 'for a new note' do
+ it_behaves_like 'no email participants warning', '.new-note'
+ end
+
+ context 'for a reply form' do
+ before do
+ find('.js-reply-button').click
+ end
+
+ it_behaves_like 'no email participants warning', '.note-edit-form'
+ end
end
end
diff --git a/spec/features/projects/issues/viewing_relocated_issues_spec.rb b/spec/features/projects/issues/viewing_relocated_issues_spec.rb
index 10d5ad1747c..abd36b3ceef 100644
--- a/spec/features/projects/issues/viewing_relocated_issues_spec.rb
+++ b/spec/features/projects/issues/viewing_relocated_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'issues canonical link' do
+RSpec.describe 'issues canonical link', feature_category: :team_planning do
include Spec::Support::Helpers::Features::CanonicalLinkHelpers
let_it_be(:original_project) { create(:project, :public) }
diff --git a/spec/features/projects/jobs/permissions_spec.rb b/spec/features/projects/jobs/permissions_spec.rb
index 740d009d6b8..c3c0043a6ef 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' do
+RSpec.describe 'Project Jobs Permissions', feature_category: :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 6a0cfcde812..78fb72ad2df 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 do
+RSpec.describe 'User browses a job', :js, feature_category: :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 cb3c1594868..1634f6dee74 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' do
+RSpec.describe 'User browses jobs', feature_category: :projects do
describe 'Jobs', :js do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
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 eea7e070a35..a9e0fce1a1c 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 do
+RSpec.describe 'User triggers manual job with variables', :js, feature_category: :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 96a8168e708..557a20ff2d6 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 do
+RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :projects do
include Gitlab::Routing
include ProjectForksHelper
@@ -215,10 +215,6 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state do
visit project_job_path(project, job)
end
- it 'shows retry button' do
- expect(page).to have_link('Retry')
- end
-
context 'if job passed' do
it 'does not show New issue button' do
expect(page).not_to have_link('New issue')
diff --git a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
index 91a30004fc3..846a0a25891 100644
--- a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
+++ b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Issue prioritization' do
+RSpec.describe 'Issue prioritization', feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
diff --git a/spec/features/projects/labels/search_labels_spec.rb b/spec/features/projects/labels/search_labels_spec.rb
index 04dfd4ca5f1..d058565925e 100644
--- a/spec/features/projects/labels/search_labels_spec.rb
+++ b/spec/features/projects/labels/search_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Search for labels', :js do
+RSpec.describe 'Search for labels', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project) }
let!(:label1) { create(:label, title: 'Foo', description: 'Lorem ipsum', project: project) }
diff --git a/spec/features/projects/labels/sort_labels_spec.rb b/spec/features/projects/labels/sort_labels_spec.rb
index f2f1acd2348..378a575348e 100644
--- a/spec/features/projects/labels/sort_labels_spec.rb
+++ b/spec/features/projects/labels/sort_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Sort labels', :js do
+RSpec.describe 'Sort labels', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project) }
let!(:label1) { create(:label, title: 'Foo', description: 'Lorem ipsum', project: project) }
diff --git a/spec/features/projects/labels/subscription_spec.rb b/spec/features/projects/labels/subscription_spec.rb
index 7ca8a542c21..f1537458a18 100644
--- a/spec/features/projects/labels/subscription_spec.rb
+++ b/spec/features/projects/labels/subscription_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Labels subscription' do
+RSpec.describe 'Labels subscription', feature_category: :team_planning do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, :public, namespace: group) }
diff --git a/spec/features/projects/labels/update_prioritization_spec.rb b/spec/features/projects/labels/update_prioritization_spec.rb
index 706ea92c086..b527b8926a0 100644
--- a/spec/features/projects/labels/update_prioritization_spec.rb
+++ b/spec/features/projects/labels/update_prioritization_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Prioritize labels' do
+RSpec.describe 'Prioritize labels', feature_category: :team_planning do
include DragTo
let(:user) { create(:user) }
diff --git a/spec/features/projects/labels/user_creates_labels_spec.rb b/spec/features/projects/labels/user_creates_labels_spec.rb
index 001d23cd2c9..46729048fe7 100644
--- a/spec/features/projects/labels/user_creates_labels_spec.rb
+++ b/spec/features/projects/labels/user_creates_labels_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User creates labels" do
+RSpec.describe "User creates labels", feature_category: :team_planning do
let_it_be(:project) { create(:project_empty_repo, :public) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/labels/user_edits_labels_spec.rb b/spec/features/projects/labels/user_edits_labels_spec.rb
index 999c238c7b3..f90f215f9fc 100644
--- a/spec/features/projects/labels/user_edits_labels_spec.rb
+++ b/spec/features/projects/labels/user_edits_labels_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User edits labels" do
+RSpec.describe "User edits labels", feature_category: :team_planning do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:project) { create(:project_empty_repo, :public) }
diff --git a/spec/features/projects/labels/user_promotes_label_spec.rb b/spec/features/projects/labels/user_promotes_label_spec.rb
index 4cb22c2e48c..e130dc561da 100644
--- a/spec/features/projects/labels/user_promotes_label_spec.rb
+++ b/spec/features/projects/labels/user_promotes_label_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User promotes label' do
+RSpec.describe 'User promotes label', feature_category: :team_planning do
let_it_be(:group) { create(:group) }
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, namespace: group) }
diff --git a/spec/features/projects/labels/user_removes_labels_spec.rb b/spec/features/projects/labels/user_removes_labels_spec.rb
index 11d73a56965..55dc52b8ccf 100644
--- a/spec/features/projects/labels/user_removes_labels_spec.rb
+++ b/spec/features/projects/labels/user_removes_labels_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User removes labels" do
+RSpec.describe "User removes labels", feature_category: :team_planning do
let(:project) { create(:project_empty_repo, :public) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb b/spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb
index f9c65c08ec0..117371e6904 100644
--- a/spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb
+++ b/spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'New project label breadcrumb' do
+RSpec.describe 'New project label breadcrumb', feature_category: :team_planning do
let(:project) { create(:project) }
let(:user) { project.creator }
diff --git a/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb b/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb
index 6f98883a412..d8c673a2ce5 100644
--- a/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb
+++ b/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Labels > User sees links to issuables' do
+RSpec.describe 'Projects > Labels > User sees links to issuables', feature_category: :team_planning do
let_it_be(:user) { create(:user) }
before do
diff --git a/spec/features/projects/labels/user_views_labels_spec.rb b/spec/features/projects/labels/user_views_labels_spec.rb
index 7a6942b6259..b5a9a735af9 100644
--- a/spec/features/projects/labels/user_views_labels_spec.rb
+++ b/spec/features/projects/labels/user_views_labels_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "User views labels" do
+RSpec.describe "User views labels", feature_category: :team_planning do
let_it_be(:project) { create(:project_empty_repo, :public) }
let_it_be(:user) { create(:user) }
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 c9fee9bee7a..63dc99efc8f 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' do
+RSpec.describe 'Projects > Members > Group member cannot leave group project', feature_category: :subgroups 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 34c870b8a96..07886950b95 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
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Group member cannot request access to their group project' do
+RSpec.describe 'Projects > Members > Group member cannot request access to their group project',
+feature_category: :subgroups 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 6aa6acbdae4..416b96ab668 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 do
+RSpec.describe 'Projects members', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 ec86b7db4fa..7a11ee61c5f 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
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Group requester cannot request access to project', :js do
+RSpec.describe 'Projects > Members > Group requester cannot request access to project', :js,
+feature_category: :subgroups 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 821b9249aa8..51acba246c5 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,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Groups with access list', :js do
+RSpec.describe 'Projects > Members > Groups with access list', :js, feature_category: :subgroups do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
diff --git a/spec/features/projects/members/manage_groups_spec.rb b/spec/features/projects/members/manage_groups_spec.rb
index e86affbbca1..b78bfacf171 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 do
+RSpec.describe 'Project > Members > Manage groups', :js, feature_category: :subgroups do
include ActionView::Helpers::DateHelper
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
diff --git a/spec/features/projects/members/manage_members_spec.rb b/spec/features/projects/members/manage_members_spec.rb
index 1f317c55256..3ffa402dc2c 100644
--- a/spec/features/projects/members/manage_members_spec.rb
+++ b/spec/features/projects/members/manage_members_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Members > Manage members', :js, product_group: :onboarding do
+RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :onboarding do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
include Spec::Support::Helpers::ModalHelpers
@@ -104,7 +104,6 @@ RSpec.describe 'Projects > Members > Manage members', :js, product_group: :onboa
click_on 'Invite members'
- click_on 'Guest'
wait_for_requests
end
@@ -112,13 +111,7 @@ RSpec.describe 'Projects > Members > Manage members', :js, product_group: :onboa
let(:current_user) { project_owner }
it 'shows Owner in the dropdown' do
- page.within '.dropdown-menu' do
- expect(page).to have_button('Guest')
- expect(page).to have_button('Reporter')
- expect(page).to have_button('Developer')
- expect(page).to have_button('Maintainer')
- expect(page).to have_button('Owner')
- end
+ expect(page).to have_select('Select a role', options: %w[Guest Reporter Developer Maintainer Owner])
end
end
@@ -126,13 +119,8 @@ RSpec.describe 'Projects > Members > Manage members', :js, product_group: :onboa
let(:current_user) { project_maintainer }
it 'does not show the Owner option' do
- page.within '.dropdown-menu' do
- expect(page).to have_button('Guest')
- expect(page).to have_button('Reporter')
- expect(page).to have_button('Developer')
- expect(page).to have_button('Maintainer')
- expect(page).not_to have_button('Owner')
- end
+ expect(page).to have_select('Select a role', options: %w[Guest Reporter Developer Maintainer])
+ expect(page).not_to have_select('Select a role', options: %w[Owner])
end
end
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 c92e8bc2954..31c8237aacc 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 do
+RSpec.describe 'Projects > Members > Maintainer adds member with expiration date', :js, feature_category: :subgroups do
include ActiveSupport::Testing::TimeHelpers
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::Features::InviteMembersModalHelper
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 f4e8c55e3cc..cea59679226 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' do
+RSpec.describe 'Projects > Members > Maintainer manages access requests', feature_category: :subgroups 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 fa02e815867..dc18ca88c36 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' do
+RSpec.describe 'Projects > Members > Member cannot request access to their project', feature_category: :subgroups 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 db227f3701d..2632bc2f5bd 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' do
+RSpec.describe 'Projects > Members > Member leaves project', feature_category: :subgroups do
include Spec::Support::Helpers::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 45a8f979b87..7908fd3a98f 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' do
+RSpec.describe 'Projects > Members > Owner cannot leave project', feature_category: :subgroups 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 fad5d831c19..b5a862578d3 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' do
+RSpec.describe 'Projects > Members > Owner cannot request access to their own project', feature_category: :subgroups 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 8aadd6302d0..5c72d9efeb3 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 do
+RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 5611e7ee810..232420224fc 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 do
+RSpec.describe 'Projects > Members > Tabs', :js, feature_category: :subgroups do
include Spec::Support::Helpers::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 be124502c32..11d162fabd4 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 do
+RSpec.describe 'Projects > Members > User requests access', :js, feature_category: :subgroups 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 eb52a7821f9..56aee469252 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' do
+RSpec.describe 'Merge Request button', feature_category: :projects do
include ProjectForksHelper
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/milestones/gfm_autocomplete_spec.rb b/spec/features/projects/milestones/gfm_autocomplete_spec.rb
index 547a5d11dec..d4ce10b5cb5 100644
--- a/spec/features/projects/milestones/gfm_autocomplete_spec.rb
+++ b/spec/features/projects/milestones/gfm_autocomplete_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GFM autocomplete', :js do
+RSpec.describe 'GFM autocomplete', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user, name: '💃speciąl someone💃', username: 'someone.special') }
let_it_be(:group) { create(:group, name: 'Ancestor') }
let_it_be(:project) { create(:project, :repository, group: group) }
diff --git a/spec/features/projects/milestones/milestone_spec.rb b/spec/features/projects/milestones/milestone_spec.rb
index 6bd139c0ebe..73d46d3764e 100644
--- a/spec/features/projects/milestones/milestone_spec.rb
+++ b/spec/features/projects/milestones/milestone_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project milestone', :js do
+RSpec.describe 'Project milestone', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
let(:milestone) { create(:milestone, project: project) }
diff --git a/spec/features/projects/milestones/milestones_sorting_spec.rb b/spec/features/projects/milestones/milestones_sorting_spec.rb
index 5ba4289fd11..8a8e7d07435 100644
--- a/spec/features/projects/milestones/milestones_sorting_spec.rb
+++ b/spec/features/projects/milestones/milestones_sorting_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Milestones sorting', :js do
+RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
let(:milestones_for_sort_by) do
diff --git a/spec/features/projects/milestones/new_spec.rb b/spec/features/projects/milestones/new_spec.rb
index 170268297cd..ef9325a1627 100644
--- a/spec/features/projects/milestones/new_spec.rb
+++ b/spec/features/projects/milestones/new_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Creating a new project milestone', :js do
+RSpec.describe 'Creating a new project milestone', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
diff --git a/spec/features/projects/milestones/user_interacts_with_labels_spec.rb b/spec/features/projects/milestones/user_interacts_with_labels_spec.rb
index d658599c52b..36dfee7811d 100644
--- a/spec/features/projects/milestones/user_interacts_with_labels_spec.rb
+++ b/spec/features/projects/milestones/user_interacts_with_labels_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User interacts with labels' do
+RSpec.describe 'User interacts with labels', feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
let(:milestone) { create(:milestone, project: project, title: 'v2.2', description: '# Description header') }
diff --git a/spec/features/projects/navbar_spec.rb b/spec/features/projects/navbar_spec.rb
index 5b5f7860e43..4d85b5cfb2e 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' do
+RSpec.describe 'Project navbar', feature_category: :projects do
include NavbarStructureHelper
include WaitForRequests
diff --git a/spec/features/projects/network_graph_spec.rb b/spec/features/projects/network_graph_spec.rb
index 97b743b4d73..b36fde8a2bf 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 do
+RSpec.describe 'Project Network Graph', :js, feature_category: :projects do
let(:user) { create :user }
let(:project) { create :project, :repository, namespace: user.namespace }
diff --git a/spec/features/projects/new_project_from_template_spec.rb b/spec/features/projects/new_project_from_template_spec.rb
index 1c8647d859a..97304840010 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 do
+RSpec.describe 'New project from template', :js, feature_category: :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 7cf05242a23..769ad5bf61a 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 do
+RSpec.describe 'New project', :js, feature_category: :projects do
include Spec::Support::Helpers::Features::TopNavSpecHelpers
context 'as a user' do
diff --git a/spec/features/projects/package_files_spec.rb b/spec/features/projects/package_files_spec.rb
index 6dc0294bb9e..824b57db7ad 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' do
+RSpec.describe 'PackageFiles', feature_category: :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 bbe913cf1e5..31ff455d0df 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' do
+RSpec.describe 'Packages', feature_category: :projects do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
diff --git a/spec/features/projects/pages/user_adds_domain_spec.rb b/spec/features/projects/pages/user_adds_domain_spec.rb
index 5cb4fa163c8..708210e669c 100644
--- a/spec/features/projects/pages/user_adds_domain_spec.rb
+++ b/spec/features/projects/pages/user_adds_domain_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'User adds pages domain', :js do
+RSpec.describe 'User adds pages domain', :js, feature_category: :pages do
include LetsEncryptHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/projects/pages/user_configures_pages_pipeline_spec.rb b/spec/features/projects/pages/user_configures_pages_pipeline_spec.rb
index 029479d6b95..baef75ca303 100644
--- a/spec/features/projects/pages/user_configures_pages_pipeline_spec.rb
+++ b/spec/features/projects/pages/user_configures_pages_pipeline_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'Pages edits pages settings', :js do
+RSpec.describe 'Pages edits pages settings', :js, feature_category: :pages do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:project) { create(:project, pages_https_only: false) }
@@ -46,14 +46,14 @@ RSpec.describe 'Pages edits pages settings', :js do
Feature.disable(:use_pipeline_wizard_for_pages)
end
+ after do
+ Feature.enable(:use_pipeline_wizard_for_pages)
+ end
+
it 'shows configure pages instructions' do
visit project_pages_path(project)
expect(page).to have_content('Configure pages')
end
-
- after do
- Feature.enable(:use_pipeline_wizard_for_pages)
- end
end
end
diff --git a/spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb b/spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb
index 2e28fa20b90..a7da59200e9 100644
--- a/spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb
+++ b/spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe "Pages with Let's Encrypt", :https_pages_enabled do
+RSpec.describe "Pages with Let's Encrypt", :https_pages_enabled, feature_category: :pages do
include LetsEncryptHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/projects/pages/user_edits_settings_spec.rb b/spec/features/projects/pages/user_edits_settings_spec.rb
index 88c27a6adf2..7ceefdecbae 100644
--- a/spec/features/projects/pages/user_edits_settings_spec.rb
+++ b/spec/features/projects/pages/user_edits_settings_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'Pages edits pages settings', :js do
+RSpec.describe 'Pages edits pages settings', :js, feature_category: :pages do
include Spec::Support::Helpers::ModalHelpers
let_it_be_with_reload(:project) { create(:project, :pages_published, pages_https_only: false) }
diff --git a/spec/features/projects/pipeline_schedules_spec.rb b/spec/features/projects/pipeline_schedules_spec.rb
index e569fef76f8..8beb8af1a8e 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 do
+RSpec.describe 'Pipeline Schedules', :js, feature_category: :projects do
include Spec::Support::Helpers::ModalHelpers
let!(:project) { create(:project, :repository) }
@@ -64,7 +64,7 @@ RSpec.describe 'Pipeline Schedules', :js do
it 'shows the pipeline schedule with default ref' do
page.within('[data-testid="schedule-target-ref"]') do
- expect(first('.gl-new-dropdown-button-text').text).to eq('master')
+ expect(first('.gl-dropdown-button-text').text).to eq('master')
end
end
end
@@ -77,7 +77,7 @@ RSpec.describe 'Pipeline Schedules', :js do
it 'shows the pipeline schedule with default ref' do
page.within('[data-testid="schedule-target-ref"]') do
- expect(first('.gl-new-dropdown-button-text').text).to eq('master')
+ expect(first('.gl-dropdown-button-text').text).to eq('master')
end
end
end
diff --git a/spec/features/projects/pipelines/legacy_pipeline_spec.rb b/spec/features/projects/pipelines/legacy_pipeline_spec.rb
deleted file mode 100644
index c4fc194f0cd..00000000000
--- a/spec/features/projects/pipelines/legacy_pipeline_spec.rb
+++ /dev/null
@@ -1,1315 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Pipeline', :js do
- include RoutesHelpers
- include ProjectForksHelper
- include ::ExclusiveLeaseHelpers
-
- let_it_be(:project) { create(:project) }
-
- let(:user) { create(:user) }
- let(:role) { :developer }
-
- before do
- sign_in(user)
- project.add_role(user, role)
- stub_feature_flags(pipeline_tabs_vue: false)
- end
-
- shared_context 'pipeline builds' do
- let!(:build_passed) do
- create(:ci_build, :success,
- pipeline: pipeline, stage: 'build', stage_idx: 0, name: 'build')
- end
-
- let!(:build_failed) do
- create(:ci_build, :failed,
- pipeline: pipeline, stage: 'test', stage_idx: 1, name: 'test')
- end
-
- let!(:build_preparing) do
- create(:ci_build, :preparing,
- pipeline: pipeline, stage: 'deploy', stage_idx: 2, name: 'prepare')
- end
-
- let!(:build_running) do
- create(:ci_build, :running,
- pipeline: pipeline, stage: 'deploy', stage_idx: 3, name: 'deploy')
- end
-
- let!(:build_manual) do
- create(:ci_build, :manual,
- pipeline: pipeline, stage: 'deploy', stage_idx: 3, name: 'manual-build')
- end
-
- let!(:build_scheduled) do
- create(:ci_build, :scheduled,
- pipeline: pipeline, stage: 'deploy', stage_idx: 3, name: 'delayed-job')
- end
-
- let!(:build_external) do
- create(:generic_commit_status, status: 'success',
- pipeline: pipeline,
- name: 'jenkins',
- stage: 'external',
- ref: 'master',
- target_url: 'http://gitlab.com/status')
- end
- end
-
- describe 'GET /:project/-/pipelines/:id' do
- include_context 'pipeline builds'
-
- let_it_be(:group) { create(:group) }
- let_it_be(:project, reload: true) { create(:project, :repository, group: group) }
-
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id, user: user) }
-
- subject(:visit_pipeline) { visit project_pipeline_path(project, pipeline) }
-
- it 'shows the pipeline graph' do
- visit_pipeline
-
- expect(page).to have_selector('.js-pipeline-graph')
- expect(page).to have_content('build')
- expect(page).to have_content('test')
- expect(page).to have_content('deploy')
- expect(page).to have_content('Retry')
- expect(page).to have_content('Cancel running')
- end
-
- it 'shows Pipeline tab pane as active' do
- visit_pipeline
-
- expect(page).to have_css('#js-tab-pipeline.active')
- end
-
- it 'shows link to the pipeline ref' do
- visit_pipeline
-
- expect(page).to have_link(pipeline.ref)
- end
-
- it 'shows the pipeline information' do
- visit_pipeline
-
- within '.pipeline-info' do
- expect(page).to have_content("#{pipeline.statuses.count} jobs " \
- "for #{pipeline.ref}")
- expect(page).to have_link(pipeline.ref,
- href: project_commits_path(pipeline.project, pipeline.ref))
- end
- end
-
- describe 'related merge requests' do
- context 'when there are no related merge requests' do
- it 'shows a "no related merge requests" message' do
- visit_pipeline
-
- within '.related-merge-request-info' do
- expect(page).to have_content('No related merge requests found.')
- end
- end
- end
-
- context 'when there is one related merge request' do
- let!(:merge_request) do
- create(:merge_request,
- source_project: project,
- source_branch: pipeline.ref)
- end
-
- it 'shows a link to the merge request' do
- visit_pipeline
-
- within '.related-merge-requests' do
- expect(page).to have_content('1 related merge request: ')
- expect(page).to have_selector('.js-truncated-mr-list')
- expect(page).to have_link("#{merge_request.to_reference} #{merge_request.title}")
-
- expect(page).not_to have_selector('.js-full-mr-list')
- expect(page).not_to have_selector('.text-expander')
- end
- end
- end
-
- context 'when there are two related merge requests' do
- let!(:merge_request1) do
- create(:merge_request,
- source_project: project,
- source_branch: pipeline.ref)
- end
-
- let!(:merge_request2) do
- create(:merge_request,
- source_project: project,
- source_branch: pipeline.ref,
- target_branch: 'fix')
- end
-
- it 'links to the most recent related merge request' do
- visit_pipeline
-
- within '.related-merge-requests' do
- expect(page).to have_content('2 related merge requests: ')
- expect(page).to have_link("#{merge_request2.to_reference} #{merge_request2.title}")
- expect(page).to have_selector('.text-expander')
- expect(page).to have_selector('.js-full-mr-list', visible: false)
- end
- end
-
- it 'expands to show links to all related merge requests' do
- visit_pipeline
-
- within '.related-merge-requests' do
- find('.text-expander').click
-
- expect(page).to have_selector('.js-full-mr-list', visible: true)
-
- pipeline.all_merge_requests.map do |merge_request|
- expect(page).to have_link(href: project_merge_request_path(project, merge_request))
- end
- end
- end
- end
- end
-
- describe 'pipelines details view' do
- let!(:status) { create(:user_status, user: pipeline.user, emoji: 'smirk', message: 'Authoring this object') }
-
- it 'pipeline header shows the user status and emoji' do
- visit project_pipeline_path(project, pipeline)
-
- within '[data-testid="ci-header-content"]' do
- expect(page).to have_selector("[data-testid='#{status.message}']")
- expect(page).to have_selector("[data-name='#{status.emoji}']")
- end
- end
- end
-
- describe 'pipeline graph' do
- before do
- visit_pipeline
- end
-
- context 'when pipeline has running builds' do
- it 'shows a running icon and a cancel action for the running build' do
- page.within('#ci-badge-deploy') do
- expect(page).to have_selector('.js-ci-status-icon-running')
- expect(page).to have_selector('.js-icon-cancel')
- expect(page).to have_content('deploy')
- end
- end
-
- it 'cancels the running build and shows retry button', :sidekiq_might_not_need_inline do
- find('#ci-badge-deploy .ci-action-icon-container').click
-
- page.within('#ci-badge-deploy') do
- expect(page).to have_css('.js-icon-retry')
- end
- end
- end
-
- context 'when pipeline has preparing builds' do
- it 'shows a preparing icon and a cancel action' do
- page.within('#ci-badge-prepare') do
- expect(page).to have_selector('.js-ci-status-icon-preparing')
- expect(page).to have_selector('.js-icon-cancel')
- expect(page).to have_content('prepare')
- end
- end
-
- it 'cancels the preparing build and shows retry button', :sidekiq_might_not_need_inline do
- find('#ci-badge-deploy .ci-action-icon-container').click
-
- page.within('#ci-badge-deploy') do
- expect(page).to have_css('.js-icon-retry')
- end
- end
- end
-
- context 'when pipeline has successful builds' do
- it 'shows the success icon and a retry action for the successful build' do
- page.within('#ci-badge-build') do
- expect(page).to have_selector('.js-ci-status-icon-success')
- expect(page).to have_content('build')
- end
-
- page.within('#ci-badge-build .ci-action-icon-container.js-icon-retry') do
- expect(page).to have_selector('svg')
- end
- end
-
- it 'is possible to retry the success job', :sidekiq_might_not_need_inline do
- find('#ci-badge-build .ci-action-icon-container').click
- wait_for_requests
-
- expect(page).not_to have_content('Retry job')
- within('.js-pipeline-header-container') do
- expect(page).to have_selector('.js-ci-status-icon-running')
- end
- end
- end
-
- context 'when pipeline has a delayed job' do
- let(:project) { create(:project, :repository, group: group) }
-
- it 'shows the scheduled icon and an unschedule action for the delayed job' do
- page.within('#ci-badge-delayed-job') do
- expect(page).to have_selector('.js-ci-status-icon-scheduled')
- expect(page).to have_content('delayed-job')
- end
-
- page.within('#ci-badge-delayed-job .ci-action-icon-container.js-icon-time-out') do
- expect(page).to have_selector('svg')
- end
- end
-
- it 'unschedules the delayed job and shows play button as a manual job', :sidekiq_might_not_need_inline do
- find('#ci-badge-delayed-job .ci-action-icon-container').click
-
- page.within('#ci-badge-delayed-job') do
- expect(page).to have_css('.js-icon-play')
- end
- end
- end
-
- context 'when pipeline has failed builds' do
- it 'shows the failed icon and a retry action for the failed build' do
- page.within('#ci-badge-test') do
- expect(page).to have_selector('.js-ci-status-icon-failed')
- expect(page).to have_content('test')
- end
-
- page.within('#ci-badge-test .ci-action-icon-container.js-icon-retry') do
- expect(page).to have_selector('svg')
- end
- end
-
- it 'is possible to retry the failed build', :sidekiq_might_not_need_inline do
- find('#ci-badge-test .ci-action-icon-container').click
- wait_for_requests
-
- expect(page).not_to have_content('Retry job')
- within('.js-pipeline-header-container') do
- expect(page).to have_selector('.js-ci-status-icon-running')
- end
- end
-
- it 'includes the failure reason' do
- page.within('#ci-badge-test') do
- build_link = page.find('.js-pipeline-graph-job-link')
- expect(build_link['title']).to eq('test - failed - (unknown failure)')
- end
- end
- end
-
- context 'when pipeline has manual jobs' do
- it 'shows the skipped icon and a play action for the manual build' do
- page.within('#ci-badge-manual-build') do
- expect(page).to have_selector('.js-ci-status-icon-manual')
- expect(page).to have_content('manual')
- end
-
- page.within('#ci-badge-manual-build .ci-action-icon-container.js-icon-play') do
- expect(page).to have_selector('svg')
- end
- end
-
- it 'is possible to play the manual job', :sidekiq_might_not_need_inline do
- find('#ci-badge-manual-build .ci-action-icon-container').click
- wait_for_requests
-
- expect(page).not_to have_content('Play job')
- within('.js-pipeline-header-container') do
- expect(page).to have_selector('.js-ci-status-icon-running')
- end
- end
- end
-
- context 'when pipeline has external job' do
- it 'shows the success icon and the generic comit status build' do
- expect(page).to have_selector('.js-ci-status-icon-success')
- expect(page).to have_content('jenkins')
- expect(page).to have_link('jenkins', href: 'http://gitlab.com/status')
- end
- end
- end
-
- context 'when the pipeline has manual stage' do
- before do
- create(:ci_build, :manual, pipeline: pipeline, stage_idx: 10, stage: 'publish', name: 'CentOS')
- create(:ci_build, :manual, pipeline: pipeline, stage_idx: 10, stage: 'publish', name: 'Debian')
- create(:ci_build, :manual, pipeline: pipeline, stage_idx: 10, stage: 'publish', name: 'OpenSUDE')
-
- # force to update stages statuses
- Ci::ProcessPipelineService.new(pipeline).execute
-
- visit_pipeline
- end
-
- it 'displays play all button' do
- expect(page).to have_selector('.js-stage-action')
- end
- end
-
- context 'page tabs' do
- before do
- visit_pipeline
- end
-
- it 'shows Pipeline, Jobs, DAG and Failed Jobs tabs with link' do
- expect(page).to have_link('Pipeline')
- expect(page).to have_link('Jobs')
- expect(page).to have_link('Needs')
- expect(page).to have_link('Failed Jobs')
- end
-
- it 'shows counter in Jobs tab' do
- expect(page.find('.js-builds-counter').text).to eq(pipeline.total_size.to_s)
- end
-
- it 'shows Pipeline tab as active' do
- expect(page).to have_css('.js-pipeline-tab-link .active')
- end
-
- context 'without permission to access builds' do
- let(:project) { create(:project, :public, :repository, public_builds: false) }
- let(:role) { :guest }
-
- it 'does not show the pipeline details page' do
- expect(page).to have_content('Not Found')
- end
- end
- end
-
- describe 'test tabs' do
- let(:pipeline) { create(:ci_pipeline, :with_test_reports, :with_report_results, project: project) }
-
- before do
- stub_feature_flags(pipeline_tabs_vue: false)
- visit_pipeline
- wait_for_requests
- end
-
- context 'with test reports' do
- it 'shows badge counter in Tests tab' do
- expect(page.find('.js-test-report-badge-counter').text).to eq(pipeline.test_report_summary.total[:count].to_s)
- end
-
- it 'calls summary.json endpoint', :js do
- find('.js-tests-tab-link').click
-
- expect(page).to have_content('Jobs')
- expect(page).to have_selector('[data-testid="tests-detail"]', visible: :all)
- end
- end
-
- context 'without test reports' do
- let(:pipeline) { create(:ci_pipeline, project: project) }
-
- it 'shows zero' do
- expect(page.find('.js-test-report-badge-counter', visible: :all).text).to eq("0")
- end
- end
- end
-
- context 'retrying jobs' do
- before do
- visit_pipeline
- end
-
- it { expect(page).not_to have_content('retried') }
-
- context 'when retrying' do
- before do
- find('[data-testid="retryPipeline"]').click
- wait_for_requests
- end
-
- it 'does not show a "Retry" button', :sidekiq_might_not_need_inline do
- expect(page).not_to have_content('Retry')
- end
-
- it 'shows running status in pipeline header', :sidekiq_might_not_need_inline do
- within('.js-pipeline-header-container') do
- expect(page).to have_selector('.js-ci-status-icon-running')
- end
- end
- end
- end
-
- context 'canceling jobs' do
- before do
- visit_pipeline
- end
-
- it { expect(page).not_to have_selector('.ci-canceled') }
-
- context 'when canceling' do
- before do
- click_on 'Cancel running'
- end
-
- it 'does not show a "Cancel running" button', :sidekiq_might_not_need_inline do
- expect(page).not_to have_content('Cancel running')
- end
- end
- end
-
- context 'when user can not delete' do
- before do
- visit_pipeline
- end
-
- it { expect(page).not_to have_button('Delete') }
- end
-
- context 'when deleting' do
- before do
- group.add_owner(user)
-
- visit_pipeline
-
- click_button 'Delete'
- click_button 'Delete pipeline'
- end
-
- it 'redirects to pipeline overview page', :sidekiq_inline do
- expect(page).to have_content('The pipeline has been deleted')
- expect(page).to have_current_path(project_pipelines_path(project), ignore_query: true)
- end
- end
-
- context 'when pipeline ref does not exist in repository anymore' do
- let(:pipeline) do
- create(:ci_empty_pipeline, project: project,
- ref: 'non-existent',
- sha: project.commit.id,
- user: user)
- end
-
- before do
- visit_pipeline
- end
-
- it 'does not render link to the pipeline ref' do
- expect(page).not_to have_link(pipeline.ref)
- expect(page).to have_content(pipeline.ref)
- end
-
- it 'does not render render raw HTML to the pipeline ref' do
- page.within '.pipeline-info' do
- expect(page).not_to have_content('<span class="ref-name"')
- end
- end
- end
-
- context 'when pipeline is detached merge request pipeline' do
- let(:source_project) { project }
- let(:target_project) { project }
-
- let(:merge_request) do
- create(:merge_request,
- :with_detached_merge_request_pipeline,
- source_project: source_project,
- target_project: target_project)
- end
-
- let(:pipeline) do
- merge_request.all_pipelines.last
- end
-
- it 'shows the pipeline information' do
- visit_pipeline
-
- within '.pipeline-info' do
- expect(page).to have_content("#{pipeline.statuses.count} jobs " \
- "for !#{merge_request.iid} " \
- "with #{merge_request.source_branch}")
- expect(page).to have_link("!#{merge_request.iid}",
- href: project_merge_request_path(project, merge_request))
- expect(page).to have_link(merge_request.source_branch,
- href: project_commits_path(merge_request.source_project, merge_request.source_branch))
- end
- end
-
- context 'when source branch does not exist' do
- before do
- project.repository.rm_branch(user, merge_request.source_branch)
- end
-
- it 'does not link to the source branch commit path' do
- visit_pipeline
-
- within '.pipeline-info' do
- expect(page).not_to have_link(merge_request.source_branch)
- expect(page).to have_content(merge_request.source_branch)
- end
- end
- end
-
- context 'when source project is a forked project' do
- let(:source_project) { fork_project(project, user, repository: true) }
-
- before do
- visit project_pipeline_path(source_project, pipeline)
- end
-
- it 'shows the pipeline information', :sidekiq_might_not_need_inline do
- within '.pipeline-info' do
- expect(page).to have_content("#{pipeline.statuses.count} jobs " \
- "for !#{merge_request.iid} " \
- "with #{merge_request.source_branch}")
- expect(page).to have_link("!#{merge_request.iid}",
- href: project_merge_request_path(project, merge_request))
- expect(page).to have_link(merge_request.source_branch,
- href: project_commits_path(merge_request.source_project, merge_request.source_branch))
- end
- end
- end
- end
-
- context 'when pipeline is merge request pipeline' do
- let(:project) { create(:project, :repository, group: group) }
- let(:source_project) { project }
- let(:target_project) { project }
-
- let(:merge_request) do
- create(:merge_request,
- :with_merge_request_pipeline,
- source_project: source_project,
- target_project: target_project,
- merge_sha: project.commit.id)
- end
-
- let(:pipeline) do
- merge_request.all_pipelines.last
- end
-
- before do
- pipeline.update!(user: user)
- end
-
- it 'shows the pipeline information' do
- visit_pipeline
-
- within '.pipeline-info' do
- expect(page).to have_content("#{pipeline.statuses.count} jobs " \
- "for !#{merge_request.iid} " \
- "with #{merge_request.source_branch} " \
- "into #{merge_request.target_branch}")
- expect(page).to have_link("!#{merge_request.iid}",
- href: project_merge_request_path(project, merge_request))
- expect(page).to have_link(merge_request.source_branch,
- href: project_commits_path(merge_request.source_project, merge_request.source_branch))
- expect(page).to have_link(merge_request.target_branch,
- href: project_commits_path(merge_request.target_project, merge_request.target_branch))
- end
- end
-
- context 'when target branch does not exist' do
- before do
- project.repository.rm_branch(user, merge_request.target_branch)
- end
-
- it 'does not link to the target branch commit path' do
- visit_pipeline
-
- within '.pipeline-info' do
- expect(page).not_to have_link(merge_request.target_branch)
- expect(page).to have_content(merge_request.target_branch)
- end
- end
- end
-
- context 'when source project is a forked project' do
- let(:source_project) { fork_project(project, user, repository: true) }
-
- before do
- visit project_pipeline_path(source_project, pipeline)
- end
-
- it 'shows the pipeline information', :sidekiq_might_not_need_inline do
- within '.pipeline-info' do
- expect(page).to have_content("#{pipeline.statuses.count} jobs " \
- "for !#{merge_request.iid} " \
- "with #{merge_request.source_branch} " \
- "into #{merge_request.target_branch}")
- expect(page).to have_link("!#{merge_request.iid}",
- href: project_merge_request_path(project, merge_request))
- expect(page).to have_link(merge_request.source_branch,
- href: project_commits_path(merge_request.source_project, merge_request.source_branch))
- expect(page).to have_link(merge_request.target_branch,
- href: project_commits_path(merge_request.target_project, merge_request.target_branch))
- end
- end
- end
- end
- end
-
- context 'when user does not have access to read jobs' do
- before do
- project.update!(public_builds: false)
- end
-
- describe 'GET /:project/-/pipelines/:id' do
- include_context 'pipeline builds'
-
- let_it_be(:project) { create(:project, :repository) }
-
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id, user: user) }
-
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'shows the pipeline graph' do
- expect(page).to have_selector('.js-pipeline-graph')
- expect(page).to have_content('build')
- expect(page).to have_content('test')
- expect(page).to have_content('deploy')
- expect(page).to have_content('Retry')
- expect(page).to have_content('Cancel running')
- end
-
- it 'does not link to job' do
- expect(page).not_to have_selector('.js-pipeline-graph-job-link')
- end
- end
- end
-
- context 'when a bridge job exists' do
- include_context 'pipeline builds'
-
- let(:project) { create(:project, :repository) }
- let(:downstream) { create(:project, :repository) }
-
- let(:pipeline) do
- create(:ci_pipeline, project: project,
- ref: 'master',
- sha: project.commit.id,
- user: user)
- end
-
- let!(:bridge) do
- create(:ci_bridge, pipeline: pipeline,
- name: 'cross-build',
- user: user,
- downstream: downstream)
- end
-
- describe 'GET /:project/-/pipelines/:id' do
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'shows the pipeline with a bridge job' do
- expect(page).to have_selector('.js-pipeline-graph')
- expect(page).to have_content('cross-build')
- end
-
- context 'when a scheduled pipeline is created by a blocked user' do
- let(:project) { create(:project, :repository) }
-
- let(:schedule) do
- create(:ci_pipeline_schedule,
- project: project,
- owner: project.first_owner,
- description: 'blocked user schedule'
- ).tap do |schedule|
- schedule.update_column(:next_run_at, 1.minute.ago)
- end
- end
-
- before do
- schedule.owner.block!
- PipelineScheduleWorker.new.perform
- end
-
- it 'displays the PipelineSchedule in an inactive state' do
- stub_feature_flags(pipeline_schedules_vue: false)
-
- visit project_pipeline_schedules_path(project)
- page.click_link('Inactive')
-
- expect(page).to have_selector('table.ci-table > tbody > tr > td', text: 'blocked user schedule')
- end
-
- it 'does not create a new Pipeline' do
- visit project_pipelines_path(project)
-
- expect(page).not_to have_selector('.ci-table')
- expect(schedule.last_pipeline).to be_nil
- end
- end
- end
-
- describe 'GET /:project/-/pipelines/:id/builds' do
- before do
- visit builds_project_pipeline_path(project, pipeline)
- end
-
- it 'shows a bridge job on a list' do
- expect(page).to have_content('cross-build')
- expect(page).to have_content(bridge.id)
- end
- end
- end
-
- context 'when build requires resource', :sidekiq_inline do
- let_it_be(:project) { create(:project, :repository) }
-
- let(:pipeline) { create(:ci_pipeline, project: project) }
- let(:resource_group) { create(:ci_resource_group, project: project) }
-
- let!(:test_job) do
- create(:ci_build, :pending, stage: 'test', name: 'test', stage_idx: 1, pipeline: pipeline, project: project)
- end
-
- let!(:deploy_job) do
- create(:ci_build, :created,
- stage: 'deploy',
- name: 'deploy',
- stage_idx: 2,
- pipeline: pipeline,
- project: project,
- resource_group: resource_group)
- end
-
- describe 'GET /:project/-/pipelines/:id' do
- subject { visit project_pipeline_path(project, pipeline) }
-
- it 'shows deploy job as created' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('pending')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[0]) do
- expect(page).to have_content('test')
- expect(page).to have_css('.ci-status-icon-pending')
- end
-
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-created')
- end
- end
- end
-
- context 'when test job succeeded' do
- before do
- test_job.success!
- end
-
- it 'shows deploy job as pending' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('running')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[0]) do
- expect(page).to have_content('test')
- expect(page).to have_css('.ci-status-icon-success')
- end
-
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-pending')
- end
- end
- end
- end
-
- context 'when test job succeeded but there are no available resources' do
- let(:another_job) { create(:ci_build, :running, project: project, resource_group: resource_group) }
-
- before do
- resource_group.assign_resource_to(another_job)
- test_job.success!
- end
-
- it 'shows deploy job as waiting for resource' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('waiting')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-waiting-for-resource')
- end
- end
- end
-
- context 'when resource is released from another job' do
- before do
- another_job.success!
- end
-
- it 'shows deploy job as pending' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('running')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-pending')
- end
- end
- end
- end
-
- context 'when deploy job is a bridge to trigger a downstream pipeline' do
- let!(:deploy_job) do
- create(:ci_bridge, :created,
- stage: 'deploy',
- name: 'deploy',
- stage_idx: 2,
- pipeline: pipeline,
- project: project,
- resource_group: resource_group
- )
- end
-
- it 'shows deploy job as waiting for resource' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('waiting')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-waiting-for-resource')
- end
- end
- end
- end
-
- context 'when deploy job is a bridge to trigger a downstream pipeline' do
- let!(:deploy_job) do
- create(:ci_bridge, :created,
- stage: 'deploy',
- name: 'deploy',
- stage_idx: 2,
- pipeline: pipeline,
- project: project,
- resource_group: resource_group
- )
- end
-
- it 'shows deploy job as waiting for resource' do
- subject
-
- within('.js-pipeline-header-container') do
- expect(page).to have_content('waiting')
- end
-
- within('.js-pipeline-graph') do
- within(all('[data-testid="stage-column"]')[1]) do
- expect(page).to have_content('deploy')
- expect(page).to have_css('.ci-status-icon-waiting-for-resource')
- end
- end
- end
- end
- end
- end
- end
-
- describe 'GET /:project/-/pipelines/:id/dag' do
- include_context 'pipeline builds'
-
- let_it_be(:project) { create(:project, :repository) }
-
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id) }
-
- before do
- visit dag_project_pipeline_path(project, pipeline)
- end
-
- it 'shows DAG tab pane as active' do
- expect(page).to have_css('#js-tab-dag.active', visible: false)
- end
-
- context 'page tabs' do
- it 'shows Pipeline, Jobs and DAG tabs with link' do
- expect(page).to have_link('Pipeline')
- expect(page).to have_link('Jobs')
- expect(page).to have_link('DAG')
- end
-
- it 'shows counter in Jobs tab' do
- expect(page.find('.js-builds-counter').text).to eq(pipeline.total_size.to_s)
- end
-
- it 'shows DAG tab as active' do
- expect(page).to have_css('li.js-dag-tab-link .active')
- end
- end
- end
-
- context 'when user sees pipeline flags in a pipeline detail page' do
- let_it_be(:project) { create(:project, :repository) }
-
- context 'when pipeline is latest' do
- include_context 'pipeline builds'
-
- let(:pipeline) do
- create(:ci_pipeline,
- project: project,
- ref: 'master',
- sha: project.commit.id,
- user: user)
- end
-
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'contains badge that indicates it is the latest build' do
- page.within(all('.well-segment')[1]) do
- expect(page).to have_content 'latest'
- end
- end
- end
-
- context 'when pipeline has configuration errors' do
- let(:pipeline) do
- create(:ci_pipeline,
- :invalid,
- project: project,
- ref: 'master',
- sha: project.commit.id,
- user: user)
- end
-
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'contains badge that indicates errors' do
- page.within(all('.well-segment')[1]) do
- expect(page).to have_content 'yaml invalid'
- end
- end
-
- it 'contains badge with tooltip which contains error' do
- expect(pipeline).to have_yaml_errors
-
- page.within(all('.well-segment')[1]) do
- expect(page).to have_selector(
- %Q{span[title="#{pipeline.yaml_errors}"]})
- end
- end
-
- it 'contains badge that indicates failure reason' do
- expect(page).to have_content 'error'
- end
-
- it 'contains badge with tooltip which contains failure reason' do
- expect(pipeline.failure_reason?).to eq true
-
- page.within(all('.well-segment')[1]) do
- expect(page).to have_selector(
- %Q{span[title="#{pipeline.present.failure_reason}"]})
- end
- end
-
- it 'contains a pipeline header with title' do
- expect(page).to have_content "Pipeline ##{pipeline.id}"
- end
- end
-
- context 'when pipeline is stuck' do
- include_context 'pipeline builds'
-
- let(:pipeline) do
- create(:ci_pipeline,
- project: project,
- ref: 'master',
- sha: project.commit.id,
- user: user)
- end
-
- before do
- create(:ci_build, :pending, pipeline: pipeline)
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'contains badge that indicates being stuck' do
- page.within(all('.well-segment')[1]) do
- expect(page).to have_content 'stuck'
- end
- end
- end
-
- context 'when pipeline uses auto devops' do
- include_context 'pipeline builds'
-
- let(:project) { create(:project, :repository, auto_devops_attributes: { enabled: true }) }
- let(:pipeline) do
- create(:ci_pipeline,
- :auto_devops_source,
- project: project,
- ref: 'master',
- sha: project.commit.id,
- user: user)
- end
-
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'contains badge that indicates using auto devops' do
- page.within(all('.well-segment')[1]) do
- expect(page).to have_content 'Auto DevOps'
- end
- end
- end
-
- context 'when pipeline runs in a merge request context' do
- include_context 'pipeline builds'
-
- let(:pipeline) do
- create(:ci_pipeline,
- source: :merge_request_event,
- project: merge_request.source_project,
- ref: 'feature',
- sha: merge_request.diff_head_sha,
- user: user,
- merge_request: merge_request)
- end
-
- let(:merge_request) do
- create(:merge_request,
- source_project: project,
- source_branch: 'feature',
- target_project: project,
- target_branch: 'master')
- end
-
- before do
- visit project_pipeline_path(project, pipeline)
- end
-
- it 'contains badge that indicates detached merge request pipeline' do
- page.within(all('.well-segment')[1]) do
- expect(page).to have_content 'merge request'
- end
- end
- end
- end
-
- describe 'GET /:project/-/pipelines/:id/builds' do
- include_context 'pipeline builds'
-
- let_it_be(:project) { create(:project, :repository) }
-
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id) }
-
- before do
- visit builds_project_pipeline_path(project, pipeline)
- end
-
- it 'shows a list of jobs' do
- expect(page).to have_content('Test')
- expect(page).to have_content(build_passed.id)
- expect(page).to have_content('Deploy')
- expect(page).to have_content(build_failed.id)
- expect(page).to have_content(build_running.id)
- expect(page).to have_content(build_external.id)
- expect(page).to have_content('Retry')
- expect(page).to have_content('Cancel running')
- expect(page).to have_button('Play')
- end
-
- context 'page tabs' do
- it 'shows Pipeline, Jobs and DAG tabs with link' do
- expect(page).to have_link('Pipeline')
- expect(page).to have_link('Jobs')
- expect(page).to have_link('Needs')
- end
-
- it 'shows counter in Jobs tab' do
- expect(page.find('.js-builds-counter').text).to eq(pipeline.total_size.to_s)
- end
- end
-
- context 'retrying jobs' do
- it { expect(page).not_to have_content('retried') }
-
- context 'when retrying' do
- before do
- find('[data-testid="retry"]', match: :first).click
- end
-
- it 'does not show a "Retry" button', :sidekiq_might_not_need_inline do
- expect(page).not_to have_content('Retry')
- end
- end
- end
-
- context 'canceling jobs' do
- it { expect(page).not_to have_selector('.ci-canceled') }
-
- context 'when canceling' do
- before do
- click_on 'Cancel running'
- end
-
- it 'does not show a "Cancel running" button', :sidekiq_might_not_need_inline do
- expect(page).not_to have_content('Cancel running')
- end
- end
- end
-
- context 'playing manual job' do
- before do
- within '[data-testid="jobs-tab-table"]' do
- click_button('Play')
-
- wait_for_requests
- end
- end
-
- it { expect(build_manual.reload).to be_pending }
- end
-
- context 'when user unschedules a delayed job' do
- before do
- within '[data-testid="jobs-tab-table"]' do
- click_button('Unschedule')
- end
- end
-
- it 'unschedules the delayed job and shows play button as a manual job' do
- expect(page).to have_button('Play')
- expect(page).not_to have_button('Unschedule')
- end
- end
- end
-
- describe 'GET /:project/-/pipelines/:id/failures' do
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: '1234') }
- let(:pipeline_failures_page) { failures_project_pipeline_path(project, pipeline) }
- let!(:failed_build) { create(:ci_build, :failed, pipeline: pipeline) }
-
- subject { visit pipeline_failures_page }
-
- context 'with failed build' do
- before do
- failed_build.trace.set('4 examples, 1 failure')
- end
-
- it 'lists failed builds' do
- subject
-
- expect(page).to have_content(failed_build.name)
- expect(page).to have_content(failed_build.stage_name)
- end
-
- it 'shows build failure logs' do
- subject
-
- expect(page).to have_content('4 examples, 1 failure')
- end
-
- it 'shows the failure reason' do
- subject
-
- expect(page).to have_content('There is an unknown failure, please try again')
- end
-
- context 'when user does not have permission to retry build' do
- it 'shows retry button for failed build' do
- subject
-
- page.within(find('#js-tab-failures', match: :first)) do
- expect(page).not_to have_button('Retry')
- end
- end
- end
-
- context 'when user does have permission to retry build' do
- before do
- create(:protected_branch, :developers_can_merge,
- name: pipeline.ref, project: project)
- end
-
- it 'shows retry button for failed build' do
- subject
-
- page.within(find('#js-tab-failures', match: :first)) do
- expect(page).to have_button('Retry')
- end
- end
- end
- end
-
- context 'when missing build logs' do
- it 'lists failed builds' do
- subject
-
- expect(page).to have_content(failed_build.name)
- expect(page).to have_content(failed_build.stage_name)
- end
-
- it 'does not show log' do
- subject
-
- expect(page).to have_content('No job log')
- end
- end
-
- context 'without permission to access builds' do
- let(:role) { :guest }
-
- before do
- project.update!(public_builds: false)
- end
-
- context 'when accessing failed jobs page' do
- it 'renders a 404 page' do
- requests = inspect_requests { subject }
-
- expect(page).to have_title('Not Found')
- expect(requests.first.status_code).to eq(404)
- end
- end
- end
-
- context 'without failures' do
- before do
- failed_build.update!(status: :success)
- end
-
- it 'does not show the failure tab' do
- subject
-
- expect(page).not_to have_content('Failed Jobs')
- end
-
- it 'displays the pipeline graph' do
- subject
-
- expect(page).to have_current_path(pipeline_path(pipeline), ignore_query: true)
- expect(page).to have_selector('.js-pipeline-graph')
- end
- end
- end
-end
diff --git a/spec/features/projects/pipelines/legacy_pipelines_spec.rb b/spec/features/projects/pipelines/legacy_pipelines_spec.rb
deleted file mode 100644
index 9d3ac71a875..00000000000
--- a/spec/features/projects/pipelines/legacy_pipelines_spec.rb
+++ /dev/null
@@ -1,852 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Pipelines', :js do
- include ProjectForksHelper
- include Spec::Support::Helpers::ModalHelpers
-
- let(:project) { create(:project) }
- let(:expected_detached_mr_tag) { 'merge request' }
-
- context 'when user is logged in' do
- let(:user) { create(:user) }
-
- before do
- sign_in(user)
-
- project.add_developer(user)
- project.update!(auto_devops_attributes: { enabled: false })
-
- stub_feature_flags(pipeline_tabs_vue: false)
- end
-
- describe 'GET /:project/-/pipelines' do
- let(:project) { create(:project, :repository) }
-
- let!(:pipeline) do
- create(
- :ci_empty_pipeline,
- project: project,
- ref: 'master',
- status: 'running',
- sha: project.commit.id
- )
- end
-
- context 'scope' do
- before do
- create(:ci_empty_pipeline, status: 'pending', project: project, sha: project.commit.id, ref: 'master')
- create(:ci_empty_pipeline, status: 'running', project: project, sha: project.commit.id, ref: 'master')
- create(:ci_empty_pipeline, status: 'created', project: project, sha: project.commit.id, ref: 'master')
- create(:ci_empty_pipeline, status: 'success', project: project, sha: project.commit.id, ref: 'master')
- end
-
- [:all, :running, :pending, :finished, :branches].each do |scope|
- context "when displaying #{scope}" do
- before do
- visit_project_pipelines(scope: scope)
- end
-
- it 'contains pipeline commit short SHA' do
- expect(page).to have_content(pipeline.short_sha)
- end
-
- it 'contains branch name' do
- expect(page).to have_content(pipeline.ref)
- end
- end
- end
- end
-
- context 'header tabs' do
- before do
- visit project_pipelines_path(project)
- wait_for_requests
- end
-
- it 'shows a tab for All pipelines and count' do
- expect(page.find('.js-pipelines-tab-all').text).to include('All')
- expect(page.find('.js-pipelines-tab-all .badge').text).to include('1')
- end
-
- it 'shows a tab for Finished pipelines and count' do
- expect(page.find('.js-pipelines-tab-finished').text).to include('Finished')
- end
-
- it 'shows a tab for Branches' do
- expect(page.find('.js-pipelines-tab-branches').text).to include('Branches')
- end
-
- it 'shows a tab for Tags' do
- expect(page.find('.js-pipelines-tab-tags').text).to include('Tags')
- end
-
- it 'updates content when tab is clicked' do
- page.find('.js-pipelines-tab-finished').click
- wait_for_requests
- expect(page).to have_content('There are currently no finished pipelines.')
- end
- end
-
- context 'navigation links' do
- before do
- visit project_pipelines_path(project)
- wait_for_requests
- end
-
- it 'renders "CI lint" link' do
- expect(page).to have_link('CI lint')
- end
-
- it 'renders "Run pipeline" link' do
- expect(page).to have_link('Run pipeline')
- end
- end
-
- context 'when pipeline is cancelable' do
- let!(:build) do
- create(:ci_build, pipeline: pipeline,
- stage: 'test')
- end
-
- before do
- build.run
- visit_project_pipelines
- end
-
- it 'indicates that pipeline can be canceled' do
- expect(page).to have_selector('.js-pipelines-cancel-button')
- expect(page).to have_selector('.ci-running')
- end
-
- context 'when canceling' do
- before do
- find('.js-pipelines-cancel-button').click
- click_button 'Stop pipeline'
- wait_for_requests
- end
-
- 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')
- end
- end
- end
-
- context 'when pipeline is retryable', :sidekiq_might_not_need_inline do
- let!(:build) do
- create(:ci_build, pipeline: pipeline,
- stage: 'test')
- end
-
- before do
- build.drop
- visit_project_pipelines
- end
-
- it 'indicates that pipeline can be retried' do
- expect(page).to have_selector('.js-pipelines-retry-button')
- expect(page).to have_selector('.ci-failed')
- end
-
- context 'when retrying' do
- before do
- find('.js-pipelines-retry-button').click
- wait_for_requests
- end
-
- 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')
- end
- end
- end
-
- context 'when pipeline is detached merge request pipeline' do
- let(:merge_request) do
- create(:merge_request,
- :with_detached_merge_request_pipeline,
- source_project: source_project,
- target_project: target_project)
- end
-
- let!(:pipeline) { merge_request.all_pipelines.first }
- let(:source_project) { project }
- let(:target_project) { project }
-
- before do
- visit project_pipelines_path(source_project)
- end
-
- shared_examples_for 'detached merge request pipeline' do
- it 'shows pipeline information without pipeline ref', :sidekiq_might_not_need_inline do
- within '.pipeline-tags' do
- expect(page).to have_content(expected_detached_mr_tag)
-
- expect(page).to have_link(merge_request.iid,
- href: project_merge_request_path(project, merge_request))
-
- expect(page).not_to have_link(pipeline.ref)
- end
- end
- end
-
- it_behaves_like 'detached merge request pipeline'
-
- context 'when source project is a forked project' do
- let(:source_project) { fork_project(project, user, repository: true) }
-
- it_behaves_like 'detached merge request pipeline'
- end
- end
-
- context 'when pipeline is merge request pipeline' do
- let(:merge_request) do
- create(:merge_request,
- :with_merge_request_pipeline,
- source_project: source_project,
- target_project: target_project,
- merge_sha: target_project.commit.sha)
- end
-
- let!(:pipeline) { merge_request.all_pipelines.first }
- let(:source_project) { project }
- let(:target_project) { project }
-
- before do
- visit project_pipelines_path(source_project)
- end
-
- shared_examples_for 'Correct merge request pipeline information' do
- it 'does not show detached tag for the pipeline, and shows the link of the merge request' \
- 'and does not show the ref of the pipeline', :sidekiq_might_not_need_inline do
- within '.pipeline-tags' do
- expect(page).not_to have_content(expected_detached_mr_tag)
-
- expect(page).to have_link(merge_request.iid,
- href: project_merge_request_path(project, merge_request))
-
- expect(page).not_to have_link(pipeline.ref)
- end
- end
- end
-
- it_behaves_like 'Correct merge request pipeline information'
-
- context 'when source project is a forked project' do
- let(:source_project) { fork_project(project, user, repository: true) }
-
- it_behaves_like 'Correct merge request pipeline information'
- end
- end
-
- context 'when pipeline has configuration errors' do
- let(:pipeline) do
- create(:ci_pipeline, :invalid, project: project)
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'contains badge that indicates errors' do
- expect(page).to have_content 'yaml invalid'
- end
-
- it 'contains badge with tooltip which contains error' do
- expect(pipeline).to have_yaml_errors
- expect(page).to have_selector(
- %Q{span[title="#{pipeline.yaml_errors}"]})
- end
-
- it 'contains badge that indicates failure reason' do
- expect(page).to have_content 'error'
- end
-
- it 'contains badge with tooltip which contains failure reason' do
- expect(pipeline.failure_reason?).to eq true
- expect(page).to have_selector(
- %Q{span[title="#{pipeline.present.failure_reason}"]})
- end
- end
-
- context 'with manual actions' do
- let!(:manual) do
- create(:ci_build, :manual,
- pipeline: pipeline,
- name: 'manual build',
- stage: 'test')
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'has a dropdown with play button' do
- expect(page).to have_selector('[data-testid="pipelines-manual-actions-dropdown"] [data-testid="play-icon"]')
- end
-
- it 'has link to the manual action' do
- find('[data-testid="pipelines-manual-actions-dropdown"]').click
-
- expect(page).to have_button('manual build')
- end
-
- context 'when manual action was played' do
- before do
- find('[data-testid="pipelines-manual-actions-dropdown"]').click
- click_button('manual build')
- end
-
- it 'enqueues manual action job' do
- expect(page).to have_selector(
- '[data-testid="pipelines-manual-actions-dropdown"] .gl-dropdown-toggle:disabled'
- )
- end
- end
- end
-
- context 'when there is a delayed job' do
- let!(:delayed_job) do
- create(:ci_build, :scheduled,
- pipeline: pipeline,
- name: 'delayed job 1',
- stage: 'test')
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'has a dropdown for actionable jobs' do
- expect(page).to have_selector('[data-testid="pipelines-manual-actions-dropdown"] [data-testid="play-icon"]')
- end
-
- it "has link to the delayed job's action" do
- find('[data-testid="pipelines-manual-actions-dropdown"]').click
-
- time_diff = [0, delayed_job.scheduled_at - Time.zone.now].max
- expect(page).to have_button('delayed job 1')
- expect(page).to have_content(Time.at(time_diff).utc.strftime("%H:%M:%S"))
- end
-
- context 'when delayed job is expired already' do
- let!(:delayed_job) do
- create(:ci_build, :expired_scheduled,
- pipeline: pipeline,
- name: 'delayed job 1',
- stage: 'test')
- end
-
- it "shows 00:00:00 as the remaining time" do
- find('[data-testid="pipelines-manual-actions-dropdown"]').click
-
- expect(page).to have_content("00:00:00")
- end
- end
-
- context 'when user played a delayed job immediately' do
- before do
- find('[data-testid="pipelines-manual-actions-dropdown"]').click
- accept_gl_confirm do
- click_button 'delayed job 1'
- end
- wait_for_requests
- end
-
- it 'enqueues the delayed job', :js do
- find('[data-testid="mini-pipeline-graph-dropdown"]').click
-
- within('[data-testid="mini-pipeline-graph-dropdown"]') { find('.ci-status-icon-pending') }
-
- expect(delayed_job.reload).to be_pending
- end
- end
- end
-
- context 'for generic statuses' do
- context 'when preparing' do
- let!(:pipeline) do
- create(:ci_empty_pipeline,
- status: 'preparing', project: project)
- end
-
- let!(:status) do
- create(:generic_commit_status,
- :preparing, pipeline: pipeline)
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'is cancelable' do
- expect(page).to have_selector('.js-pipelines-cancel-button')
- end
-
- it 'shows the pipeline as preparing' do
- expect(page).to have_selector('.ci-preparing')
- end
- end
-
- context 'when running' do
- let!(:running) do
- create(:generic_commit_status,
- status: 'running',
- pipeline: pipeline,
- stage: 'test')
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'is cancelable' do
- expect(page).to have_selector('.js-pipelines-cancel-button')
- end
-
- it 'has pipeline running' do
- expect(page).to have_selector('.ci-running')
- end
-
- context 'when canceling' do
- before do
- find('.js-pipelines-cancel-button').click
- click_button 'Stop pipeline'
- end
-
- 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')
- end
- end
- end
-
- context 'when failed' do
- let!(:status) do
- create(:generic_commit_status, :pending,
- pipeline: pipeline,
- stage: 'test')
- end
-
- before do
- status.drop
- visit_project_pipelines
- end
-
- it 'is not retryable' do
- expect(page).not_to have_selector('.js-pipelines-retry-button')
- end
-
- it 'has failed pipeline', :sidekiq_might_not_need_inline do
- expect(page).to have_selector('.ci-failed')
- end
- end
- end
-
- context 'downloadable pipelines' do
- context 'with artifacts' do
- let!(:with_artifacts) do
- build = create(:ci_build, :success,
- pipeline: pipeline,
- name: 'rspec tests',
- stage: 'test')
-
- create(:ci_job_artifact, :codequality, job: build)
- end
-
- before do
- visit_project_pipelines
- end
-
- it 'has artifacts dropdown' do
- expect(page).to have_selector('[data-testid="pipeline-multi-actions-dropdown"]')
- end
- end
-
- context 'with artifacts expired' do
- let!(:with_artifacts_expired) do
- create(:ci_build, :expired, :success,
- pipeline: pipeline,
- name: 'rspec',
- stage: 'test')
- end
-
- before do
- visit_project_pipelines
- end
-
- it { expect(page).not_to have_selector('[data-testid="artifact-item"]') }
- end
-
- context 'without artifacts' do
- let!(:without_artifacts) do
- create(:ci_build, :success,
- pipeline: pipeline,
- name: 'rspec',
- stage: 'test')
- end
-
- before do
- visit_project_pipelines
- end
-
- it { expect(page).not_to have_selector('[data-testid="artifact-item"]') }
- end
-
- context 'with trace artifact' do
- before do
- create(:ci_build, :success, :trace_artifact, pipeline: pipeline)
-
- visit_project_pipelines
- end
-
- it 'does not show trace artifact as artifacts' do
- expect(page).not_to have_selector('[data-testid="artifact-item"]')
- end
- end
- end
-
- context 'mini pipeline graph' do
- let!(:build) do
- create(:ci_build, :pending, pipeline: pipeline,
- stage: 'build',
- name: 'build')
- end
-
- dropdown_selector = '[data-testid="mini-pipeline-graph-dropdown"]'
-
- before do
- visit_project_pipelines
- end
-
- it 'renders a mini pipeline graph' do
- expect(page).to have_selector('[data-testid="pipeline-mini-graph"]')
- expect(page).to have_selector(dropdown_selector)
- end
-
- context 'when clicking a stage badge' do
- it 'opens a dropdown' do
- find(dropdown_selector).click
-
- expect(page).to have_link build.name
- end
-
- it 'is possible to cancel pending build' do
- find(dropdown_selector).click
- find('.js-ci-action').click
- wait_for_requests
-
- expect(build.reload).to be_canceled
- end
- end
-
- context 'for a failed pipeline' do
- let!(:build) do
- create(:ci_build, :failed, pipeline: pipeline,
- stage: 'build',
- name: 'build')
- end
-
- it 'displays the failure reason' do
- find(dropdown_selector).click
-
- within('.js-builds-dropdown-list') do
- build_element = page.find('.mini-pipeline-graph-dropdown-item')
- expect(build_element['title']).to eq('build - failed - (unknown failure)')
- end
- end
- end
- end
-
- context 'with pagination' do
- before do
- allow(Ci::Pipeline).to receive(:default_per_page).and_return(1)
- create(:ci_empty_pipeline, project: project)
- end
-
- it 'renders pagination' do
- visit project_pipelines_path(project)
- wait_for_requests
-
- expect(page).to have_selector('.gl-pagination')
- end
-
- it 'renders second page of pipelines' do
- visit project_pipelines_path(project, page: '2')
- wait_for_requests
-
- expect(page).to have_selector('.gl-pagination .page-link', count: 4)
- end
-
- it 'shows updated content' do
- visit project_pipelines_path(project)
- wait_for_requests
- page.find('.page-link.next-page-item').click
-
- expect(page).to have_selector('.gl-pagination .page-link', count: 4)
- end
- end
-
- context 'with pipeline key selection' do
- before do
- visit project_pipelines_path(project)
- wait_for_requests
- end
-
- it 'changes the Pipeline ID column for Pipeline IID' do
- page.find('[data-testid="pipeline-key-dropdown"]').click
-
- within '.gl-new-dropdown-contents' do
- dropdown_options = page.find_all '.gl-new-dropdown-item'
-
- dropdown_options[1].click
- end
-
- expect(page.find('[data-testid="pipeline-th"]')).to have_content 'Pipeline'
- expect(page.find('[data-testid="pipeline-url-link"]')).to have_content "##{pipeline.iid}"
- end
- end
- end
-
- describe 'GET /:project/-/pipelines/show' do
- let(:project) { create(:project, :repository) }
-
- let(:pipeline) do
- create(:ci_empty_pipeline,
- project: project,
- sha: project.commit.id,
- user: user)
- end
-
- before do
- create_build('build', 0, 'build', :success)
- create_build('test', 1, 'rspec 0:2', :pending)
- create_build('test', 1, 'rspec 1:2', :running)
- create_build('test', 1, 'spinach 0:2', :created)
- create_build('test', 1, 'spinach 1:2', :created)
- create_build('test', 1, 'audit', :created)
- create_build('deploy', 2, 'production', :created)
-
- create(
- :generic_commit_status,
- pipeline: pipeline,
- stage: 'external',
- name: 'jenkins',
- stage_idx: 3,
- ref: 'master'
- )
-
- visit project_pipeline_path(project, pipeline)
- wait_for_requests
- end
-
- it 'shows a graph with grouped stages' do
- expect(page).to have_css('.js-pipeline-graph')
-
- # header
- expect(page).to have_text("##{pipeline.id}")
- expect(page).to have_selector(%Q(img[src="#{pipeline.user.avatar_url}"]))
- expect(page).to have_link(pipeline.user.name, href: user_path(pipeline.user))
-
- # stages
- expect(page).to have_text('build')
- expect(page).to have_text('test')
- expect(page).to have_text('deploy')
- expect(page).to have_text('external')
-
- # builds
- expect(page).to have_text('rspec')
- expect(page).to have_text('spinach')
- expect(page).to have_text('rspec')
- expect(page).to have_text('production')
- expect(page).to have_text('jenkins')
- end
-
- def create_build(stage, stage_idx, name, status)
- create(:ci_build, pipeline: pipeline, stage: stage, stage_idx: stage_idx, name: name, status: status)
- end
- end
-
- describe 'POST /:project/-/pipelines' do
- let(:project) { create(:project, :repository) }
-
- before do
- stub_feature_flags(run_pipeline_graphql: false)
- visit new_project_pipeline_path(project)
- end
-
- context 'for valid commit', :js do
- before do
- click_button project.default_branch
- wait_for_requests
-
- find('p', text: 'master').click
- wait_for_requests
- end
-
- context 'with gitlab-ci.yml', :js do
- before do
- stub_ci_pipeline_to_return_yaml_file
- end
-
- it 'creates a new pipeline' do
- expect do
- click_on 'Run pipeline'
- wait_for_requests
- end
- .to change { Ci::Pipeline.count }.by(1)
-
- expect(Ci::Pipeline.last).to be_web
- end
-
- context 'when variables are specified' do
- it 'creates a new pipeline with variables' do
- page.within(find("[data-testid='ci-variable-row']")) do
- find("[data-testid='pipeline-form-ci-variable-key']").set('key_name')
- find("[data-testid='pipeline-form-ci-variable-value']").set('value')
- end
-
- expect do
- click_on 'Run pipeline'
- wait_for_requests
- end
- .to change { Ci::Pipeline.count }.by(1)
-
- expect(Ci::Pipeline.last.variables.map { |var| var.slice(:key, :secret_value) })
- .to eq [{ key: "key_name", secret_value: "value" }.with_indifferent_access]
- end
- end
- end
-
- context 'without gitlab-ci.yml' do
- before do
- click_on 'Run pipeline'
- wait_for_requests
- end
-
- it { expect(page).to have_content('Missing CI config file') }
-
- it 'creates a pipeline after first request failed and a valid gitlab-ci.yml file' \
- 'is available when trying again' do
- stub_ci_pipeline_to_return_yaml_file
-
- expect do
- click_on 'Run pipeline'
- wait_for_requests
- end
- .to change { Ci::Pipeline.count }.by(1)
- end
- end
- end
- end
-
- describe 'Reset runner caches' do
- let(:project) { create(:project, :repository) }
-
- before do
- create(:ci_empty_pipeline, status: 'success', project: project, sha: project.commit.id, ref: 'master')
- project.add_maintainer(user)
- visit project_pipelines_path(project)
- end
-
- it 'has a clear caches button' do
- expect(page).to have_button 'Clear runner caches'
- end
-
- describe 'user clicks the button' do
- context 'when project already has jobs_cache_index' do
- before do
- project.update!(jobs_cache_index: 1)
- end
-
- it 'increments jobs_cache_index' do
- click_button 'Clear runner caches'
- wait_for_requests
- expect(page.find('[data-testid="alert-info"]')).to have_content 'Project cache successfully reset.'
- end
- end
-
- context 'when project does not have jobs_cache_index' do
- it 'sets jobs_cache_index to 1' do
- click_button 'Clear runner caches'
- wait_for_requests
- expect(page.find('[data-testid="alert-info"]')).to have_content 'Project cache successfully reset.'
- end
- end
- end
- end
-
- describe 'Run Pipelines' do
- let(:project) { create(:project, :repository) }
-
- before do
- visit new_project_pipeline_path(project)
- end
-
- describe 'new pipeline page' do
- it 'has field to add a new pipeline' do
- expect(page).to have_selector('[data-testid="ref-select"]')
- expect(find('[data-testid="ref-select"]')).to have_content project.default_branch
- expect(page).to have_content('Run for')
- end
- end
-
- describe 'find pipelines' do
- it 'shows filtered pipelines', :js do
- click_button project.default_branch
-
- page.within '[data-testid="ref-select"]' do
- find('[data-testid="search-refs"]').native.send_keys('fix')
-
- page.within '.gl-new-dropdown-contents' do
- expect(page).to have_content('fix')
- end
- end
- end
- end
- end
-
- describe 'Empty State' do
- let(:project) { create(:project, :repository) }
-
- before do
- visit project_pipelines_path(project)
- end
-
- it 'renders empty state' do
- expect(page).to have_content 'Try test template'
- end
- end
- end
-
- context 'when user is not logged in' do
- before do
- project.update!(auto_devops_attributes: { enabled: false })
- visit project_pipelines_path(project)
- end
-
- context 'when project is public' do
- let(:project) { create(:project, :public, :repository) }
-
- context 'without pipelines' do
- it { expect(page).to have_content 'This project is not currently set up to run pipelines.' }
- end
- end
-
- context 'when project is private' do
- let(:project) { create(:project, :private, :repository) }
-
- it 'redirects the user to sign_in and displays the flash alert' do
- expect(page).to have_content 'You need to sign in'
- expect(page).to have_current_path("/users/sign_in")
- end
- end
- end
-
- def visit_project_pipelines(**query)
- visit project_pipelines_path(project, query)
- wait_for_requests
- end
-end
diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb
index 2d729af513a..d6067e22952 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 do
+RSpec.describe 'Pipeline', :js, feature_category: :projects do
include RoutesHelpers
include ProjectForksHelper
include ::ExclusiveLeaseHelpers
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index b7b715cb6db..3bdabd672c7 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 do
+RSpec.describe 'Pipelines', :js, feature_category: :projects do
include ProjectForksHelper
include Spec::Support::Helpers::ModalHelpers
@@ -596,8 +596,8 @@ RSpec.describe 'Pipelines', :js do
it 'changes the Pipeline ID column for Pipeline IID' do
page.find('[data-testid="pipeline-key-dropdown"]').click
- within '.gl-new-dropdown-contents' do
- dropdown_options = page.find_all '.gl-new-dropdown-item'
+ within '.gl-dropdown-contents' do
+ dropdown_options = page.find_all '.gl-dropdown-item'
dropdown_options[1].click
end
@@ -663,7 +663,19 @@ RSpec.describe 'Pipelines', :js do
describe 'POST /:project/-/pipelines' do
let(:project) { create(:project, :repository) }
- shared_examples 'run pipeline form with gitlab-ci.yml' do
+ before do
+ visit new_project_pipeline_path(project)
+ end
+
+ context 'for valid commit', :js do
+ before do
+ click_button project.default_branch
+ wait_for_requests
+
+ find('p', text: 'master').click
+ wait_for_requests
+ end
+
context 'with gitlab-ci.yml', :js do
before do
stub_ci_pipeline_to_return_yaml_file
@@ -680,7 +692,7 @@ RSpec.describe 'Pipelines', :js do
end
context 'when variables are specified' do
- it 'creates a new pipeline with variables' do
+ it 'creates a new pipeline with variables', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/375552' do
page.within(find("[data-testid='ci-variable-row']")) do
find("[data-testid='pipeline-form-ci-variable-key']").set('key_name')
find("[data-testid='pipeline-form-ci-variable-value']").set('value')
@@ -697,9 +709,7 @@ RSpec.describe 'Pipelines', :js do
end
end
end
- end
- shared_examples 'run pipeline form without gitlab-ci.yml' do
context 'without gitlab-ci.yml' do
before do
click_on 'Run pipeline'
@@ -708,7 +718,7 @@ RSpec.describe 'Pipelines', :js do
it { expect(page).to have_content('Missing CI config file') }
- it 'creates a pipeline after first request failed and a valid gitlab-ci.yml file is available when trying again' do
+ it 'creates a pipeline after first request failed and a valid gitlab-ci.yml file is available when trying again', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/375552' do
stub_ci_pipeline_to_return_yaml_file
expect do
@@ -719,52 +729,6 @@ RSpec.describe 'Pipelines', :js do
end
end
end
-
- # Run Pipeline form with REST endpoints
- # TODO: Clean up tests when run_pipeline_graphql is enabled
- # Issue https://gitlab.com/gitlab-org/gitlab/-/issues/372310
- context 'with feature flag disabled' do
- before do
- stub_feature_flags(run_pipeline_graphql: false)
- visit new_project_pipeline_path(project)
- end
-
- context 'for valid commit', :js do
- before do
- click_button project.default_branch
- wait_for_requests
-
- find('p', text: 'master').click
- wait_for_requests
- end
-
- it_behaves_like 'run pipeline form with gitlab-ci.yml'
-
- it_behaves_like 'run pipeline form without gitlab-ci.yml'
- end
- end
-
- # Run Pipeline form with GraphQL
- context 'with feature flag enabled' do
- before do
- stub_feature_flags(run_pipeline_graphql: true)
- visit new_project_pipeline_path(project)
- end
-
- context 'for valid commit', :js do
- before do
- click_button project.default_branch
- wait_for_requests
-
- find('p', text: 'master').click
- wait_for_requests
- end
-
- it_behaves_like 'run pipeline form with gitlab-ci.yml'
-
- it_behaves_like 'run pipeline form without gitlab-ci.yml'
- end
- end
end
describe 'Reset runner caches' do
@@ -825,7 +789,7 @@ RSpec.describe 'Pipelines', :js do
page.within '[data-testid="ref-select"]' do
find('[data-testid="search-refs"]').native.send_keys('fix')
- page.within '.gl-new-dropdown-contents' do
+ page.within '.gl-dropdown-contents' do
expect(page).to have_content('fix')
end
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 6745eb1a3fb..fb7814285b8 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' do
+RSpec.describe 'Projects > Raw > User interacts with raw endpoint', feature_category: :projects do
include RepoHelpers
let(:user) { create(:user) }
diff --git a/spec/features/projects/releases/user_creates_release_spec.rb b/spec/features/projects/releases/user_creates_release_spec.rb
index 4eb7581222e..f678d77b002 100644
--- a/spec/features/projects/releases/user_creates_release_spec.rb
+++ b/spec/features/projects/releases/user_creates_release_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates release', :js do
+RSpec.describe 'User creates release', :js, feature_category: :continuous_delivery do
include Spec::Support::Helpers::Features::ReleasesHelpers
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/releases/user_views_edit_release_spec.rb b/spec/features/projects/releases/user_views_edit_release_spec.rb
index 78b9798941a..ef3b35837ff 100644
--- a/spec/features/projects/releases/user_views_edit_release_spec.rb
+++ b/spec/features/projects/releases/user_views_edit_release_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edits Release', :js do
+RSpec.describe 'User edits Release', :js, feature_category: :continuous_delivery do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/releases/user_views_release_spec.rb b/spec/features/projects/releases/user_views_release_spec.rb
index 4410f345e56..efa0ebd761d 100644
--- a/spec/features/projects/releases/user_views_release_spec.rb
+++ b/spec/features/projects/releases/user_views_release_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views Release', :js do
+RSpec.describe 'User views Release', :js, feature_category: :continuous_delivery do
let(:project) { create(:project, :repository) }
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 10418e8072d..13dde57d885 100644
--- a/spec/features/projects/releases/user_views_releases_spec.rb
+++ b/spec/features/projects/releases/user_views_releases_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User views releases', :js do
+RSpec.describe 'User views releases', :js, feature_category: :continuous_delivery do
let_it_be(:today) { Time.zone.now }
let_it_be(:yesterday) { today - 1.day }
let_it_be(:tomorrow) { today + 1.day }
diff --git a/spec/features/projects/remote_mirror_spec.rb b/spec/features/projects/remote_mirror_spec.rb
index 2c8e895d43d..aa0c1ead4c0 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 do
+RSpec.describe 'Project remote mirror', :feature, feature_category: :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/access_tokens_spec.rb b/spec/features/projects/settings/access_tokens_spec.rb
index 88f9a50b093..12e14f5193f 100644
--- a/spec/features/projects/settings/access_tokens_spec.rb
+++ b/spec/features/projects/settings/access_tokens_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > Settings > Access Tokens', :js do
+RSpec.describe 'Project > Settings > Access Tokens', :js, feature_category: :credential_management do
include Spec::Support::Helpers::ModalHelpers
let_it_be(: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 fdd883bc2b6..5d82dff1efd 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 do
+RSpec.describe 'Project settings > repositories > Branch names', :js, feature_category: :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 5cc35f108b5..71d9c559b77 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' do
+RSpec.describe 'Projects > Settings > Repository > Branch rules settings', feature_category: :projects do
let(:project) { create(:project_empty_repo) }
let(:user) { create(:user) }
let(:role) { :developer }
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 c236c85b773..a99fd5f9788 100644
--- a/spec/features/projects/settings/external_authorization_service_settings_spec.rb
+++ b/spec/features/projects/settings/external_authorization_service_settings_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > External Authorization Classification Label setting' do
+RSpec.describe 'Projects > Settings > External Authorization Classification Label setting',
+feature_category: :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 04fb6953b51..28d5c080db9 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 do
+RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :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 6e1be3c7e51..1695b49830d 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' do
+RSpec.describe 'Projects > Settings > LFS settings', feature_category: :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 ba84d8b6d1a..ca90817b0a4 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' do
+RSpec.describe 'Projects > Settings > Merge requests', feature_category: :projects do
include ProjectForksHelper
let(:user) { create(:user) }
diff --git a/spec/features/projects/settings/monitor_settings_spec.rb b/spec/features/projects/settings/monitor_settings_spec.rb
index 871391fbe9c..2cdcf86757e 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 do
+RSpec.describe 'Projects > Settings > For a forked project', :js, feature_category: :projects do
let_it_be(:project) { create(:project, :repository, create_templates: :issue) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/settings/packages_settings_spec.rb b/spec/features/projects/settings/packages_settings_spec.rb
index 1c2b0faa215..4ef17830f81 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 do
+RSpec.describe 'Projects > Settings > Packages', :js, feature_category: :projects do
let_it_be(:project) { create(:project) }
let(:user) { project.first_owner }
@@ -33,6 +33,10 @@ RSpec.describe 'Projects > Settings > Packages', :js do
it 'displays the packages access level setting' do
expect(page).to have_selector('[data-testid="package-registry-access-level"] > label', text: 'Package registry')
+ expect(page).to have_selector('input[name="package_registry_enabled"]', visible: false)
+ expect(page).to have_selector('input[name="package_registry_enabled"] + button', visible: true)
+ expect(page).to have_selector('input[name="package_registry_api_for_everyone_enabled"]', visible: false)
+ expect(page).to have_selector('input[name="package_registry_api_for_everyone_enabled"] + button', visible: true)
expect(page).to have_selector(
'input[name="project[project_feature_attributes][package_registry_access_level]"]',
visible: false
diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb
index a64f81430d1..37973c9b8d6 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" do
+RSpec.describe "Projects > Settings > Pipelines settings", feature_category: :projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:role) { :developer }
@@ -165,7 +165,7 @@ RSpec.describe "Projects > Settings > Pipelines settings" do
let(:page_token) { find('#registration_token').text }
before do
- click_button 'Reset registration token'
+ click_link 'Reset registration token'
end
it 'changes registration token' do
diff --git a/spec/features/projects/settings/project_badges_spec.rb b/spec/features/projects/settings/project_badges_spec.rb
index 2c26168e3c0..f4c2265c2c2 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' do
+RSpec.describe 'Project Badges', feature_category: :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 a0d44b579a8..46a41cfc6f1 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' do
+RSpec.describe 'Projects settings', feature_category: :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 477c4c2e1ba..d4c1fe4d43e 100644
--- a/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb
+++ b/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy' do
+RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy',
+feature_category: :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 d64570cd5cc..072b5f7f3b0 100644
--- a/spec/features/projects/settings/registry_settings_spec.rb
+++ b/spec/features/projects/settings/registry_settings_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy' do
+RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy',
+feature_category: :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 d73ff0284cd..6f0a3094849 100644
--- a/spec/features/projects/settings/repository_settings_spec.rb
+++ b/spec/features/projects/settings/repository_settings_spec.rb
@@ -2,12 +2,13 @@
require 'spec_helper'
-RSpec.describe 'Projects > Settings > Repository settings' do
+RSpec.describe 'Projects > Settings > Repository settings', feature_category: :projects do
let(:project) { create(:project_empty_repo) }
let(:user) { create(:user) }
let(:role) { :developer }
before do
+ stub_feature_flags(branch_rules: false)
project.add_role(user, role)
sign_in(user)
end
@@ -39,19 +40,18 @@ RSpec.describe 'Projects > Settings > Repository settings' do
end
context 'Branch rules', :js do
- it 'renders branch rules settings' do
- visit project_settings_repository_path(project)
- expect(page).to have_content('Branch rules')
- end
-
context 'branch_rules feature flag disabled', :js do
it 'does not render branch rules settings' do
- stub_feature_flags(branch_rules: false)
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
end
context 'Deploy Keys', :js do
@@ -164,13 +164,7 @@ RSpec.describe 'Projects > Settings > Repository settings' do
end
project.reload
-
- # TODO: The following line is skipped because a toast with
- # "An error occurred while loading branch rules. Please try again."
- # shows up right after which hides the below message. It is causing flakiness.
- # https://gitlab.com/gitlab-org/gitlab/-/issues/383717#note_1185091998
-
- # expect(page).to have_content('Mirroring settings were successfully updated')
+ expect(page).to have_content('Mirroring settings were successfully updated')
expect(project.remote_mirrors.first.only_protected_branches).to eq(false)
end
@@ -190,13 +184,7 @@ RSpec.describe 'Projects > Settings > Repository settings' do
end
project.reload
-
- # TODO: The following line is skipped because a toast with
- # "An error occurred while loading branch rules. Please try again."
- # shows up right after which hides the below message. It is causing flakiness.
- # https://gitlab.com/gitlab-org/gitlab/-/issues/383717#note_1185091998
-
- # expect(page).to have_content('Mirroring settings were successfully updated')
+ expect(page).to have_content('Mirroring settings were successfully updated')
expect(project.remote_mirrors.first.only_protected_branches).to eq(true)
end
@@ -213,7 +201,12 @@ RSpec.describe 'Projects > Settings > Repository settings' do
click_button 'Mirror repository'
end
- expect(page).to have_content('Mirroring settings were successfully updated')
+ # TODO: The following line is skipped because a toast with
+ # "An error occurred while loading branch rules. Please try again."
+ # shows up right after which hides the below message. It is causing flakiness.
+ # https://gitlab.com/gitlab-org/gitlab/-/issues/383717#note_1185091998
+
+ # expect(page).to have_content('Mirroring settings were successfully updated')
expect(project.reload.remote_mirrors.first.keep_divergent_refs).to eq(true)
end
@@ -229,7 +222,12 @@ RSpec.describe 'Projects > Settings > Repository settings' do
click_button 'Mirror repository'
end
- expect(page).to have_content('Mirroring settings were successfully updated')
+ # TODO: The following line is skipped because a toast with
+ # "An error occurred while loading branch rules. Please try again."
+ # shows up right after which hides the below message. It is causing flakiness.
+ # https://gitlab.com/gitlab-org/gitlab/-/issues/383717#note_1185091998
+
+ # expect(page).to have_content('Mirroring settings were successfully updated')
expect(page).to have_selector('[title="Copy SSH public key"]')
end
@@ -272,7 +270,6 @@ RSpec.describe 'Projects > Settings > Repository settings' do
click_button 'Start cleanup'
end
end
-
expect(page).to have_content('Repository cleanup has started')
expect(RepositoryCleanupWorker.jobs.count).to eq(1)
end
diff --git a/spec/features/projects/settings/secure_files_spec.rb b/spec/features/projects/settings/secure_files_spec.rb
index ee38acf1953..9afe1f4de54 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 do
+RSpec.describe 'Secure Files', :js, feature_category: :projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
@@ -12,31 +12,10 @@ RSpec.describe 'Secure Files', :js do
sign_in(user)
end
- context 'when the :ci_secure_files feature flag is enabled' do
- before do
- stub_feature_flags(ci_secure_files: true)
-
- visit project_settings_ci_cd_path(project)
- end
-
- context 'authenticated user with admin permissions' do
- it 'shows the secure files settings' do
- expect(page).to have_content('Secure Files')
- end
- end
- end
-
- context 'when the :ci_secure_files feature flag is disabled' do
- before do
- stub_feature_flags(ci_secure_files: false)
-
+ context 'authenticated user with admin permissions' do
+ it 'shows the secure files settings' do
visit project_settings_ci_cd_path(project)
- end
-
- context 'authenticated user with admin permissions' do
- it 'does not shows the secure files settings' do
- expect(page).not_to have_content('Secure Files')
- end
+ expect(page).to have_content('Secure Files')
end
end
diff --git a/spec/features/projects/settings/service_desk_setting_spec.rb b/spec/features/projects/settings/service_desk_setting_spec.rb
index 86c5c3d2d8c..859c738731b 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 do
+RSpec.describe 'Service Desk Setting', :js, :clean_gitlab_redis_cache, feature_category: :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/user_archives_project_spec.rb b/spec/features/projects/settings/user_archives_project_spec.rb
index 03ea9e7c580..a6aac02d272 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' do
+RSpec.describe 'Projects > Settings > User archives a project', feature_category: :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 92d5b4c1fcd..87043aec9b6 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' do
+RSpec.describe 'Projects > Settings > User changes avatar', feature_category: :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 bf064839bd7..39704fdbbb2 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' do
+RSpec.describe 'Projects > Settings > User changes default branch', feature_category: :projects do
let(:user) { create(:user) }
before do
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 0fc12f93850..3a58de9aa7d 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 do
+RSpec.describe "User interacts with deploy keys", :js, feature_category: :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 c76b4d0af88..cfefdd54c23 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' do
+RSpec.describe 'Projects > Settings > User manages merge request settings', feature_category: :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 1d258582b3a..ee832da48d9 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' do
+RSpec.describe 'Projects > Settings > User manages project members', feature_category: :projects do
include Spec::Support::Helpers::Features::MembersHelpers
include Spec::Support::Helpers::ModalHelpers
@@ -51,8 +51,6 @@ RSpec.describe 'Projects > Settings > User manages project members' do
click_button 'Import project members'
wait_for_requests
- page.refresh
-
expect(find_member_row(user_mike)).to have_content('Reporter')
end
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 2e2d7119e2e..2da6e760fbf 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' do
+RSpec.describe 'Projects > Settings > User renames a project', feature_category: :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 7ed96d01189..8a11507d064 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 do
+RSpec.describe 'User searches project settings', :js, feature_category: :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 47383be1ba1..65aed4fd06f 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 do
+RSpec.describe 'Repository Settings > User sees revoke deploy token modal', :js, feature_category: :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 e9a2aa29352..43e8e5a2d38 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 do
+RSpec.describe 'Projects > Settings > User tags a project', :js, feature_category: :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 23e10a36cee..53b4ee881f9 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 do
+RSpec.describe 'Projects > Settings > User transfers a project', :js, feature_category: :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 5cb12544066..5246eda976b 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 do
+RSpec.describe 'Projects > Settings > Visibility settings', :js, feature_category: :projects do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace, visibility_level: 20) }
@@ -28,26 +28,6 @@ RSpec.describe 'Projects > Settings > Visibility settings', :js do
expect(visibility_select_container).to have_content 'Only accessible by project members. Membership must be explicitly granted to each user.'
end
- context 'builds select' do
- it 'hides builds select section' do
- find('.project-feature-controls[data-for="project[project_feature_attributes][builds_access_level]"] .gl-toggle').click
-
- visit project_settings_merge_requests_path(project)
-
- expect(page).to have_selector('.builds-feature', visible: false)
- end
-
- context 'given project with builds_disabled access level' do
- let(:project) { create(:project, :builds_disabled, namespace: user.namespace) }
-
- it 'hides builds select section' do
- visit project_settings_merge_requests_path(project)
-
- expect(page).to have_selector('.builds-feature', visible: false)
- end
- end
- end
-
context 'disable email notifications' do
it 'is visible' do
expect(page).to have_selector('.js-emails-disabled', visible: true)
diff --git a/spec/features/projects/settings/webhooks_settings_spec.rb b/spec/features/projects/settings/webhooks_settings_spec.rb
index adbf2f6ee5c..8d22d84b9c9 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' do
+RSpec.describe 'Projects > Settings > Webhook Settings', feature_category: :projects do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:webhooks_path) { project_hooks_path(project) }
@@ -41,54 +41,28 @@ RSpec.describe 'Projects > Settings > Webhook Settings' do
expect(page).to have_content('Tag push events')
expect(page).to have_content('Issues events')
expect(page).to have_content('Confidential issues events')
- expect(page).to have_content('Note events')
- expect(page).to have_content('Merge requests events')
+ expect(page).to have_content('Comment')
+ expect(page).to have_content('Merge request events')
expect(page).to have_content('Pipeline events')
expect(page).to have_content('Wiki page events')
expect(page).to have_content('Releases events')
end
- context 'when feature flag "enhanced_webhook_support_regex" is disabled' do
- before do
- stub_feature_flags(enhanced_webhook_support_regex: false)
- end
-
- it 'create webhook', :js do
- visit webhooks_path
-
- fill_in 'URL', with: url
- check 'Tag push events'
- fill_in 'hook_push_events_branch_filter', with: 'master'
- check 'Enable SSL verification'
- check 'Job events'
-
- click_button 'Add webhook'
-
- expect(page).to have_content(url)
- expect(page).to have_content('SSL Verification: enabled')
- expect(page).to have_content('Tag push events')
- expect(page).to have_content('Job events')
- expect(page).to have_content('Push events')
- end
- end
-
- context 'when feature flag "enhanced_webhook_support_regex" is enabled' do
- it 'create webhook', :js do
- visit webhooks_path
+ it 'create webhook', :js do
+ visit webhooks_path
- fill_in 'URL', with: url
- check 'Tag push events'
- check 'Enable SSL verification'
- check 'Job events'
+ fill_in 'URL', with: url
+ check 'Tag push events'
+ check 'Enable SSL verification'
+ check 'Job events'
- click_button 'Add webhook'
+ click_button 'Add webhook'
- expect(page).to have_content(url)
- expect(page).to have_content('SSL Verification: enabled')
- expect(page).to have_content('Tag push events')
- expect(page).to have_content('Job events')
- expect(page).to have_content('Push events')
- end
+ expect(page).to have_content(url)
+ expect(page).to have_content('SSL Verification: enabled')
+ expect(page).to have_content('Tag push events')
+ expect(page).to have_content('Job events')
+ expect(page).to have_content('Push events')
end
it 'edit existing webhook', :js do
@@ -100,8 +74,8 @@ RSpec.describe 'Projects > Settings > Webhook Settings' do
check 'Enable SSL verification'
click_button 'Save changes'
- expect(page).to have_content 'SSL Verification: enabled'
- expect(page).to have_content(url)
+ expect(page).to have_content('Enable SSL verification')
+ expect(page).to have_current_path(edit_project_hook_path(project, hook), ignore_query: true)
end
it 'test existing webhook', :js do
diff --git a/spec/features/projects/show/download_buttons_spec.rb b/spec/features/projects/show/download_buttons_spec.rb
index e73bb3198e6..e4d50daa6f4 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' do
+RSpec.describe 'Projects > Show > Download buttons', feature_category: :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 ed06f4e14d3..9ead729af83 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' do
+RSpec.describe 'No Password Alert', feature_category: :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 55069cdd6c5..d1cb896450f 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' do
+RSpec.describe 'Projects > Show > Redirects', feature_category: :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 0bd6e9cbe3b..c2e8a844094 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' do
+RSpec.describe 'Projects > Show > RSS', feature_category: :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 8adbdb64f1b..8262245c5cb 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' do
+RSpec.describe 'Projects > Show > Schema Markup', feature_category: :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 262885e09b3..2f33622d218 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
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Project > Show > User interacts with auto devops implicitly enabled banner' do
+RSpec.describe 'Project > Show > User interacts with auto devops implicitly enabled banner',
+feature_category: :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 158b6aa9b46..e2166854ba3 100644
--- a/spec/features/projects/show/user_interacts_with_stars_spec.rb
+++ b/spec/features/projects/show/user_interacts_with_stars_spec.rb
@@ -2,13 +2,14 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User interacts with project stars' do
+RSpec.describe 'Projects > Show > User interacts with project stars', feature_category: :projects do
let(:project) { create(:project, :public, :repository) }
context 'when user is signed in', :js do
let(:user) { create(:user) }
before do
+ stub_feature_flags(vscode_web_ide: false)
sign_in(user)
visit(project_path(project))
end
diff --git a/spec/features/projects/show/user_manages_notifications_spec.rb b/spec/features/projects/show/user_manages_notifications_spec.rb
index 1df37eef6a9..8f6535fd4f0 100644
--- a/spec/features/projects/show/user_manages_notifications_spec.rb
+++ b/spec/features/projects/show/user_manages_notifications_spec.rb
@@ -2,10 +2,11 @@
require 'spec_helper'
-RSpec.describe 'Projects > Show > User manages notifications', :js do
+RSpec.describe 'Projects > Show > User manages notifications', :js, feature_category: :projects do
let(:project) { create(:project, :public, :repository) }
before do
+ stub_feature_flags(vscode_web_ide: false)
sign_in(project.first_owner)
end
@@ -23,7 +24,7 @@ RSpec.describe 'Projects > Show > User manages notifications', :js do
click_notifications_button
page.within first('[data-testid="notification-dropdown"]') do
- expect(page.find('.gl-new-dropdown-item.is-active')).to have_content('On mention')
+ expect(page.find('.gl-dropdown-item.is-active')).to have_content('On mention')
expect(page).to have_css('[data-testid="notifications-icon"]')
end
end
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 c63427e56e6..145500a4c63 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 do
+RSpec.describe 'Projects > Show > Collaboration links', :js, feature_category: :projects do
using RSpec::Parameterized::TableSyntax
let_it_be(:project) { create(:project, :repository, :public) }
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 47e010dcf89..876eecfe559 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' do
+RSpec.describe 'Projects > Show > User sees a deletion failure message', feature_category: :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 608bb4c5997..022f21f198d 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' do
+RSpec.describe 'Projects > Show > User sees Git instructions', feature_category: :projects do
let_it_be(:user) { create(:user) }
before do
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 0aa0f7754c6..25d241f004e 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' do
+RSpec.describe 'Projects > Show > User sees last commit CI status', feature_category: :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 6a5b9472be8..a8c91b30f25 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' do
+RSpec.describe 'Projects > Show > User sees README', feature_category: :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 5056e245fed..9eb2d109829 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' do
+RSpec.describe 'Projects > Show > User sees setup shortcut buttons', feature_category: :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 a222d6b42ab..ed378040ce9 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' do
+RSpec.describe 'Projects > Show > User uploads files', feature_category: :projects do
include DropzoneHelper
let(:user) { create(:user) }
diff --git a/spec/features/projects/snippets/create_snippet_spec.rb b/spec/features/projects/snippets/create_snippet_spec.rb
index cbdf6d6852e..f2c575231ad 100644
--- a/spec/features/projects/snippets/create_snippet_spec.rb
+++ b/spec/features/projects/snippets/create_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > Create Snippet', :js do
+RSpec.describe 'Projects > Snippets > Create Snippet', :js, feature_category: :snippets do
include DropzoneHelper
include Spec::Support::Helpers::Features::SnippetSpecHelpers
diff --git a/spec/features/projects/snippets/show_spec.rb b/spec/features/projects/snippets/show_spec.rb
index 5937ff75457..1a480696b4e 100644
--- a/spec/features/projects/snippets/show_spec.rb
+++ b/spec/features/projects/snippets/show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > Project snippet', :js do
+RSpec.describe 'Projects > Snippets > Project snippet', :js, feature_category: :snippets do
let_it_be(:user) { create(:user) }
let_it_be(:project) do
create(:project, creator: user).tap do |p|
diff --git a/spec/features/projects/snippets/user_comments_on_snippet_spec.rb b/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
index 3ccb73c88ef..556f549f86c 100644
--- a/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > User comments on a snippet', :js do
+RSpec.describe 'Projects > Snippets > User comments on a snippet', :js, feature_category: :snippets do
let_it_be(:project) { create(:project) }
let_it_be(:user) { create(:user) }
let_it_be(:snippet) { create(:project_snippet, :repository, project: project, author: user) }
diff --git a/spec/features/projects/snippets/user_deletes_snippet_spec.rb b/spec/features/projects/snippets/user_deletes_snippet_spec.rb
index ca49e6a36b7..c9d1afb7a4e 100644
--- a/spec/features/projects/snippets/user_deletes_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_deletes_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > User deletes a snippet', :js do
+RSpec.describe 'Projects > Snippets > User deletes a snippet', :js, feature_category: :snippets do
let(:project) { create(:project) }
let!(:snippet) { create(:project_snippet, :repository, project: project, author: user) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/snippets/user_updates_snippet_spec.rb b/spec/features/projects/snippets/user_updates_snippet_spec.rb
index aa498163f52..205db6c08b1 100644
--- a/spec/features/projects/snippets/user_updates_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_updates_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > User updates a snippet', :js do
+RSpec.describe 'Projects > Snippets > User updates a snippet', :js, feature_category: :snippets do
include Spec::Support::Helpers::Features::SnippetSpecHelpers
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/snippets/user_views_snippets_spec.rb b/spec/features/projects/snippets/user_views_snippets_spec.rb
index 40539b43ed5..ece65763ea5 100644
--- a/spec/features/projects/snippets/user_views_snippets_spec.rb
+++ b/spec/features/projects/snippets/user_views_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Snippets > User views snippets' do
+RSpec.describe 'Projects > Snippets > User views snippets', feature_category: :snippets do
let_it_be(:project) { create(:project) }
let(:user) { create(:user) }
diff --git a/spec/features/projects/sourcegraph_csp_spec.rb b/spec/features/projects/sourcegraph_csp_spec.rb
index 10dd050e8cc..4c8dd0a7df0 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' do
+RSpec.describe 'Sourcegraph Content Security Policy', feature_category: :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 d7614201740..2502d969305 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 do
+RSpec.describe 'Subgroup Issuables', :js, feature_category: :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/tags/download_buttons_spec.rb b/spec/features/projects/tags/download_buttons_spec.rb
index 0f1f72fd039..570721fc951 100644
--- a/spec/features/projects/tags/download_buttons_spec.rb
+++ b/spec/features/projects/tags/download_buttons_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Download buttons in tags page' do
+RSpec.describe 'Download buttons in tags page', feature_category: :source_code_management do
let(:user) { create(:user) }
let(:role) { :developer }
let(:status) { 'success' }
diff --git a/spec/features/projects/tags/user_edits_tags_spec.rb b/spec/features/projects/tags/user_edits_tags_spec.rb
index 857d0696659..e0efe3b465f 100644
--- a/spec/features/projects/tags/user_edits_tags_spec.rb
+++ b/spec/features/projects/tags/user_edits_tags_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > Tags', :js do
+RSpec.describe 'Project > Tags', :js, feature_category: :source_code_management do
include DropzoneHelper
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/tags/user_views_tag_spec.rb b/spec/features/projects/tags/user_views_tag_spec.rb
index 3978c5b7b78..0816b3240c9 100644
--- a/spec/features/projects/tags/user_views_tag_spec.rb
+++ b/spec/features/projects/tags/user_views_tag_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'User views tag', :feature do
+RSpec.describe 'User views tag', :feature, feature_category: :source_code_management do
include_examples 'user views tag' do
let(:tag_page) { project_tag_path(project, id: tag_name) }
end
diff --git a/spec/features/projects/tags/user_views_tags_spec.rb b/spec/features/projects/tags/user_views_tags_spec.rb
index d3849df023e..26f2e81e3df 100644
--- a/spec/features/projects/tags/user_views_tags_spec.rb
+++ b/spec/features/projects/tags/user_views_tags_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe 'User views tags', :feature do
+RSpec.describe 'User views tags', :feature, feature_category: :source_code_management do
include_examples 'user views tag' do
let(:tag_page) { project_tags_path(project) }
end
diff --git a/spec/features/projects/terraform_spec.rb b/spec/features/projects/terraform_spec.rb
index d9e45b5e78e..bbc7f675c55 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 do
+RSpec.describe 'Terraform', :js, feature_category: :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/create_directory_spec.rb b/spec/features/projects/tree/create_directory_spec.rb
index 9c950cfee6e..3a0160c42fb 100644
--- a/spec/features/projects/tree/create_directory_spec.rb
+++ b/spec/features/projects/tree/create_directory_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multi-file editor new directory', :js do
+RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_ide do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/tree/create_file_spec.rb b/spec/features/projects/tree/create_file_spec.rb
index c0567ed4580..61240150658 100644
--- a/spec/features/projects/tree/create_file_spec.rb
+++ b/spec/features/projects/tree/create_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multi-file editor new file', :js do
+RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/tree/rss_spec.rb b/spec/features/projects/tree/rss_spec.rb
index efbfc329c9f..0b016ee3dd9 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' do
+RSpec.describe 'Project Tree RSS', feature_category: :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/tree_show_spec.rb b/spec/features/projects/tree/tree_show_spec.rb
index eb0ef756b30..21932cae58b 100644
--- a/spec/features/projects/tree/tree_show_spec.rb
+++ b/spec/features/projects/tree/tree_show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects tree', :js do
+RSpec.describe 'Projects tree', :js, feature_category: :web_ide do
include RepoHelpers
let(:user) { create(:user) }
@@ -157,17 +157,22 @@ RSpec.describe 'Projects tree', :js do
end
end
- context 'ref switcher' do
+ context 'ref switcher', :js do
it 'switches ref to branch' do
+ ref_selector = '.ref-selector'
ref_name = 'feature'
visit project_tree_path(project, 'master')
- first('.js-project-refs-dropdown').click
- page.within '.project-refs-form' do
- click_link ref_name
+ find(ref_selector).click
+ wait_for_requests
+
+ page.within(ref_selector) do
+ fill_in 'Search by Git revision', with: ref_name
+ wait_for_requests
+ find('li', text: ref_name, match: :prefer_exact).click
end
- expect(page).to have_selector '.dropdown-menu-toggle', text: ref_name
+ expect(find(ref_selector)).to have_text(ref_name)
end
end
end
diff --git a/spec/features/projects/tree/upload_file_spec.rb b/spec/features/projects/tree/upload_file_spec.rb
index f32141d6051..1e4abc789c2 100644
--- a/spec/features/projects/tree/upload_file_spec.rb
+++ b/spec/features/projects/tree/upload_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Multi-file editor upload file', :js do
+RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:txt_file) { File.join(Rails.root, 'spec', 'fixtures', 'doc_sample.txt') }
diff --git a/spec/features/projects/user_changes_project_visibility_spec.rb b/spec/features/projects/user_changes_project_visibility_spec.rb
index df13bb55c6d..5daa5b98b6e 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 do
+RSpec.describe 'User changes public project visibility', :js, feature_category: :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 b07f2d12660..af0bd932095 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 do
+RSpec.describe 'User creates a project', :js, feature_category: :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 e2498928fa0..3a6e11356a2 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' do
+RSpec.describe 'Projects > User sees sidebar', feature_category: :projects do
let(:user) { create(:user) }
let(:project) { create(:project, :private, public_builds: false, namespace: user.namespace) }
@@ -220,7 +220,7 @@ RSpec.describe 'Projects > User sees sidebar' do
it 'does not show fork button' do
visit project_path(project)
- within('.count-buttons') do
+ within('.project-repo-buttons') do
expect(page).not_to have_link 'Fork'
end
end
diff --git a/spec/features/projects/user_sees_user_popover_spec.rb b/spec/features/projects/user_sees_user_popover_spec.rb
index 0bbe7f26cd4..5badcd99dff 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 do
+RSpec.describe 'User sees user popover', :js, feature_category: :projects do
include Spec::Support::Helpers::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 c40f01f3aa1..6a18d95c840 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' do
+RSpec.describe 'User sorts projects and order persists', feature_category: :projects do
include CookieHelper
let_it_be(:user) { create(:user) }
@@ -73,7 +73,7 @@ RSpec.describe 'User sorts projects and order persists' do
end
end
- it_behaves_like "sort order persists across all views", "Created date", "Created"
+ it_behaves_like "sort order persists across all views", "Oldest created", "Created"
end
context 'from group details', :js do
@@ -82,11 +82,11 @@ RSpec.describe 'User sorts projects and order persists' do
visit(details_group_path(group))
within '[data-testid=group_sort_by_dropdown]' do
find('button.gl-dropdown-toggle').click
- first(:button, 'Stars').click
+ first(:button, 'Updated').click
wait_for_requests
end
end
- it_behaves_like "sort order persists across all views", "Stars", "Stars"
+ it_behaves_like "sort order persists across all views", "Oldest updated", "Updated"
end
end
diff --git a/spec/features/projects/user_uses_shortcuts_spec.rb b/spec/features/projects/user_uses_shortcuts_spec.rb
index cd6f09ce275..05d79ea3b1b 100644
--- a/spec/features/projects/user_uses_shortcuts_spec.rb
+++ b/spec/features/projects/user_uses_shortcuts_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uses shortcuts', :js do
+RSpec.describe 'User uses shortcuts', :js, feature_category: :projects do
let_it_be(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
diff --git a/spec/features/projects/user_views_empty_project_spec.rb b/spec/features/projects/user_views_empty_project_spec.rb
index 696a7f4ee8a..352fa73bd05 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' do
+RSpec.describe 'User views an empty project', feature_category: :projects do
let_it_be(:project) { create(:project, :empty_repo) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb
index 5dd30f59e3d..bf32431fc88 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 do
+RSpec.describe 'View on environment', :js, feature_category: :projects do
let(:branch_name) { 'feature' }
let(:file_path) { 'files/ruby/feature.rb' }
let(:project) { create(:project, :repository) }
diff --git a/spec/features/projects/wiki/user_views_wiki_empty_spec.rb b/spec/features/projects/wiki/user_views_wiki_empty_spec.rb
index ea045ddb6a1..1f3ba7a5ca2 100644
--- a/spec/features/projects/wiki/user_views_wiki_empty_spec.rb
+++ b/spec/features/projects/wiki/user_views_wiki_empty_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project > User views empty wiki' do
+RSpec.describe 'Project > User views empty wiki', feature_category: :wiki do
let_it_be(:user) { create(:user) }
let(:wiki) { create(:project_wiki, project: project) }
diff --git a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
index db2b3fc2f4b..79744633d0c 100644
--- a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
+++ b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Wiki > User views wiki in project page' do
+RSpec.describe 'Projects > Wiki > User views wiki in project page', feature_category: :wiki do
before do
sign_in(project.first_owner)
end
diff --git a/spec/features/projects/wikis_spec.rb b/spec/features/projects/wikis_spec.rb
index 879ffd2932b..5d950da6674 100644
--- a/spec/features/projects/wikis_spec.rb
+++ b/spec/features/projects/wikis_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe 'Project wikis', :js do
+RSpec.describe 'Project wikis', :js, feature_category: :wiki do
let_it_be(:user) { create(:user) }
let(:wiki) { create(:project_wiki, user: user, project: project) }
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index cd9c173a4ff..ec0b3f9d81b 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Project' do
+RSpec.describe 'Project', feature_category: :projects do
include ProjectForksHelper
include MobileHelpers
@@ -327,9 +327,9 @@ RSpec.describe 'Project' do
end
it 'has working links to submodules' do
- click_link('645f6c4c')
+ submodule = find_link('645f6c4c')
- expect(page).to have_selector('.ref-selector', text: '645f6c4c82fd3f5e06f67134450a570b795e55a6')
+ expect(submodule[:href]).to eq('https://gitlab.com/gitlab-org/gitlab-grack/-/tree/645f6c4c82fd3f5e06f67134450a570b795e55a6')
end
context 'for signed commit on default branch', :js do
@@ -418,7 +418,7 @@ RSpec.describe 'Project' do
visit path
end
- it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="project[name]"]' }]
+ it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="project[name]"]', submit: 'button[type="submit"]' }]
end
describe 'view for a user without an access to a repo' do
diff --git a/spec/features/promotion_spec.rb b/spec/features/promotion_spec.rb
index 903d6244a4c..b2ab718321f 100644
--- a/spec/features/promotion_spec.rb
+++ b/spec/features/promotion_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Promotions', :js do
+RSpec.describe 'Promotions', :js, feature_category: :service_desk do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project_empty_repo) }
diff --git a/spec/features/protected_branches_spec.rb b/spec/features/protected_branches_spec.rb
index 174716d646d..c549d99a51f 100644
--- a/spec/features/protected_branches_spec.rb
+++ b/spec/features/protected_branches_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Protected Branches', :js do
+RSpec.describe 'Protected Branches', :js, feature_category: :source_code_management do
include ProtectedBranchHelpers
let(:user) { create(:user) }
diff --git a/spec/features/protected_tags_spec.rb b/spec/features/protected_tags_spec.rb
index c89dd4d1f90..1aadc7ce90a 100644
--- a/spec/features/protected_tags_spec.rb
+++ b/spec/features/protected_tags_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Protected Tags', :js do
+RSpec.describe 'Protected Tags', :js, feature_category: :source_code_management do
include ProtectedTagHelpers
let(:project) { create(:project, :repository) }
diff --git a/spec/features/read_only_spec.rb b/spec/features/read_only_spec.rb
index 11686552062..e65727c05e3 100644
--- a/spec/features/read_only_spec.rb
+++ b/spec/features/read_only_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'read-only message' do
+RSpec.describe 'read-only message', feature_category: :database do
let_it_be(:user) { create(:user) }
before do
@@ -14,7 +14,7 @@ RSpec.describe 'read-only message' do
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
end
- it_behaves_like 'Read-only instance', /You are on a read\-only GitLab instance./
+ it_behaves_like 'Read-only instance', /You are on a read-only GitLab instance./
end
context 'when database is in read-write mode' do
@@ -22,6 +22,6 @@ RSpec.describe 'read-only message' do
allow(Gitlab::Database).to receive(:read_only?).and_return(false)
end
- it_behaves_like 'Read-write instance', /You are on a read\-only GitLab instance./
+ it_behaves_like 'Read-write instance', /You are on a read-only GitLab instance./
end
end
diff --git a/spec/features/reportable_note/issue_spec.rb b/spec/features/reportable_note/issue_spec.rb
index 80c321d0f5a..55e7f5897bc 100644
--- a/spec/features/reportable_note/issue_spec.rb
+++ b/spec/features/reportable_note/issue_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Reportable note on issue', :js do
+RSpec.describe 'Reportable note on issue', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:issue) { create(:issue, project: project) }
diff --git a/spec/features/reportable_note/merge_request_spec.rb b/spec/features/reportable_note/merge_request_spec.rb
index 58a39bac707..39048495e5d 100644
--- a/spec/features/reportable_note/merge_request_spec.rb
+++ b/spec/features/reportable_note/merge_request_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Reportable note on merge request', :js do
+RSpec.describe 'Reportable note on merge request', :js, feature_category: :team_planning do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/reportable_note/snippets_spec.rb b/spec/features/reportable_note/snippets_spec.rb
index 92bf304ac86..7e8c2c2f989 100644
--- a/spec/features/reportable_note/snippets_spec.rb
+++ b/spec/features/reportable_note/snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Reportable note on snippets', :js do
+RSpec.describe 'Reportable note on snippets', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb
index cee0910aef7..40ba0fa9ebb 100644
--- a/spec/features/runners_spec.rb
+++ b/spec/features/runners_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Runners' do
+RSpec.describe 'Runners', feature_category: :runner_fleet do
let_it_be(:user) { create(:user) }
before do
@@ -117,11 +117,35 @@ RSpec.describe 'Runners' do
it 'user sees CI/CD setting page' do
visit project_runners_path(project)
- expect(page.find('.available-shared-runners')).to have_content(shared_runner.display_name)
+ within '[data-testid="available-shared-runners"]' do
+ expect(page).to have_content(shared_runner.display_name)
+ end
+ end
+
+ context 'when multiple shared runners are configured' do
+ let_it_be(:shared_runner_2) { create(:ci_runner, :instance) }
+
+ it 'shows the runner count' do
+ visit project_runners_path(project)
+
+ within '[data-testid="available-shared-runners"]' do
+ expect(page).to have_content format(_('Available shared runners: %{count}'), { count: 2 })
+ end
+ end
+
+ it 'adds pagination to the shared runner list' do
+ stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
+
+ visit project_runners_path(project)
+
+ within '[data-testid="available-shared-runners"]' do
+ expect(find('.pagination')).not_to be_nil
+ end
+ end
end
end
- context 'when multiple runners are configured' do
+ context 'when multiple project runners are configured' do
let!(:project_runner_2) { create(:ci_runner, :project, projects: [project]) }
it 'adds pagination to the runner list' do
@@ -306,7 +330,7 @@ RSpec.describe 'Runners' do
end
context 'project with a group and a group runner' do
- let_it_be(:ci_runner) do
+ let_it_be(:group_runner) do
create(:ci_runner, :group, groups: [group], description: 'group-runner')
end
@@ -330,6 +354,28 @@ RSpec.describe 'Runners' do
expect(page).to have_content 'Disable group runners'
expect(project.reload.group_runners_enabled).to be true
end
+
+ context 'when multiple group runners are configured' do
+ let_it_be(:group_runner_2) { create(:ci_runner, :group, groups: [group]) }
+
+ it 'shows the runner count' do
+ visit project_runners_path(project)
+
+ within '[data-testid="group-runners"]' do
+ expect(page).to have_content format(_('Available group runners: %{runners}'), { runners: 2 })
+ end
+ end
+
+ it 'adds pagination to the group runner list' do
+ stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
+
+ visit project_runners_path(project)
+
+ within '[data-testid="group-runners"]' do
+ expect(find('.pagination')).not_to be_nil
+ end
+ end
+ end
end
end
end
diff --git a/spec/features/search/user_searches_for_code_spec.rb b/spec/features/search/user_searches_for_code_spec.rb
index ee74ac84a73..14d67bac85f 100644
--- a/spec/features/search/user_searches_for_code_spec.rb
+++ b/spec/features/search/user_searches_for_code_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for code', :js, :disable_rate_limiter do
+RSpec.describe 'User searches for code', :js, :disable_rate_limiter, feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:user) { create(:user) }
diff --git a/spec/features/search/user_searches_for_comments_spec.rb b/spec/features/search/user_searches_for_comments_spec.rb
index 3c39e9f41d4..d7f6143d173 100644
--- a/spec/features/search/user_searches_for_comments_spec.rb
+++ b/spec/features/search/user_searches_for_comments_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for comments', :js, :disable_rate_limiter do
+RSpec.describe 'User searches for comments', :js, :disable_rate_limiter, feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/search/user_searches_for_commits_spec.rb b/spec/features/search/user_searches_for_commits_spec.rb
index e5d86c27942..1fd62a01c78 100644
--- a/spec/features/search/user_searches_for_commits_spec.rb
+++ b/spec/features/search/user_searches_for_commits_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for commits', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for commits', :js, :clean_gitlab_redis_rate_limiting, feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:user) { create(:user) }
diff --git a/spec/features/search/user_searches_for_issues_spec.rb b/spec/features/search/user_searches_for_issues_spec.rb
index 22d48bd38f2..6ebbe86d1a9 100644
--- a/spec/features/search/user_searches_for_issues_spec.rb
+++ b/spec/features/search/user_searches_for_issues_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for issues', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for issues', :js, :clean_gitlab_redis_rate_limiting, feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:user) { create(:user) }
diff --git a/spec/features/search/user_searches_for_merge_requests_spec.rb b/spec/features/search/user_searches_for_merge_requests_spec.rb
index 9bbf2cf16d8..69f62a4c1e2 100644
--- a/spec/features/search/user_searches_for_merge_requests_spec.rb
+++ b/spec/features/search/user_searches_for_merge_requests_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for merge requests', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for merge requests', :js, :clean_gitlab_redis_rate_limiting, feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let(:user) { create(:user) }
diff --git a/spec/features/search/user_searches_for_milestones_spec.rb b/spec/features/search/user_searches_for_milestones_spec.rb
index 702d4e60022..e87c2176380 100644
--- a/spec/features/search/user_searches_for_milestones_spec.rb
+++ b/spec/features/search/user_searches_for_milestones_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'User searches for milestones', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for milestones', :js, :clean_gitlab_redis_rate_limiting,
+feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:user) { create(:user) }
diff --git a/spec/features/search/user_searches_for_projects_spec.rb b/spec/features/search/user_searches_for_projects_spec.rb
index 15c6224b61b..48a94161927 100644
--- a/spec/features/search/user_searches_for_projects_spec.rb
+++ b/spec/features/search/user_searches_for_projects_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for projects', :js, :disable_rate_limiter do
+RSpec.describe 'User searches for projects', :js, :disable_rate_limiter, feature_category: :global_search do
let!(:project) { create(:project, :public, name: 'Shop') }
context 'when signed out' do
diff --git a/spec/features/search/user_searches_for_users_spec.rb b/spec/features/search/user_searches_for_users_spec.rb
index 1d649b42c8c..4737cef98c7 100644
--- a/spec/features/search/user_searches_for_users_spec.rb
+++ b/spec/features/search/user_searches_for_users_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User searches for users', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for users', :js, :clean_gitlab_redis_rate_limiting, feature_category: :global_search do
let_it_be(:user1) { create(:user, username: 'gob_bluth', name: 'Gob Bluth') }
let_it_be(:user2) { create(:user, username: 'michael_bluth', name: 'Michael Bluth') }
let_it_be(:user3) { create(:user, username: 'gob_2018', name: 'George Oscar Bluth') }
diff --git a/spec/features/search/user_searches_for_wiki_pages_spec.rb b/spec/features/search/user_searches_for_wiki_pages_spec.rb
index 0f20ad0aa07..c7dc3e34bb7 100644
--- a/spec/features/search/user_searches_for_wiki_pages_spec.rb
+++ b/spec/features/search/user_searches_for_wiki_pages_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'User searches for wiki pages', :js, :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'User searches for wiki pages', :js, :clean_gitlab_redis_rate_limiting,
+feature_category: :global_search do
using RSpec::Parameterized::TableSyntax
let_it_be(:user) { create(:user) }
diff --git a/spec/features/search/user_uses_header_search_field_spec.rb b/spec/features/search/user_uses_header_search_field_spec.rb
index 04f22cd2a31..334a192bec4 100644
--- a/spec/features/search/user_uses_header_search_field_spec.rb
+++ b/spec/features/search/user_uses_header_search_field_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uses header search field', :js, :disable_rate_limiter do
+RSpec.describe 'User uses header search field', :js, :disable_rate_limiter, feature_category: :global_search do
include FilteredSearchHelpers
let_it_be(:project) { create(:project, :repository) }
diff --git a/spec/features/search/user_uses_search_filters_spec.rb b/spec/features/search/user_uses_search_filters_spec.rb
index 24f6c70e64c..2e3aaab563d 100644
--- a/spec/features/search/user_uses_search_filters_spec.rb
+++ b/spec/features/search/user_uses_search_filters_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uses search filters', :js do
+RSpec.describe 'User uses search filters', :js, feature_category: :global_search do
let(:group) { create(:group) }
let!(:group_project) { create(:project, group: group) }
let(:project) { create(:project, namespace: user.namespace) }
diff --git a/spec/features/security/admin_access_spec.rb b/spec/features/security/admin_access_spec.rb
index 8070ae066e7..de81444ed71 100644
--- a/spec/features/security/admin_access_spec.rb
+++ b/spec/features/security/admin_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Admin::Projects" do
+RSpec.describe "Admin::Projects", feature_category: :permissions do
include AccessMatchers
describe "GET /admin/projects" do
diff --git a/spec/features/security/dashboard_access_spec.rb b/spec/features/security/dashboard_access_spec.rb
index 5430329d47d..948a4567624 100644
--- a/spec/features/security/dashboard_access_spec.rb
+++ b/spec/features/security/dashboard_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Dashboard access" do
+RSpec.describe "Dashboard access", feature_category: :permissions do
include AccessMatchers
describe "GET /dashboard" do
diff --git a/spec/features/security/group/internal_access_spec.rb b/spec/features/security/group/internal_access_spec.rb
index 755f170a93e..ad2df4a1882 100644
--- a/spec/features/security/group/internal_access_spec.rb
+++ b/spec/features/security/group/internal_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Internal Group access' do
+RSpec.describe 'Internal Group access', feature_category: :permissions do
include AccessMatchers
let(:group) { create(:group, :internal) }
@@ -27,9 +27,11 @@ RSpec.describe 'Internal Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -47,9 +49,11 @@ RSpec.describe 'Internal Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -69,9 +73,11 @@ RSpec.describe 'Internal Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -89,9 +95,11 @@ RSpec.describe 'Internal Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -109,9 +117,11 @@ RSpec.describe 'Internal Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_denied_for(:maintainer).of(group) }
it { is_expected.to be_denied_for(:developer).of(group) }
diff --git a/spec/features/security/group/private_access_spec.rb b/spec/features/security/group/private_access_spec.rb
index f733145b5e3..2e7b7512b45 100644
--- a/spec/features/security/group/private_access_spec.rb
+++ b/spec/features/security/group/private_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Private Group access' do
+RSpec.describe 'Private Group access', feature_category: :permissions do
include AccessMatchers
let(:group) { create(:group, :private) }
@@ -27,9 +27,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -47,9 +49,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -69,9 +73,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -89,9 +95,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -109,9 +117,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_denied_for(:maintainer).of(group) }
it { is_expected.to be_denied_for(:developer).of(group) }
@@ -135,9 +145,11 @@ RSpec.describe 'Private Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
diff --git a/spec/features/security/group/public_access_spec.rb b/spec/features/security/group/public_access_spec.rb
index 90de2b58044..513c5710c8f 100644
--- a/spec/features/security/group/public_access_spec.rb
+++ b/spec/features/security/group/public_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Public Group access' do
+RSpec.describe 'Public Group access', feature_category: :permissions do
include AccessMatchers
let(:group) { create(:group, :public) }
@@ -27,9 +27,11 @@ RSpec.describe 'Public Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -47,9 +49,11 @@ RSpec.describe 'Public Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -69,9 +73,11 @@ RSpec.describe 'Public Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -89,9 +95,11 @@ RSpec.describe 'Public Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_allowed_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_allowed_for(:maintainer).of(group) }
it { is_expected.to be_allowed_for(:developer).of(group) }
@@ -109,9 +117,11 @@ RSpec.describe 'Public Group access' do
context 'when admin mode is enabled', :enable_admin_mode do
it { is_expected.to be_allowed_for(:admin) }
end
+
context 'when admin mode is disabled' do
it { is_expected.to be_denied_for(:admin) }
end
+
it { is_expected.to be_allowed_for(:owner).of(group) }
it { is_expected.to be_denied_for(:maintainer).of(group) }
it { is_expected.to be_denied_for(:developer).of(group) }
diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb
index 301efd2d99b..991ff115d3d 100644
--- a/spec/features/security/profile_access_spec.rb
+++ b/spec/features/security/profile_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Profile access" do
+RSpec.describe "Profile access", feature_category: :user_management do
include AccessMatchers
describe "GET /-/profile/keys" do
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 48cee4b1f19..e35e7ed742b 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Internal Project Access" do
+RSpec.describe "Internal Project Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project, reload: true) { create(:project, :internal, :repository, :with_namespace_settings) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index c06b1e5da54..59ddb18ae8a 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Private Project Access" do
+RSpec.describe "Private Project Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project, reload: true) do
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index d2112430638..425691001f2 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Public Project Access" do
+RSpec.describe "Public Project Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project, reload: true) do
diff --git a/spec/features/security/project/snippet/internal_access_spec.rb b/spec/features/security/project/snippet/internal_access_spec.rb
index ab080f0a460..b7dcc5f31d3 100644
--- a/spec/features/security/project/snippet/internal_access_spec.rb
+++ b/spec/features/security/project/snippet/internal_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Internal Project Snippets Access" do
+RSpec.describe "Internal Project Snippets Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project) { create(:project, :internal) }
diff --git a/spec/features/security/project/snippet/private_access_spec.rb b/spec/features/security/project/snippet/private_access_spec.rb
index 1e0afc09b74..0ae45abb7ec 100644
--- a/spec/features/security/project/snippet/private_access_spec.rb
+++ b/spec/features/security/project/snippet/private_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Private Project Snippets Access" do
+RSpec.describe "Private Project Snippets Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project) { create(:project, :private) }
diff --git a/spec/features/security/project/snippet/public_access_spec.rb b/spec/features/security/project/snippet/public_access_spec.rb
index f734f7ba9e2..b98f665c0dc 100644
--- a/spec/features/security/project/snippet/public_access_spec.rb
+++ b/spec/features/security/project/snippet/public_access_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe "Public Project Snippets Access" do
+RSpec.describe "Public Project Snippets Access", feature_category: :permissions do
include AccessMatchers
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/sentry_js_spec.rb b/spec/features/sentry_js_spec.rb
index 1d277ba7b3c..d3880011914 100644
--- a/spec/features/sentry_js_spec.rb
+++ b/spec/features/sentry_js_spec.rb
@@ -2,27 +2,62 @@
require 'spec_helper'
-RSpec.describe 'Sentry' do
- let(:sentry_regex_path) { '\/sentry.*\.chunk\.js' }
+RSpec.describe 'Sentry', feature_category: :error_tracking do
+ context 'when enable_new_sentry_clientside_integration is disabled' do
+ before do
+ stub_feature_flags(enable_new_sentry_clientside_integration: false)
+ end
+
+ it 'does not load sentry if sentry is disabled' do
+ allow(Gitlab.config.sentry).to receive(:enabled).and_return(false)
+
+ visit new_user_session_path
+
+ expect(has_requested_legacy_sentry).to eq(false)
+ end
- it 'does not load sentry if sentry is disabled' do
- allow(Gitlab.config.sentry).to receive(:enabled).and_return(false)
- visit new_user_session_path
+ it 'loads legacy sentry if sentry config is enabled', :js do
+ allow(Gitlab.config.sentry).to receive(:enabled).and_return(true)
- expect(has_requested_sentry).to eq(false)
+ visit new_user_session_path
+
+ expect(has_requested_legacy_sentry).to eq(true)
+ expect(evaluate_script('window._Sentry.SDK_VERSION')).to match(%r{^5\.})
+ end
end
- it 'loads sentry if sentry is enabled' do
- stub_sentry_settings
+ context 'when enable_new_sentry_clientside_integration is enabled' do
+ before do
+ stub_feature_flags(enable_new_sentry_clientside_integration: true)
+ end
+
+ it 'does not load sentry if sentry settings are disabled' do
+ allow(Gitlab::CurrentSettings).to receive(:sentry_enabled).and_return(false)
- visit new_user_session_path
+ visit new_user_session_path
- expect(has_requested_sentry).to eq(true)
+ expect(has_requested_sentry).to eq(false)
+ end
+
+ it 'loads sentry if sentry settings are enabled', :js do
+ allow(Gitlab::CurrentSettings).to receive(:sentry_enabled).and_return(true)
+
+ visit new_user_session_path
+
+ expect(has_requested_sentry).to eq(true)
+ expect(evaluate_script('window._Sentry.SDK_VERSION')).to match(%r{^7\.})
+ end
+ end
+
+ def has_requested_legacy_sentry
+ page.all('script', visible: false).one? do |elm|
+ elm[:src] =~ %r{/legacy_sentry.*\.chunk\.js\z}
+ end
end
def has_requested_sentry
page.all('script', visible: false).one? do |elm|
- elm[:src] =~ /#{sentry_regex_path}$/
+ elm[:src] =~ %r{/sentry.*\.chunk\.js\z}
end
end
end
diff --git a/spec/features/signed_commits_spec.rb b/spec/features/signed_commits_spec.rb
index 8725dbcafe8..34127787e47 100644
--- a/spec/features/signed_commits_spec.rb
+++ b/spec/features/signed_commits_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'GPG signed commits' do
+RSpec.describe 'GPG signed commits', feature_category: :source_code_management do
let(:project) { create(:project, :public, :repository) }
it 'changes from unverified to verified when the user changes their email to match the gpg key', :sidekiq_might_not_need_inline do
diff --git a/spec/features/snippets/embedded_snippet_spec.rb b/spec/features/snippets/embedded_snippet_spec.rb
index 90d877d29b7..73b29ffd575 100644
--- a/spec/features/snippets/embedded_snippet_spec.rb
+++ b/spec/features/snippets/embedded_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Embedded Snippets' do
+RSpec.describe 'Embedded Snippets', feature_category: :source_code_management do
let_it_be(:snippet) { create(:personal_snippet, :public, :repository) }
let(:blobs) { snippet.blobs.first(3) }
diff --git a/spec/features/snippets/explore_spec.rb b/spec/features/snippets/explore_spec.rb
index b62c35bf96e..ef4b75ac3b4 100644
--- a/spec/features/snippets/explore_spec.rb
+++ b/spec/features/snippets/explore_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Explore Snippets' do
+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) }
diff --git a/spec/features/snippets/internal_snippet_spec.rb b/spec/features/snippets/internal_snippet_spec.rb
index 2fcd11c2a47..9645c9c110d 100644
--- a/spec/features/snippets/internal_snippet_spec.rb
+++ b/spec/features/snippets/internal_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Internal Snippets', :js do
+RSpec.describe 'Internal Snippets', :js, feature_category: :source_code_management do
let(:internal_snippet) { create(:personal_snippet, :internal, :repository) }
let(:content) { internal_snippet.blobs.first.data.strip! }
diff --git a/spec/features/snippets/notes_on_personal_snippets_spec.rb b/spec/features/snippets/notes_on_personal_snippets_spec.rb
index 8d55a7a64f4..c281e5906ad 100644
--- a/spec/features/snippets/notes_on_personal_snippets_spec.rb
+++ b/spec/features/snippets/notes_on_personal_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Comments on personal snippets', :js do
+RSpec.describe 'Comments on personal snippets', :js, feature_category: :source_code_management do
include NoteInteractionHelpers
include Spec::Support::Helpers::ModalHelpers
diff --git a/spec/features/snippets/private_snippets_spec.rb b/spec/features/snippets/private_snippets_spec.rb
index 7ff27419cf7..0620a50ea72 100644
--- a/spec/features/snippets/private_snippets_spec.rb
+++ b/spec/features/snippets/private_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Private Snippets', :js do
+RSpec.describe 'Private Snippets', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:private_snippet) { create(:personal_snippet, :repository, :private, author: user) }
let(:content) { private_snippet.blobs.first.data.strip! }
diff --git a/spec/features/snippets/public_snippets_spec.rb b/spec/features/snippets/public_snippets_spec.rb
index 0f27d96d8e9..be6d6b2c0fa 100644
--- a/spec/features/snippets/public_snippets_spec.rb
+++ b/spec/features/snippets/public_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Public Snippets', :js do
+RSpec.describe 'Public Snippets', :js, feature_category: :source_code_management do
let(:public_snippet) { create(:personal_snippet, :public, :repository) }
let(:content) { public_snippet.blobs.first.data.strip! }
diff --git a/spec/features/snippets/search_snippets_spec.rb b/spec/features/snippets/search_snippets_spec.rb
index d18729d080a..98842f54015 100644
--- a/spec/features/snippets/search_snippets_spec.rb
+++ b/spec/features/snippets/search_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Search Snippets', :js do
+RSpec.describe 'Search Snippets', :js, feature_category: :source_code_management do
it 'user searches for snippets by title' do
public_snippet = create(:personal_snippet, :public, title: 'Beginning and Middle')
private_snippet = create(:personal_snippet, :private, title: 'Middle and End')
diff --git a/spec/features/snippets/show_spec.rb b/spec/features/snippets/show_spec.rb
index 2103d362f94..a6e0bc32d42 100644
--- a/spec/features/snippets/show_spec.rb
+++ b/spec/features/snippets/show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Snippet', :js do
+RSpec.describe 'Snippet', :js, feature_category: :source_code_management do
let_it_be(:user) { create(:user) }
let_it_be(:snippet) { create(:personal_snippet, :public, :repository, author: user) }
diff --git a/spec/features/snippets/spam_snippets_spec.rb b/spec/features/snippets/spam_snippets_spec.rb
index 3748a916780..5d49b36f4fe 100644
--- a/spec/features/snippets/spam_snippets_spec.rb
+++ b/spec/features/snippets/spam_snippets_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'snippet editor with spam', skip: "Will be handled in https://gitlab.com/gitlab-org/gitlab/-/issues/217722" do
+RSpec.describe 'snippet editor with spam', skip: "Will be handled in https://gitlab.com/gitlab-org/gitlab/-/issues/217722",
+ feature_category: :source_code_management do
include_context 'includes Spam constants'
let_it_be(:user) { create(:user) }
diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb
index fd95516090a..064250c5673 100644
--- a/spec/features/snippets/user_creates_snippet_spec.rb
+++ b/spec/features/snippets/user_creates_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User creates snippet', :js do
+RSpec.describe 'User creates snippet', :js, feature_category: :source_code_management do
include DropzoneHelper
include Spec::Support::Helpers::Features::SnippetSpecHelpers
diff --git a/spec/features/snippets/user_deletes_snippet_spec.rb b/spec/features/snippets/user_deletes_snippet_spec.rb
index e896f7eb25b..3c4c41b0181 100644
--- a/spec/features/snippets/user_deletes_snippet_spec.rb
+++ b/spec/features/snippets/user_deletes_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User deletes snippet', :js do
+RSpec.describe 'User deletes snippet', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:content) { 'puts "test"' }
let(:snippet) { create(:personal_snippet, :repository, :public, content: content, author: user) }
diff --git a/spec/features/snippets/user_edits_snippet_spec.rb b/spec/features/snippets/user_edits_snippet_spec.rb
index a04c59b53d2..5096472ebe1 100644
--- a/spec/features/snippets/user_edits_snippet_spec.rb
+++ b/spec/features/snippets/user_edits_snippet_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User edits snippet', :js do
+RSpec.describe 'User edits snippet', :js, feature_category: :source_code_management do
include DropzoneHelper
include Spec::Support::Helpers::Features::SnippetSpecHelpers
diff --git a/spec/features/snippets/user_snippets_spec.rb b/spec/features/snippets/user_snippets_spec.rb
index bb733431b22..09e0e30666d 100644
--- a/spec/features/snippets/user_snippets_spec.rb
+++ b/spec/features/snippets/user_snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User Snippets' do
+RSpec.describe 'User Snippets', feature_category: :source_code_management do
let(:author) { create(:user) }
let!(:public_snippet) { create(:personal_snippet, :public, author: author, title: "This is a public snippet") }
let!(:internal_snippet) { create(:personal_snippet, :internal, author: author, title: "This is an internal snippet") }
diff --git a/spec/features/snippets_spec.rb b/spec/features/snippets_spec.rb
index 35eb5c2e193..2ccdb68e844 100644
--- a/spec/features/snippets_spec.rb
+++ b/spec/features/snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Snippets' do
+RSpec.describe 'Snippets', feature_category: :snippets do
context 'when the project has snippets' do
let(:project) { create(:project, :public) }
let!(:snippets) { create_list(:project_snippet, 2, :public, author: project.first_owner, project: project) }
diff --git a/spec/features/tags/developer_creates_tag_spec.rb b/spec/features/tags/developer_creates_tag_spec.rb
index 5657115fb3c..111710ba325 100644
--- a/spec/features/tags/developer_creates_tag_spec.rb
+++ b/spec/features/tags/developer_creates_tag_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Developer creates tag' do
+RSpec.describe 'Developer creates tag', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
@@ -15,6 +15,8 @@ RSpec.describe 'Developer creates tag' do
context 'from tag list' do
before do
visit project_tags_path(project)
+ click_link 'New tag'
+ wait_for_requests
end
it 'with an invalid name displays an error' do
@@ -23,10 +25,17 @@ RSpec.describe 'Developer creates tag' do
expect(page).to have_content 'Tag name invalid'
end
- it 'with an invalid reference displays an error' do
- create_tag_in_form(tag: 'v2.0', ref: 'foo')
-
- expect(page).to have_content 'Target foo is invalid'
+ it "doesn't allow to select invalid ref" do
+ ref_name = 'foo'
+ fill_in 'tag_name', with: 'v2.0'
+ ref_selector = '.ref-selector'
+ find(ref_selector).click
+ wait_for_requests
+ page.within(ref_selector) do
+ fill_in _('Search by Git revision'), with: ref_name
+ wait_for_requests
+ expect(find('.gl-dropdown-contents')).not_to have_content(ref_name)
+ end
end
it 'that already exists displays an error' do
@@ -46,27 +55,34 @@ RSpec.describe 'Developer creates tag' do
end
end
- it 'opens dropdown for ref', :js do
- click_link 'New tag'
- ref_row = find('.form-group:nth-of-type(2) .col-sm-12')
+ it 'opens dropdown for ref' do
+ ref_row = find('.form-group:nth-of-type(2) .col-sm-auto')
page.within ref_row do
ref_input = find('[name="ref"]', visible: false)
expect(ref_input.value).to eq 'master'
- expect(find('.dropdown-toggle-text')).to have_content 'master'
-
- find('.js-branch-select').click
-
- expect(find('.dropdown-menu')).to have_content 'empty-branch'
+ expect(find('.gl-dropdown-button-text')).to have_content 'master'
+ find('.ref-selector').click
+ expect(find('.dropdown-menu')).to have_content 'test'
end
end
end
def create_tag_in_form(tag:, ref:, message: nil, desc: nil)
- click_link 'New tag'
fill_in 'tag_name', with: tag
- find('#ref', visible: false).set(ref)
+ 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
+ wait_for_requests
+ page.within(ref_selector) do
+ fill_in _('Search by Git revision'), with: ref
+ wait_for_requests
+ find('li', text: ref, match: :prefer_exact).click
+ end
+ end
end
diff --git a/spec/features/tags/developer_deletes_tag_spec.rb b/spec/features/tags/developer_deletes_tag_spec.rb
index efd4b42c136..76cf3aa691d 100644
--- a/spec/features/tags/developer_deletes_tag_spec.rb
+++ b/spec/features/tags/developer_deletes_tag_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Developer deletes tag', :js do
+RSpec.describe 'Developer deletes tag', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
diff --git a/spec/features/tags/developer_views_tags_spec.rb b/spec/features/tags/developer_views_tags_spec.rb
index e2399dd9978..dc9f38f1d83 100644
--- a/spec/features/tags/developer_views_tags_spec.rb
+++ b/spec/features/tags/developer_views_tags_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Developer views tags' do
+RSpec.describe 'Developer views tags', feature_category: :source_code_management do
include RepoHelpers
let(:user) { create(:user) }
diff --git a/spec/features/tags/maintainer_deletes_protected_tag_spec.rb b/spec/features/tags/maintainer_deletes_protected_tag_spec.rb
index 0bf9645c2fb..ce518b962cd 100644
--- a/spec/features/tags/maintainer_deletes_protected_tag_spec.rb
+++ b/spec/features/tags/maintainer_deletes_protected_tag_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Maintainer deletes protected tag', :js do
+RSpec.describe 'Maintainer deletes protected tag', :js, feature_category: :source_code_management do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
diff --git a/spec/features/task_lists_spec.rb b/spec/features/task_lists_spec.rb
index 07de3789c08..d35726fe125 100644
--- a/spec/features/task_lists_spec.rb
+++ b/spec/features/task_lists_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Task Lists', :js do
+RSpec.describe 'Task Lists', :js, feature_category: :team_planning do
include Warden::Test::Helpers
let_it_be(:project) { create(:project, :public, :repository) }
diff --git a/spec/features/topic_show_spec.rb b/spec/features/topic_show_spec.rb
index 196fc34e3ea..d640e4e4edb 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' do
+RSpec.describe 'Topic show page', feature_category: :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/triggers_spec.rb b/spec/features/triggers_spec.rb
index eb497715df7..3616fdb2e8e 100644
--- a/spec/features/triggers_spec.rb
+++ b/spec/features/triggers_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Triggers', :js do
+RSpec.describe 'Triggers', :js, feature_category: :continuous_integration do
include Spec::Support::Helpers::ModalHelpers
let(:trigger_title) { 'trigger desc' }
diff --git a/spec/features/u2f_spec.rb b/spec/features/u2f_spec.rb
index eed67e3ac78..9ef0626b2b2 100644
--- a/spec/features/u2f_spec.rb
+++ b/spec/features/u2f_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Using U2F (Universal 2nd Factor) Devices for Authentication', :js do
+RSpec.describe 'Using U2F (Universal 2nd Factor) Devices for Authentication', :js,
+feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::Features::TwoFactorHelpers
before do
diff --git a/spec/features/unsubscribe_links_spec.rb b/spec/features/unsubscribe_links_spec.rb
index 12d2f0a9bb6..bcab35335cb 100644
--- a/spec/features/unsubscribe_links_spec.rb
+++ b/spec/features/unsubscribe_links_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Unsubscribe links', :sidekiq_inline do
+RSpec.describe 'Unsubscribe links', :sidekiq_inline, feature_category: :not_owned do
include Warden::Test::Helpers
let_it_be(:project) { create(:project, :public) }
diff --git a/spec/features/uploads/user_uploads_avatar_to_group_spec.rb b/spec/features/uploads/user_uploads_avatar_to_group_spec.rb
index 8daa869a6e3..78cede77fea 100644
--- a/spec/features/uploads/user_uploads_avatar_to_group_spec.rb
+++ b/spec/features/uploads/user_uploads_avatar_to_group_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uploads avatar to group' do
+RSpec.describe 'User uploads avatar to group', feature_category: :users do
it 'they see the new avatar' do
user = create(:user)
group = create(:group)
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 02f9d57fcfe..fb62b5eadc5 100644
--- a/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb
+++ b/spec/features/uploads/user_uploads_avatar_to_profile_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uploads avatar to profile' do
+RSpec.describe 'User uploads avatar to profile', feature_category: :users do
let!(:user) { create(:user) }
let(:avatar_file_path) { Rails.root.join('spec', 'fixtures', 'dk.png') }
diff --git a/spec/features/uploads/user_uploads_file_to_note_spec.rb b/spec/features/uploads/user_uploads_file_to_note_spec.rb
index 2547e2d274c..e5ad62592ae 100644
--- a/spec/features/uploads/user_uploads_file_to_note_spec.rb
+++ b/spec/features/uploads/user_uploads_file_to_note_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User uploads file to note' do
+RSpec.describe 'User uploads file to note', feature_category: :team_planning do
include DropzoneHelper
let(:user) { create(:user) }
diff --git a/spec/features/usage_stats_consent_spec.rb b/spec/features/usage_stats_consent_spec.rb
index 69bd6f35558..c446fe1531b 100644
--- a/spec/features/usage_stats_consent_spec.rb
+++ b/spec/features/usage_stats_consent_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Usage stats consent' do
+RSpec.describe 'Usage stats consent', feature_category: :service_ping do
context 'when signed in' do
let(:user) { create(:admin, created_at: 8.days.ago) }
let(:message) { 'To help improve GitLab, we would like to periodically collect usage information.' }
diff --git a/spec/features/user_can_display_performance_bar_spec.rb b/spec/features/user_can_display_performance_bar_spec.rb
index 14b5964686f..4f6ce6e8f71 100644
--- a/spec/features/user_can_display_performance_bar_spec.rb
+++ b/spec/features/user_can_display_performance_bar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User can display performance bar', :js do
+RSpec.describe 'User can display performance bar', :js, feature_category: :continuous_verification do
shared_examples 'performance bar cannot be displayed' do
it 'does not show the performance bar by default' do
expect(page).not_to have_css('#js-peek')
diff --git a/spec/features/user_opens_link_to_comment_spec.rb b/spec/features/user_opens_link_to_comment_spec.rb
index 59dea91c666..fb8f312c44b 100644
--- a/spec/features/user_opens_link_to_comment_spec.rb
+++ b/spec/features/user_opens_link_to_comment_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User opens link to comment', :js do
+RSpec.describe 'User opens link to comment', :js, feature_category: :team_planning do
let(:project) { create(:project, :public) }
let(:note) { create(:note_on_issue, project: project) }
diff --git a/spec/features/user_sees_revert_modal_spec.rb b/spec/features/user_sees_revert_modal_spec.rb
index 5edf8358244..ea5fd537c5b 100644
--- a/spec/features/user_sees_revert_modal_spec.rb
+++ b/spec/features/user_sees_revert_modal_spec.rb
@@ -2,7 +2,8 @@
require 'spec_helper'
-RSpec.describe 'Merge request > User sees revert modal', :js, :sidekiq_might_not_need_inline do
+RSpec.describe 'Merge request > User sees revert modal', :js, :sidekiq_might_not_need_inline,
+feature_category: :code_review do
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) { create(:merge_request, source_project: project) }
diff --git a/spec/features/user_sorts_things_spec.rb b/spec/features/user_sorts_things_spec.rb
index c6a1cfdc146..708caf79090 100644
--- a/spec/features/user_sorts_things_spec.rb
+++ b/spec/features/user_sorts_things_spec.rb
@@ -20,7 +20,7 @@ RSpec.describe "User sorts things", :js do
sign_in(current_user)
end
- it "issues -> project home page -> issues" do
+ it "issues -> project home page -> issues", feature_category: :team_planning do
sort_option = s_('SortOptions|Updated date')
visit(project_issues_path(project))
@@ -34,7 +34,7 @@ RSpec.describe "User sorts things", :js do
expect(page).to have_button(sort_option)
end
- it "merge requests -> dashboard merge requests" do
+ it "merge requests -> dashboard merge requests", feature_category: :code_review do
sort_option = s_('SortOptions|Updated date')
visit(project_merge_requests_path(project))
diff --git a/spec/features/users/active_sessions_spec.rb b/spec/features/users/active_sessions_spec.rb
index e2ee78a7cc5..53a4c8a91e9 100644
--- a/spec/features/users/active_sessions_spec.rb
+++ b/spec/features/users/active_sessions_spec.rb
@@ -2,27 +2,31 @@
require 'spec_helper'
-RSpec.describe 'Active user sessions', :clean_gitlab_redis_sessions do
+RSpec.describe 'Active user sessions', :clean_gitlab_redis_sessions, feature_category: :system_access do
it 'successful login adds a new active user login' do
+ user = create(:user)
+
now = Time.zone.parse('2018-03-12 09:06')
- Timecop.freeze(now) do
- user = create(:user)
+ travel_to(now) do
gitlab_sign_in(user)
expect(page).to have_current_path root_path, ignore_query: true
sessions = ActiveSession.list(user)
expect(sessions.count).to eq 1
+ gitlab_sign_out
+ end
- # refresh the current page updates the updated_at
- Timecop.freeze(now + 1.minute) do
- visit current_path
+ # refresh the current page updates the updated_at
+ travel_to(now + 1.minute) do
+ gitlab_sign_in(user)
+
+ visit current_path
- sessions = ActiveSession.list(user)
- expect(sessions.first).to have_attributes(
- created_at: Time.zone.parse('2018-03-12 09:06'),
- updated_at: Time.zone.parse('2018-03-12 09:07')
- )
- end
+ sessions = ActiveSession.list(user)
+ expect(sessions.first).to have_attributes(
+ created_at: Time.zone.parse('2018-03-12 09:06'),
+ updated_at: Time.zone.parse('2018-03-12 09:07')
+ )
end
end
diff --git a/spec/features/users/add_email_to_existing_account_spec.rb b/spec/features/users/add_email_to_existing_account_spec.rb
index cf78fc4587f..8c4e68c454f 100644
--- a/spec/features/users/add_email_to_existing_account_spec.rb
+++ b/spec/features/users/add_email_to_existing_account_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'AdditionalEmailToExistingAccount' do
+RSpec.describe 'AdditionalEmailToExistingAccount', feature_category: :users do
describe 'add secondary email associated with account' do
let_it_be(:user) { create(:user) }
let_it_be(:email) { create(:email, user: user) }
diff --git a/spec/features/users/anonymous_sessions_spec.rb b/spec/features/users/anonymous_sessions_spec.rb
index 6b21412ae3d..83473964d6b 100644
--- a/spec/features/users/anonymous_sessions_spec.rb
+++ b/spec/features/users/anonymous_sessions_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Session TTLs', :clean_gitlab_redis_shared_state do
+RSpec.describe 'Session TTLs', :clean_gitlab_redis_shared_state, feature_category: :system_access do
include SessionHelpers
it 'creates a session with a short TTL when login fails' do
diff --git a/spec/features/users/bizible_csp_spec.rb b/spec/features/users/bizible_csp_spec.rb
index af0b42050b3..6c62cf9e0a2 100644
--- a/spec/features/users/bizible_csp_spec.rb
+++ b/spec/features/users/bizible_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Bizible content security policy' do
+RSpec.describe 'Bizible content security policy', feature_category: :purchase do
before do
stub_config(extra: { one_trust_id: SecureRandom.uuid })
end
diff --git a/spec/features/users/confirmation_spec.rb b/spec/features/users/confirmation_spec.rb
index aaa49c75223..cf8d0c4dbd4 100644
--- a/spec/features/users/confirmation_spec.rb
+++ b/spec/features/users/confirmation_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User confirmation' do
+RSpec.describe 'User confirmation', feature_category: :system_access do
describe 'resend confirmation instructions' do
context 'when recaptcha is enabled' do
before do
diff --git a/spec/features/users/email_verification_on_login_spec.rb b/spec/features/users/email_verification_on_login_spec.rb
index f7102eaf9b7..de52f0b517e 100644
--- a/spec/features/users/email_verification_on_login_spec.rb
+++ b/spec/features/users/email_verification_on_login_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting do
+RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting, feature_category: :system_access do
include EmailHelpers
let_it_be(:user) { create(:user) }
@@ -223,6 +223,14 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
it_behaves_like 'email verification required'
it_behaves_like 'no email verification required when 2fa enabled or ff disabled'
+
+ context 'when the check_ip_address_for_email_verification feature flag is disabled' do
+ before do
+ stub_feature_flags(check_ip_address_for_email_verification: false)
+ end
+
+ it_behaves_like 'no email verification required'
+ end
end
describe 'when a previous authentication event exists for the same ip address' do
diff --git a/spec/features/users/google_analytics_csp_spec.rb b/spec/features/users/google_analytics_csp_spec.rb
index 46a9b3be22f..45cc6c5f39d 100644
--- a/spec/features/users/google_analytics_csp_spec.rb
+++ b/spec/features/users/google_analytics_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Google Analytics 4 content security policy' do
+RSpec.describe 'Google Analytics 4 content security policy', feature_category: :purchase do
it 'includes the GA4 content security policy headers' do
visit root_path
diff --git a/spec/features/users/login_spec.rb b/spec/features/users/login_spec.rb
index 5ca5bd72b79..105e9f97989 100644
--- a/spec/features/users/login_spec.rb
+++ b/spec/features/users/login_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Login', :clean_gitlab_redis_sessions do
+RSpec.describe 'Login', :clean_gitlab_redis_sessions, feature_category: :system_access do
include TermsHelper
include UserLoginHelper
include SessionHelpers
@@ -103,7 +103,7 @@ RSpec.describe 'Login', :clean_gitlab_redis_sessions do
let(:alert_message) { "To continue, you need to select the link in the confirmation email we sent to verify your email address. If you didn't get our email, select Resend confirmation email" }
before do
- stub_application_setting(send_user_confirmation_email: true)
+ stub_application_setting_enum('email_confirmation_setting', 'hard')
allow(User).to receive(:allow_unconfirmed_access_for).and_return grace_period
stub_feature_flags(identity_verification: false)
end
@@ -953,7 +953,7 @@ RSpec.describe 'Login', :clean_gitlab_redis_sessions do
let(:alert_message) { "To continue, you need to select the link in the confirmation email we sent to verify your email address. If you didn't get our email, select Resend confirmation email" }
before do
- stub_application_setting(send_user_confirmation_email: true)
+ stub_application_setting_enum('email_confirmation_setting', 'hard')
stub_feature_flags(soft_email_confirmation: true)
stub_feature_flags(identity_verification: false)
allow(User).to receive(:allow_unconfirmed_access_for).and_return grace_period
diff --git a/spec/features/users/logout_spec.rb b/spec/features/users/logout_spec.rb
index 596f0dd5a94..c9839247e7d 100644
--- a/spec/features/users/logout_spec.rb
+++ b/spec/features/users/logout_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Logout/Sign out', :js do
+RSpec.describe 'Logout/Sign out', :js, feature_category: :system_access do
let(:user) { create(:user) }
before do
diff --git a/spec/features/users/one_trust_csp_spec.rb b/spec/features/users/one_trust_csp_spec.rb
index 382a0b4be6c..c22fd26f2e8 100644
--- a/spec/features/users/one_trust_csp_spec.rb
+++ b/spec/features/users/one_trust_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'OneTrust content security policy' do
+RSpec.describe 'OneTrust content security policy', feature_category: :application_instrumentation do
let(:user) { create(:user) }
before do
diff --git a/spec/features/users/overview_spec.rb b/spec/features/users/overview_spec.rb
index 902079b7b93..489e7d61ff9 100644
--- a/spec/features/users/overview_spec.rb
+++ b/spec/features/users/overview_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Overview tab on a user profile', :js do
+RSpec.describe 'Overview tab on a user profile', :js, feature_category: :users do
let(:user) { create(:user) }
let(:contributed_project) { create(:project, :public, :repository) }
diff --git a/spec/features/users/password_spec.rb b/spec/features/users/password_spec.rb
index 793a11c616e..ccd383c8a15 100644
--- a/spec/features/users/password_spec.rb
+++ b/spec/features/users/password_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User password' do
+RSpec.describe 'User password', feature_category: :system_access do
describe 'send password reset' do
context 'when recaptcha is enabled' do
before do
diff --git a/spec/features/users/rss_spec.rb b/spec/features/users/rss_spec.rb
index aba1ff63fab..a2604cd298a 100644
--- a/spec/features/users/rss_spec.rb
+++ b/spec/features/users/rss_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User RSS' do
+RSpec.describe 'User RSS', feature_category: :users do
let(:user) { create(:user) }
let(:path) { user_path(create(:user)) }
diff --git a/spec/features/users/show_spec.rb b/spec/features/users/show_spec.rb
index bbf5882f89f..318dd688fa4 100644
--- a/spec/features/users/show_spec.rb
+++ b/spec/features/users/show_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'User page' do
+RSpec.describe 'User page', feature_category: :users do
include ExternalAuthorizationServiceHelpers
let_it_be(:user) { create(:user, bio: '<b>Lorem</b> <i>ipsum</i> dolor sit <a href="https://example.com">amet</a>') }
diff --git a/spec/features/users/signup_spec.rb b/spec/features/users/signup_spec.rb
index 9b1a102f07b..1057ae48c7d 100644
--- a/spec/features/users/signup_spec.rb
+++ b/spec/features/users/signup_spec.rb
@@ -44,7 +44,7 @@ RSpec.shared_examples 'Signup name validation' do |field, max_length, label|
end
end
-RSpec.describe 'Signup' do
+RSpec.describe 'Signup', feature_category: :users do
include TermsHelper
let(:new_user) { build_stubbed(:user) }
@@ -197,7 +197,7 @@ RSpec.describe 'Signup' do
context 'with no errors' do
context 'when sending confirmation email' do
before do
- stub_application_setting(send_user_confirmation_email: true)
+ stub_application_setting_enum('email_confirmation_setting', 'hard')
end
context 'when soft email confirmation is not enabled' do
@@ -239,7 +239,7 @@ RSpec.describe 'Signup' do
context "when not sending confirmation email" do
before do
- stub_application_setting(send_user_confirmation_email: false)
+ stub_application_setting_enum('email_confirmation_setting', 'off')
end
it 'creates the user account and goes to dashboard' do
@@ -282,7 +282,7 @@ RSpec.describe 'Signup' do
expect(page).to have_content("Email has already been taken")
end
- it 'does not redisplay the password' do
+ it 'redisplays all fields except password' do
create(:user, email: new_user.email)
visit new_user_registration_path
@@ -291,6 +291,11 @@ RSpec.describe 'Signup' do
expect(page).to have_current_path user_registration_path, ignore_query: true
expect(page.body).not_to match(/#{new_user.password}/)
+
+ expect(find_field('First name').value).to eq(new_user.first_name)
+ expect(find_field('Last name').value).to eq(new_user.last_name)
+ expect(find_field('Username').value).to eq(new_user.username)
+ expect(find_field('Email').value).to eq(new_user.email)
end
end
diff --git a/spec/features/users/snippets_spec.rb b/spec/features/users/snippets_spec.rb
index ce19e491a7c..20fc2981418 100644
--- a/spec/features/users/snippets_spec.rb
+++ b/spec/features/users/snippets_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Snippets tab on a user profile', :js do
+RSpec.describe 'Snippets tab on a user profile', :js, feature_category: :snippets do
context 'when the user has snippets' do
let(:user) { create(:user) }
diff --git a/spec/features/users/terms_spec.rb b/spec/features/users/terms_spec.rb
index 7a662d24d60..7d2137b81b8 100644
--- a/spec/features/users/terms_spec.rb
+++ b/spec/features/users/terms_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Users > Terms', :js do
+RSpec.describe 'Users > Terms', :js, feature_category: :users do
include TermsHelper
let!(:term) { create(:term, terms: 'By accepting, you promise to be nice!') }
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 5e7d7b76843..841b324fba4 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 do
+RSpec.describe 'Users > User browses projects on user page', :js, feature_category: :projects do
let!(:user) { create :user }
let!(:private_project) do
create :project, :private, name: 'private', namespace: user.namespace do |project|
diff --git a/spec/features/users/zuora_csp_spec.rb b/spec/features/users/zuora_csp_spec.rb
index f3fd27d6495..b07c923fa54 100644
--- a/spec/features/users/zuora_csp_spec.rb
+++ b/spec/features/users/zuora_csp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Zuora content security policy' do
+RSpec.describe 'Zuora content security policy', feature_category: :purchase do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:pipeline) { create(:ci_pipeline, project: project) }
diff --git a/spec/features/webauthn_spec.rb b/spec/features/webauthn_spec.rb
index 215d1ff1cb6..e2f16f4a017 100644
--- a/spec/features/webauthn_spec.rb
+++ b/spec/features/webauthn_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Using WebAuthn Devices for Authentication', :js do
+RSpec.describe 'Using WebAuthn Devices for Authentication', :js, feature_category: :authentication_and_authorization do
include Spec::Support::Helpers::Features::TwoFactorHelpers
let(:app_id) { "http://#{Capybara.current_session.server.host}:#{Capybara.current_session.server.port}" }
diff --git a/spec/features/whats_new_spec.rb b/spec/features/whats_new_spec.rb
index 2938ea1b1e8..6b19ab28b44 100644
--- a/spec/features/whats_new_spec.rb
+++ b/spec/features/whats_new_spec.rb
@@ -2,7 +2,7 @@
require "spec_helper"
-RSpec.describe "renders a `whats new` dropdown item" do
+RSpec.describe "renders a `whats new` dropdown item", feature_category: :not_owned do
let_it_be(:user) { create(:user) }
context 'when not logged in' do
diff --git a/spec/features/work_items/work_item_children_spec.rb b/spec/features/work_items/work_item_children_spec.rb
index 10a1bf7541e..4403ca60d11 100644
--- a/spec/features/work_items/work_item_children_spec.rb
+++ b/spec/features/work_items/work_item_children_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Work item children', :js do
+RSpec.describe 'Work item children', :js, feature_category: :team_planning do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, :public, namespace: group) }
let_it_be(:user) { create(:user) }
diff --git a/spec/features/work_items/work_item_spec.rb b/spec/features/work_items/work_item_spec.rb
index 686b82de868..577ec060020 100644
--- a/spec/features/work_items/work_item_spec.rb
+++ b/spec/features/work_items/work_item_spec.rb
@@ -2,14 +2,16 @@
require 'spec_helper'
-RSpec.describe 'Work item', :js do
+RSpec.describe 'Work item', :js, feature_category: :team_planning do
let_it_be(:project) { create(:project, :public) }
let_it_be(:user) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
let_it_be(:work_item) { create(:work_item, project: project) }
context 'for signed in user' do
before do
project.add_developer(user)
+ project.add_developer(other_user)
sign_in(user)
@@ -28,6 +30,31 @@ RSpec.describe 'Work item', :js do
expect(page).to have_text(user.name)
end
end
+
+ it 'shows conflict message when description changes', :aggregate_failures do
+ click_button "Edit description"
+ scroll_to(find('[aria-label="Description"]'))
+
+ # without this for some reason the test fails when running locally
+ sleep 1
+
+ ::WorkItems::UpdateService.new(
+ project: work_item.project,
+ current_user: other_user,
+ params: { description: "oh no!" }
+ ).execute(work_item)
+
+ work_item.reload
+
+ find('[aria-label="Description"]').send_keys("oh yeah!")
+
+ warning = 'Someone edited the description at the same time you did.'
+ expect(page.find('[data-testid="work-item-description-conflicts"]')).to have_text(warning)
+
+ click_button "Save and overwrite"
+
+ expect(page.find('[data-testid="work-item-description"]')).to have_text("oh yeah!")
+ end
end
end
end