Improve stubs mocking for @vue/test-utils v2

What does this MR do and why?

This MR introduces better stub generation for our shallow mount tests

Better in our definition means "closer to Vue.js 2"

Additionally it introduces ability to find async components in shallow-based tests

In @vue/test-utils v1 (Vue.js 2), due to implementation nuances test-utils were unable to stub async components. With @vue/test-utils v2 and Vue.js 3 specially-crafted vnode transformers shallowMount stubs async components. But at the moment of stubbing async component is not resolved, so test-utils are simply unaware which component we're stubbing (we have only loader function)

This MR partially mimics behavior of Vue.js 2 test-utils. When we encounter async component we try to load it (it is side-effect free), and when it is loaded we update stub record to point to real component, not a loader.

While this basically means, that proper stubs will be available only on next tick, this is exactly the behaviour we were using in our codebase, where async components are actually also resolved after next tick

How to set up and validate locally

diff --git a/ee/spec/frontend/ai/components/ai_genie_spec.js b/ee/spec/frontend/ai/components/ai_genie_spec.js
index 753ef4be8e95..fb959c4ac951 100644
--- a/ee/spec/frontend/ai/components/ai_genie_spec.js
+++ b/ee/spec/frontend/ai/components/ai_genie_spec.js
@@ -41,7 +41,7 @@ const SELECTED_TEXT = 'Foo';
 let mutationHandlerMock;
 let subscriptionHandlerMock;

-describe('AiGenie', () => {
+describe.skip('AiGenie', () => {
   let wrapper;
   const containerId = 'container';
   const language = 'vue';
diff --git a/spec/frontend/environment.js b/spec/frontend/environment.js
index 4e341b2bb2f6..00e7fe86b2a5 100644
--- a/spec/frontend/environment.js
+++ b/spec/frontend/environment.js
@@ -23,7 +23,7 @@ class CustomEnvironment extends TestEnvironment {

     const { error: originalErrorFn } = context.console;
     Object.assign(context.console, {
-      error(...args) {
+      disable_error(...args) {
         if (
           args?.[0]?.includes('[Vue warn]: Missing required prop') ||
           args?.[0]?.includes('[Vue warn]: Invalid prop')
@@ -38,7 +38,7 @@ class CustomEnvironment extends TestEnvironment {
         );
       },

-      warn(...args) {
+      disable_warn(...args) {
         if (args?.[0]?.includes('The updateQuery callback for fetchMore is deprecated')) {
           return;
         }
  • run VUE_VERSION=3 yarn jest --maxWorkers 6 2>&1 | egrep "^(FAIL|PASS)" | awk '{ print $2 " " $1 }' | sort -u > /tmp/before-fix on master (this will generate baseline - tests before fixing stubs behaviour)
  • switch to this branch
  • run VUE_VERSION=3 yarn jest --maxWorkers 6 2>&1 | egrep "^(FAIL|PASS)" | awk '{ print $2 " " $1 }' | sort -u > /tmp/after-fix (this will generate report after fixes)
  • run diff /tmp/before-fix /tmp/after-fix to observe fixed and failed tests
Output
--- /tmp/original-summary       2023-04-30 12:27:15
+++ /tmp/fixed-summary  2023-04-30 12:29:45
@@ -6,7 +6,7 @@
 ee/spec/frontend/admin/application_settings/deletion_protection/components/form_group_spec.js FAIL
 ee/spec/frontend/admin/application_settings/deletion_protection/index_spec.js FAIL
 ee/spec/frontend/admin/application_settings/deletion_protection/utils_spec.js PASS
-ee/spec/frontend/admin/application_settings/general/components/license_dropzone_spec.js FAIL
+ee/spec/frontend/admin/application_settings/general/components/license_dropzone_spec.js PASS
 ee/spec/frontend/admin/application_settings/reporting/git_abuse_settings/components/settings_form_container_spec.js PASS
 ee/spec/frontend/admin/application_settings/reporting/git_abuse_settings/components/settings_form_spec.js FAIL
 ee/spec/frontend/admin/application_settings/reporting/git_abuse_settings/components/users_select_spec.js PASS
@@ -49,8 +49,8 @@
 ee/spec/frontend/ai/tanuki_bot/store/mutations_spec.js PASS
 ee/spec/frontend/ai/utils_spec.js PASS
 ee/spec/frontend/analytics/analytics_dashboards/components/analytics_dashboard_spec.js PASS
-ee/spec/frontend/analytics/analytics_dashboards/components/analytics_visualization_designer_spec.js FAIL
-ee/spec/frontend/analytics/analytics_dashboards/components/dashboards_list_spec.js FAIL
+ee/spec/frontend/analytics/analytics_dashboards/components/analytics_visualization_designer_spec.js PASS
+ee/spec/frontend/analytics/analytics_dashboards/components/dashboards_list_spec.js PASS
 ee/spec/frontend/analytics/analytics_dashboards/components/data_sources/cube_analytics_spec.js PASS
 ee/spec/frontend/analytics/analytics_dashboards/components/list/dashboard_list_item_spec.js PASS
 ee/spec/frontend/analytics/analytics_dashboards/components/list/feature_list_item_spec.js FAIL
@@ -232,7 +232,7 @@
 ee/spec/frontend/audit_events/components/audit_events_stream_spec.js PASS
 ee/spec/frontend/audit_events/components/audit_events_table_spec.js PASS
 ee/spec/frontend/audit_events/components/date_range_buttons_spec.js PASS
-ee/spec/frontend/audit_events/components/date_range_field_spec.js FAIL
+ee/spec/frontend/audit_events/components/date_range_field_spec.js PASS
 ee/spec/frontend/audit_events/components/sorting_field_spec.js PASS
 ee/spec/frontend/audit_events/components/stream/stream_destination_editor_spec.js PASS
 ee/spec/frontend/audit_events/components/stream/stream_empty_state_spec.js FAIL
@@ -271,17 +271,17 @@
 ee/spec/frontend/boards/components/assignee_select_spec.js PASS
 ee/spec/frontend/boards/components/board_add_new_column_spec.js PASS
 ee/spec/frontend/boards/components/board_content_sidebar_spec.js FAIL
-ee/spec/frontend/boards/components/board_content_spec.js FAIL
+ee/spec/frontend/boards/components/board_content_spec.js PASS
 ee/spec/frontend/boards/components/board_filtered_search_spec.js PASS
 ee/spec/frontend/boards/components/board_form_spec.js PASS
-ee/spec/frontend/boards/components/board_list_header_spec.js FAIL
+ee/spec/frontend/boards/components/board_list_header_spec.js PASS
 ee/spec/frontend/boards/components/board_list_spec.js PASS
 ee/spec/frontend/boards/components/board_new_epic_spec.js PASS
 ee/spec/frontend/boards/components/board_scope_spec.js PASS
 ee/spec/frontend/boards/components/board_setting_list_types_spec.js PASS
 ee/spec/frontend/boards/components/board_settings_sidebar_spec.js PASS
 ee/spec/frontend/boards/components/board_settings_wip_limit_spec.js PASS
-ee/spec/frontend/boards/components/board_top_bar_spec.js FAIL
+ee/spec/frontend/boards/components/board_top_bar_spec.js PASS
 ee/spec/frontend/boards/components/boards_selector_spec.js PASS
 ee/spec/frontend/boards/components/epic_board_content_sidebar_spec.js PASS
 ee/spec/frontend/boards/components/epic_filtered_search_spec.js PASS
@@ -301,7 +301,7 @@
 ee/spec/frontend/boards/stores/mutations_spec.js PASS
 ee/spec/frontend/boards/stores/state_spec.js PASS
 ee/spec/frontend/burndown_chart/burn_chart_data_spec.js PASS
-ee/spec/frontend/burndown_chart/components/burn_charts_spec.js FAIL
+ee/spec/frontend/burndown_chart/components/burn_charts_spec.js PASS
 ee/spec/frontend/burndown_chart/components/burndown_chart_spec.js PASS
 ee/spec/frontend/burndown_chart/components/burnup_chart_spec.js PASS
 ee/spec/frontend/burndown_chart/components/open_timebox_summary_spec.js PASS
@@ -320,7 +320,7 @@
 ee/spec/frontend/ci/runner/admin_runners/admin_runners_app_spec.js FAIL
 ee/spec/frontend/ci/runner/components/runner_details_spec.js FAIL
 ee/spec/frontend/ci/runner/components/runner_form_fields_spec.js FAIL
-ee/spec/frontend/ci/runner/components/runner_maintenance_note_detail_spec.js FAIL
+ee/spec/frontend/ci/runner/components/runner_maintenance_note_detail_spec.js PASS
 ee/spec/frontend/ci/runner/components/runner_maintenance_note_field_spec.js PASS
 ee/spec/frontend/ci/runner/components/runner_update_cost_factor_fields_spec.js PASS
 ee/spec/frontend/ci/runner/components/runner_update_form_spec.js FAIL
@@ -372,7 +372,7 @@
 ee/spec/frontend/compliance_dashboard/utils_spec.js PASS
 ee/spec/frontend/contextual_sidebar/trial_status_popover_spec.js FAIL
 ee/spec/frontend/contextual_sidebar/trial_status_widget_spec.js FAIL
-ee/spec/frontend/dependencies/components/app_spec.js FAIL
+ee/spec/frontend/dependencies/components/app_spec.js PASS
 ee/spec/frontend/dependencies/components/dependencies_actions_spec.js FAIL
 ee/spec/frontend/dependencies/components/dependencies_table_spec.js PASS
 ee/spec/frontend/dependencies/components/dependency_license_links_spec.js FAIL
@@ -409,7 +409,7 @@
 ee/spec/frontend/environments/environment_alert_spec.js PASS
 ee/spec/frontend/environments/environment_approval_spec.js FAIL
 ee/spec/frontend/environments/environment_form_spec.js PASS
-ee/spec/frontend/environments/environments_table_spec.js FAIL
+ee/spec/frontend/environments/environments_table_spec.js PASS
 ee/spec/frontend/environments/multiple_approval_rules_table_spec.js PASS
 ee/spec/frontend/environments/new_environment_item_spec.js FAIL
 ee/spec/frontend/environments_dashboard/components/dashboard_spec.js FAIL
@@ -448,12 +448,12 @@
 ee/spec/frontend/external_issues_show/components/sidebar/issue_field_dropdown_spec.js PASS
 ee/spec/frontend/external_issues_show/components/sidebar/issue_field_spec.js PASS
 ee/spec/frontend/feature_flags/components/actions_spec.js PASS
-ee/spec/frontend/feature_flags/components/edit_feature_flag_spec.js FAIL
+ee/spec/frontend/feature_flags/components/edit_feature_flag_spec.js PASS
 ee/spec/frontend/filtered_search/filtered_search_manager_spec.js PASS
 ee/spec/frontend/filtered_search/filtered_search_tokenizer_spec.js PASS
 ee/spec/frontend/filtered_search/issues_filtered_search_token_keys_spec.js PASS
 ee/spec/frontend/geo_replicable/components/app_spec.js PASS
-ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js FAIL
+ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js PASS
 ee/spec/frontend/geo_replicable/components/geo_replicable_filter_bar_spec.js FAIL
 ee/spec/frontend/geo_replicable/components/geo_replicable_item_spec.js PASS
 ee/spec/frontend/geo_replicable/components/geo_replicable_spec.js PASS
@@ -522,7 +522,7 @@
 ee/spec/frontend/groups/settings/compliance_frameworks/components/form_status_spec.js PASS
 ee/spec/frontend/groups/settings/compliance_frameworks/components/shared_form_spec.js FAIL
 ee/spec/frontend/groups/settings/compliance_frameworks/components/table_actions_spec.js PASS
-ee/spec/frontend/groups/settings/compliance_frameworks/components/table_empty_state_spec.js FAIL
+ee/spec/frontend/groups/settings/compliance_frameworks/components/table_empty_state_spec.js PASS
 ee/spec/frontend/groups/settings/compliance_frameworks/components/table_spec.js FAIL
 ee/spec/frontend/groups/settings/compliance_frameworks/init_form_spec.js PASS
 ee/spec/frontend/groups/settings/compliance_frameworks/utils_spec.js PASS
@@ -645,7 +645,7 @@
 ee/spec/frontend/oncall_schedule/delete_schedule_modal_spec.js FAIL
 ee/spec/frontend/oncall_schedule/oncall_schedule_spec.js FAIL
 ee/spec/frontend/oncall_schedule/oncall_schedule_wrapper_spec.js PASS
-ee/spec/frontend/oncall_schedule/rotations/components/add_edit_rotation_form_spec.js FAIL
+ee/spec/frontend/oncall_schedule/rotations/components/add_edit_rotation_form_spec.js PASS
 ee/spec/frontend/oncall_schedule/rotations/components/add_edit_rotation_modal_spec.js FAIL
 ee/spec/frontend/oncall_schedule/rotations/components/delete_rotation_modal_spec.js FAIL
 ee/spec/frontend/oncall_schedule/rotations/components/rotation_assignee_spec.js PASS
@@ -684,7 +684,7 @@
 ee/spec/frontend/pending_members/store/mutations_spec.js PASS
 ee/spec/frontend/pipelines/components/pipeline_tabs_spec.js FAIL
 ee/spec/frontend/pipelines/pipeline_tabs_spec.js PASS
-ee/spec/frontend/product_analytics/onboarding/components/onboarding_empty_state_spec.js FAIL
+ee/spec/frontend/product_analytics/onboarding/components/onboarding_empty_state_spec.js PASS
 ee/spec/frontend/product_analytics/onboarding/components/onboarding_list_item_spec.js PASS
 ee/spec/frontend/product_analytics/onboarding/components/onboarding_state_spec.js FAIL
 ee/spec/frontend/product_analytics/onboarding/onboarding_setup_spec.js PASS
@@ -761,7 +761,7 @@
 ee/spec/frontend/requirements/components/requirements_empty_state_spec.js FAIL
 ee/spec/frontend/requirements/components/requirements_loading_spec.js PASS
 ee/spec/frontend/requirements/components/requirements_root_spec.js FAIL
-ee/spec/frontend/requirements/components/requirements_tabs_spec.js FAIL
+ee/spec/frontend/requirements/components/requirements_tabs_spec.js PASS
 ee/spec/frontend/requirements/components/tokens/status_token_spec.js PASS
 ee/spec/frontend/requirements/mixins/requirement_meta_spec.js FAIL
 ee/spec/frontend/roadmap/components/current_day_indicator_spec.js PASS
@@ -769,7 +769,7 @@
 ee/spec/frontend/roadmap/components/epic_item_details_spec.js FAIL
 ee/spec/frontend/roadmap/components/epic_item_spec.js FAIL
 ee/spec/frontend/roadmap/components/epic_item_timeline_spec.js PASS
-ee/spec/frontend/roadmap/components/epics_list_empty_spec.js FAIL
+ee/spec/frontend/roadmap/components/epics_list_empty_spec.js PASS
 ee/spec/frontend/roadmap/components/epics_list_section_spec.js FAIL
 ee/spec/frontend/roadmap/components/milestone_item_spec.js PASS
 ee/spec/frontend/roadmap/components/milestone_timeline_spec.js PASS
@@ -949,7 +949,7 @@
 ee/spec/frontend/security_orchestration/components/instance_project_selector_spec.js FAIL
 ee/spec/frontend/security_orchestration/components/policies/filters/policy_source_filter_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policies/filters/policy_type_filter_spec.js PASS
-ee/spec/frontend/security_orchestration/components/policies/no_policies_empty_state_spec.js FAIL
+ee/spec/frontend/security_orchestration/components/policies/no_policies_empty_state_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policies/policies_app_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policies/policies_header_spec.js FAIL
 ee/spec/frontend/security_orchestration/components/policies/policies_list_spec.js FAIL
@@ -977,7 +977,7 @@
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/policy_project_dast_profile_selector_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/policy_rule_builder_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/runner_tags_list_spec.js PASS
-ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/scan_execution_policy_editor_spec.js FAIL
+ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/scan_execution_policy_editor_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_execution_policy/schedule_rule_component_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/base_layout/base_layout_component_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/base_layout/scan_type_select_spec.js PASS
@@ -988,7 +988,7 @@
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/lib/humanize_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/lib/rules_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/license_scan_rule_builder_spec.js PASS
-ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/policy_action_approvers_spec.js FAIL
+ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/policy_action_approvers_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/policy_action_builder_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/policy_action_builder_v2_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/policy_rule_branch_selection_spec.js PASS
@@ -996,7 +996,7 @@
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/role_select_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/scan_filters/filter_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/scan_filters/scan_filter_selector_spec.js PASS
-ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/scan_result_policy_editor_spec.js FAIL
+ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/scan_result_policy_editor_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/security_scan_rule_builder_spec.js PASS
 ee/spec/frontend/security_orchestration/components/policy_editor/scan_result_policy/user_select_spec.js FAIL
 ee/spec/frontend/security_orchestration/components/policy_editor/utils_spec.js PASS
@@ -1083,8 +1083,8 @@
 ee/spec/frontend/usage_quotas/seats/store/actions_spec.js PASS
 ee/spec/frontend/usage_quotas/seats/store/getters_spec.js PASS
 ee/spec/frontend/usage_quotas/seats/store/mutations_spec.js PASS
-ee/spec/frontend/usage_quotas/storage/components/container_registry_usage_spec.js FAIL
-ee/spec/frontend/usage_quotas/storage/components/dependency_proxy_usage_spec.js FAIL
+ee/spec/frontend/usage_quotas/storage/components/container_registry_usage_spec.js PASS
+ee/spec/frontend/usage_quotas/storage/components/dependency_proxy_usage_spec.js PASS
 ee/spec/frontend/usage_quotas/storage/components/namespace_storage_app_spec.js PASS
 ee/spec/frontend/usage_quotas/storage/components/number_to_human_size_spec.js PASS
 ee/spec/frontend/usage_quotas/storage/components/project_list_spec.js PASS
@@ -1126,7 +1126,7 @@
 ee/spec/frontend/vue_merge_request_widget/components/states/mr_widget_jira_association_missing_spec.js PASS
 ee/spec/frontend/vue_merge_request_widget/components/states/mr_widget_policy_violation_spec.js PASS
 ee/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js FAIL
-ee/spec/frontend/vue_merge_request_widget/components/widget/app_spec.js FAIL
+ee/spec/frontend/vue_merge_request_widget/components/widget/app_spec.js PASS
 ee/spec/frontend/vue_merge_request_widget/ee_mr_widget_options_spec.js FAIL
 ee/spec/frontend/vue_merge_request_widget/extensions/browser_performance/index_spec.js PASS
 ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/index_spec.js FAIL
@@ -1266,7 +1266,7 @@
 ee/spec/frontend/vulnerabilities/generic_report/types/url_spec.js PASS
 ee/spec/frontend/vulnerabilities/generic_report/types/utils_spec.js PASS
 ee/spec/frontend/vulnerabilities/generic_report/types/value_spec.js PASS
-ee/spec/frontend/vulnerabilities/header_spec.js FAIL
+ee/spec/frontend/vulnerabilities/header_spec.js PASS
 ee/spec/frontend/vulnerabilities/helpers_spec.js PASS
 ee/spec/frontend/vulnerabilities/history_comment_editor_spec.js FAIL
 ee/spec/frontend/vulnerabilities/history_comment_spec.js PASS
@@ -1288,7 +1288,7 @@
 ee/spec/frontend/vulnerabilities/vulnerability_state_dropdown_spec.js FAIL
 ee/spec/frontend/vulnerabilities/vulnerability_training_spec.js FAIL
 ee/spec/frontend/work_items/components/create_work_item_objective_spec.js PASS
-ee/spec/frontend/work_items/components/work_item_detail_spec.js FAIL
+ee/spec/frontend/work_items/components/work_item_detail_spec.js PASS
 ee/spec/frontend/work_items/components/work_item_health_status_spec.js PASS
 ee/spec/frontend/work_items/components/work_item_iteration_spec.js PASS
 ee/spec/frontend/work_items/components/work_item_labels_spec.js FAIL
@@ -1322,7 +1322,7 @@
 spec/frontend/add_context_commits_modal/store/mutations_spec.js PASS
 spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js PASS
 spec/frontend/admin/abuse_reports/components/abuse_report_details_spec.js PASS
-spec/frontend/admin/abuse_reports/components/abuse_report_row_spec.js FAIL
+spec/frontend/admin/abuse_reports/components/abuse_report_row_spec.js PASS
 spec/frontend/admin/abuse_reports/components/abuse_reports_filtered_search_bar_spec.js PASS
 spec/frontend/admin/abuse_reports/components/app_spec.js PASS
 spec/frontend/admin/abuse_reports/utils_spec.js PASS
@@ -1383,7 +1383,7 @@
 spec/frontend/analytics/cycle_analytics/utils_spec.js PASS
 spec/frontend/analytics/devops_reports/components/service_ping_disabled_spec.js PASS
 spec/frontend/analytics/product_analytics/components/activity_chart_spec.js PASS
-spec/frontend/analytics/shared/components/daterange_spec.js FAIL
+spec/frontend/analytics/shared/components/daterange_spec.js PASS
 spec/frontend/analytics/shared/components/metric_popover_spec.js PASS
 spec/frontend/analytics/shared/components/metric_tile_spec.js PASS
 spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js FAIL
@@ -1486,7 +1486,7 @@
 spec/frontend/boards/board_list_spec.js PASS
 spec/frontend/boards/boards_util_spec.js PASS
 spec/frontend/boards/components/board_add_new_column_form_spec.js PASS
-spec/frontend/boards/components/board_add_new_column_spec.js FAIL
+spec/frontend/boards/components/board_add_new_column_spec.js PASS
 spec/frontend/boards/components/board_add_new_column_trigger_spec.js PASS
 spec/frontend/boards/components/board_app_spec.js PASS
 spec/frontend/boards/components/board_card_move_to_position_spec.js PASS
@@ -1512,7 +1512,7 @@
 spec/frontend/boards/components/sidebar/board_editable_item_spec.js PASS
 spec/frontend/boards/components/sidebar/board_sidebar_time_tracker_spec.js PASS
 spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js PASS
-spec/frontend/boards/components/toggle_focus_spec.js FAIL
+spec/frontend/boards/components/toggle_focus_spec.js PASS
 spec/frontend/boards/project_select_spec.js FAIL
 spec/frontend/boards/stores/actions_spec.js FAIL
 spec/frontend/boards/stores/getters_spec.js PASS
@@ -1595,7 +1595,7 @@
 spec/frontend/ci/pipeline_editor/graphql/resolvers_spec.js PASS
 spec/frontend/ci/pipeline_editor/pipeline_editor_app_spec.js PASS
 spec/frontend/ci/pipeline_editor/pipeline_editor_home_spec.js PASS
-spec/frontend/ci/pipeline_new/components/pipeline_new_form_spec.js FAIL
+spec/frontend/ci/pipeline_new/components/pipeline_new_form_spec.js PASS
 spec/frontend/ci/pipeline_new/components/refs_dropdown_spec.js PASS
 spec/frontend/ci/pipeline_new/utils/filter_variables_spec.js PASS
 spec/frontend/ci/pipeline_new/utils/format_refs_spec.js PASS
@@ -1669,7 +1669,7 @@
 spec/frontend/ci/runner/components/runner_tag_spec.js PASS
 spec/frontend/ci/runner/components/runner_tags_spec.js FAIL
 spec/frontend/ci/runner/components/runner_type_badge_spec.js FAIL
-spec/frontend/ci/runner/components/runner_type_tabs_spec.js FAIL
+spec/frontend/ci/runner/components/runner_type_tabs_spec.js PASS
 spec/frontend/ci/runner/components/runner_update_form_spec.js FAIL
 spec/frontend/ci/runner/components/search_tokens/tag_token_spec.js PASS
 spec/frontend/ci/runner/components/stat/runner_count_spec.js PASS
@@ -1708,7 +1708,7 @@
 spec/frontend/clusters/forms/components/integration_form_spec.js PASS
 spec/frontend/clusters/gke_cluster_namespace/gke_cluster_namespace_spec.js PASS
 spec/frontend/clusters/stores/clusters_store_spec.js PASS
-spec/frontend/clusters_list/components/agent_empty_state_spec.js FAIL
+spec/frontend/clusters_list/components/agent_empty_state_spec.js PASS
 spec/frontend/clusters_list/components/agent_table_spec.js PASS
 spec/frontend/clusters_list/components/agent_token_spec.js FAIL
 spec/frontend/clusters_list/components/agents_spec.js FAIL
@@ -2153,7 +2153,7 @@
 spec/frontend/ide/components/ide_review_spec.js PASS
 spec/frontend/ide/components/ide_side_bar_spec.js PASS
 spec/frontend/ide/components/ide_sidebar_nav_spec.js FAIL
-spec/frontend/ide/components/ide_spec.js FAIL
+spec/frontend/ide/components/ide_spec.js PASS
 spec/frontend/ide/components/ide_status_bar_spec.js FAIL
 spec/frontend/ide/components/ide_status_list_spec.js PASS
 spec/frontend/ide/components/ide_status_mr_spec.js FAIL
@@ -2188,7 +2188,7 @@
 spec/frontend/ide/components/terminal/session_spec.js FAIL
 spec/frontend/ide/components/terminal/terminal_controls_spec.js PASS
 spec/frontend/ide/components/terminal/terminal_spec.js PASS
-spec/frontend/ide/components/terminal/view_spec.js FAIL
+spec/frontend/ide/components/terminal/view_spec.js PASS
 spec/frontend/ide/components/terminal_sync/terminal_sync_status_safe_spec.js PASS
 spec/frontend/ide/components/terminal_sync/terminal_sync_status_spec.js FAIL
 spec/frontend/ide/ide_router_extension_spec.js FAIL
@@ -2296,7 +2296,7 @@
 spec/frontend/import_entities/import_projects/components/advanced_settings_spec.js PASS
 spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js PASS
 spec/frontend/import_entities/import_projects/components/import_projects_table_spec.js FAIL
-spec/frontend/import_entities/import_projects/components/provider_repo_table_row_spec.js FAIL
+spec/frontend/import_entities/import_projects/components/provider_repo_table_row_spec.js PASS
 spec/frontend/import_entities/import_projects/store/actions_spec.js PASS
 spec/frontend/import_entities/import_projects/store/getters_spec.js PASS
 spec/frontend/import_entities/import_projects/store/mutations_spec.js PASS
@@ -2331,7 +2331,7 @@
 spec/frontend/integrations/index/components/integrations_list_spec.js PASS
 spec/frontend/integrations/index/components/integrations_table_spec.js PASS
 spec/frontend/integrations/overrides/components/integration_overrides_spec.js PASS
-spec/frontend/integrations/overrides/components/integration_tabs_spec.js FAIL
+spec/frontend/integrations/overrides/components/integration_tabs_spec.js PASS
 spec/frontend/invite_members/components/confetti_spec.js PASS
 spec/frontend/invite_members/components/group_select_spec.js PASS
 spec/frontend/invite_members/components/import_project_members_modal_spec.js PASS
@@ -2465,7 +2465,7 @@
 spec/frontend/jobs/components/job/sidebar_detail_row_spec.js PASS
 spec/frontend/jobs/components/job/sidebar_header_spec.js PASS
 spec/frontend/jobs/components/job/sidebar_spec.js PASS
-spec/frontend/jobs/components/job/stages_dropdown_spec.js FAIL
+spec/frontend/jobs/components/job/stages_dropdown_spec.js PASS
 spec/frontend/jobs/components/job/stuck_block_spec.js PASS
 spec/frontend/jobs/components/job/trigger_block_spec.js PASS
 spec/frontend/jobs/components/job/unmet_prerequisites_block_spec.js PASS
@@ -2735,9 +2735,9 @@
 spec/frontend/notes/components/note_signed_out_widget_spec.js PASS
 spec/frontend/notes/components/noteable_discussion_spec.js PASS
 spec/frontend/notes/components/noteable_note_spec.js PASS
-spec/frontend/notes/components/notes_activity_header_spec.js FAIL
+spec/frontend/notes/components/notes_activity_header_spec.js PASS
 spec/frontend/notes/components/notes_app_spec.js FAIL
-spec/frontend/notes/components/timeline_toggle_spec.js FAIL
+spec/frontend/notes/components/timeline_toggle_spec.js PASS
 spec/frontend/notes/components/toggle_replies_widget_spec.js PASS
 spec/frontend/notes/mixins/discussion_navigation_spec.js PASS
 spec/frontend/notes/stores/actions_spec.js PASS
@@ -2790,7 +2790,7 @@
 spec/frontend/packages_and_registries/harbor_registry/components/tags/tags_list_spec.js PASS
 spec/frontend/packages_and_registries/harbor_registry/pages/details_spec.js PASS
 spec/frontend/packages_and_registries/harbor_registry/pages/index_spec.js PASS
-spec/frontend/packages_and_registries/harbor_registry/pages/list_spec.js FAIL
+spec/frontend/packages_and_registries/harbor_registry/pages/list_spec.js PASS
 spec/frontend/packages_and_registries/harbor_registry/pages/tags_spec.js PASS
 spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/app_spec.js PASS
 spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/details_title_spec.js PASS
@@ -2832,16 +2832,16 @@
 spec/frontend/packages_and_registries/package_registry/components/details/package_title_spec.js FAIL
 spec/frontend/packages_and_registries/package_registry/components/details/package_versions_list_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/components/details/pypi_installation_spec.js FAIL
-spec/frontend/packages_and_registries/package_registry/components/details/version_row_spec.js FAIL
+spec/frontend/packages_and_registries/package_registry/components/details/version_row_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/components/functional/delete_packages_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js FAIL
 spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/components/list/packages_search_spec.js FAIL
 spec/frontend/packages_and_registries/package_registry/components/list/packages_title_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/components/list/publish_method_spec.js FAIL
-spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js FAIL
+spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/pages/details_spec.js FAIL
-spec/frontend/packages_and_registries/package_registry/pages/list_spec.js FAIL
+spec/frontend/packages_and_registries/package_registry/pages/list_spec.js PASS
 spec/frontend/packages_and_registries/package_registry/utils_spec.js PASS
 spec/frontend/packages_and_registries/settings/group/components/dependency_proxy_settings_spec.js PASS
 spec/frontend/packages_and_registries/settings/group/components/exceptions_input_spec.js FAIL
@@ -2929,7 +2929,7 @@
 spec/frontend/pipeline_wizard/components/input_wrapper_spec.js PASS
 spec/frontend/pipeline_wizard/components/step_nav_spec.js PASS
 spec/frontend/pipeline_wizard/components/step_spec.js FAIL
-spec/frontend/pipeline_wizard/components/widgets/checklist_spec.js FAIL
+spec/frontend/pipeline_wizard/components/widgets/checklist_spec.js PASS
 spec/frontend/pipeline_wizard/components/widgets/list_spec.js PASS
 spec/frontend/pipeline_wizard/components/widgets/text_spec.js PASS
 spec/frontend/pipeline_wizard/components/widgets_spec.js PASS
@@ -2993,7 +2993,7 @@
 spec/frontend/pipelines/test_reports/test_summary_spec.js PASS
 spec/frontend/pipelines/test_reports/test_summary_table_spec.js PASS
 spec/frontend/pipelines/time_ago_spec.js PASS
-spec/frontend/pipelines/tokens/pipeline_branch_name_token_spec.js FAIL
+spec/frontend/pipelines/tokens/pipeline_branch_name_token_spec.js PASS
 spec/frontend/pipelines/tokens/pipeline_source_token_spec.js PASS
 spec/frontend/pipelines/tokens/pipeline_status_token_spec.js PASS
 spec/frontend/pipelines/tokens/pipeline_tag_name_token_spec.js PASS
@@ -3008,8 +3008,8 @@
 spec/frontend/profile/components/activity_calendar_spec.js PASS
 spec/frontend/profile/components/activity_tab_spec.js PASS
 spec/frontend/profile/components/contributed_projects_tab_spec.js PASS
-spec/frontend/profile/components/followers_tab_spec.js FAIL
-spec/frontend/profile/components/following_tab_spec.js FAIL
+spec/frontend/profile/components/followers_tab_spec.js PASS
+spec/frontend/profile/components/following_tab_spec.js PASS
 spec/frontend/profile/components/groups_tab_spec.js PASS
 spec/frontend/profile/components/overview_tab_spec.js PASS
 spec/frontend/profile/components/personal_projects_tab_spec.js PASS
@@ -3044,8 +3044,8 @@
 spec/frontend/projects/components/shared/delete_button_spec.js FAIL
 spec/frontend/projects/details/upload_button_spec.js PASS
 spec/frontend/projects/members/utils_spec.js PASS
-spec/frontend/projects/new/components/app_spec.js FAIL
-spec/frontend/projects/new/components/deployment_target_select_spec.js FAIL
+spec/frontend/projects/new/components/app_spec.js PASS
+spec/frontend/projects/new/components/deployment_target_select_spec.js PASS
 spec/frontend/projects/new/components/new_project_push_tip_popover_spec.js PASS
 spec/frontend/projects/new/components/new_project_url_select_spec.js FAIL
 spec/frontend/projects/pipelines/charts/components/app_spec.js PASS
@@ -3320,14 +3320,14 @@
 spec/frontend/super_sidebar/components/global_search/store/getters_spec.js PASS
 spec/frontend/super_sidebar/components/global_search/store/mutations_spec.js PASS
 spec/frontend/super_sidebar/components/global_search/utils_spec.js PASS
-spec/frontend/super_sidebar/components/groups_list_spec.js FAIL
+spec/frontend/super_sidebar/components/groups_list_spec.js PASS
 spec/frontend/super_sidebar/components/help_center_spec.js PASS
 spec/frontend/super_sidebar/components/items_list_spec.js FAIL
 spec/frontend/super_sidebar/components/menu_section_spec.js PASS
 spec/frontend/super_sidebar/components/merge_request_menu_spec.js PASS
 spec/frontend/super_sidebar/components/nav_item_spec.js PASS
 spec/frontend/super_sidebar/components/pinned_section_spec.js PASS
-spec/frontend/super_sidebar/components/projects_list_spec.js FAIL
+spec/frontend/super_sidebar/components/projects_list_spec.js PASS
 spec/frontend/super_sidebar/components/search_results_spec.js PASS
 spec/frontend/super_sidebar/components/sidebar_menu_spec.js PASS
 spec/frontend/super_sidebar/components/sidebar_portal_spec.js PASS
@@ -3346,7 +3346,7 @@
 spec/frontend/tags/init_delete_tag_modal_spec.js FAIL
 spec/frontend/task_list_spec.js PASS
 spec/frontend/terms/components/app_spec.js PASS
-spec/frontend/terraform/components/empty_state_spec.js FAIL
+spec/frontend/terraform/components/empty_state_spec.js PASS
 spec/frontend/terraform/components/init_command_modal_spec.js PASS
 spec/frontend/terraform/components/states_table_actions_spec.js PASS
 spec/frontend/terraform/components/states_table_spec.js FAIL
@@ -3545,7 +3545,7 @@
 spec/frontend/vue_shared/components/filtered_search_bar/filtered_search_utils_spec.js PASS
 spec/frontend/vue_shared/components/filtered_search_bar/store/modules/filters/actions_spec.js PASS
 spec/frontend/vue_shared/components/filtered_search_bar/store/modules/filters/mutations_spec.js PASS
-spec/frontend/vue_shared/components/filtered_search_bar/tokens/base_token_spec.js FAIL
+spec/frontend/vue_shared/components/filtered_search_bar/tokens/base_token_spec.js PASS
 spec/frontend/vue_shared/components/filtered_search_bar/tokens/branch_token_spec.js PASS
 spec/frontend/vue_shared/components/filtered_search_bar/tokens/crm_contact_token_spec.js PASS
 spec/frontend/vue_shared/components/filtered_search_bar/tokens/crm_organization_token_spec.js PASS
@@ -3684,7 +3684,7 @@
 spec/frontend/vue_shared/issuable/issuable_blocked_icon_spec.js FAIL
 spec/frontend/vue_shared/issuable/list/components/issuable_bulk_edit_sidebar_spec.js PASS
 spec/frontend/vue_shared/issuable/list/components/issuable_item_spec.js FAIL
-spec/frontend/vue_shared/issuable/list/components/issuable_list_root_spec.js FAIL
+spec/frontend/vue_shared/issuable/list/components/issuable_list_root_spec.js PASS
 spec/frontend/vue_shared/issuable/list/components/issuable_tabs_spec.js PASS
 spec/frontend/vue_shared/issuable/show/components/issuable_body_spec.js FAIL
 spec/frontend/vue_shared/issuable/show/components/issuable_description_spec.js PASS
@@ -3754,8 +3754,8 @@
 spec/frontend/work_items/components/work_item_links/work_item_link_child_spec.js PASS
 spec/frontend/work_items/components/work_item_links/work_item_links_form_spec.js FAIL
 spec/frontend/work_items/components/work_item_links/work_item_links_menu_spec.js PASS
-spec/frontend/work_items/components/work_item_links/work_item_links_spec.js FAIL
-spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js FAIL
+spec/frontend/work_items/components/work_item_links/work_item_links_spec.js PASS
+spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js PASS
 spec/frontend/work_items/components/work_item_milestone_spec.js PASS
 spec/frontend/work_items/components/work_item_notes_spec.js FAIL
 spec/frontend/work_items/components/work_item_state_spec.js PASS

Statistics

note: Before is master + !119015 (merged) + !119016 (merged). Now is Before + this branch.

Metric Before Now
Tests failed 3797 3498
Suites failed 922 864
Tests passed 42484 42783
Suites passed 2849 2907

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #408993 (closed)

Edited by Illya Klymov

Merge request reports

Loading