From e39f2c7dab8bf5cbd2d754ef26e89311c3922843 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 28 May 2025 06:12:12 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .eslint_todo/vue-no-unused-properties.mjs | 3 - GITALY_SERVER_VERSION | 2 +- .../behaviors/markdown/copy_as_gfm.js | 3 +- app/models/list.rb | 2 +- .../application_settings/general.html.haml | 1 + .../beta/import_rescue_query_canceled.yml | 10 + db/database_connections/ci.yaml | 1 + db/database_connections/main.yaml | 1 + db/database_connections/sec.yaml | 1 + db/docs/ai_user_metrics.yml | 4 +- db/docs/atlassian_identities.yml | 4 +- db/docs/aws_roles.yml | 4 +- db/docs/banned_users.yml | 4 +- db/docs/compromised_password_detections.yml | 4 +- .../early_access_program_tracking_events.yml | 4 +- db/docs/emails.yml | 4 +- db/docs/ghost_user_migrations.yml | 4 +- db/docs/pipl_users.yml | 4 +- db/docs/saved_replies.yml | 4 +- db/docs/smartcard_identities.yml | 4 +- db/docs/term_agreements.yml | 4 +- db/docs/user_admin_roles.yml | 4 +- db/docs/user_broadcast_message_dismissals.yml | 4 +- db/docs/user_callouts.yml | 4 +- db/docs/user_credit_card_validations.yml | 4 +- db/docs/user_custom_attributes.yml | 4 +- db/docs/user_details.yml | 4 +- db/docs/user_follow_users.yml | 4 +- db/docs/user_highest_roles.yml | 4 +- db/docs/user_member_roles.yml | 4 +- db/docs/user_phone_number_validations.yml | 4 +- db/docs/user_preferences.yml | 4 +- db/docs/user_statuses.yml | 4 +- db/docs/user_synced_attributes_metadata.yml | 4 +- db/docs/user_uploads.yml | 4 +- db/docs/users.yml | 4 +- db/docs/vs_code_settings.yml | 4 +- db/docs/webauthn_registrations.yml | 4 +- db/gitlab_schemas/gitlab_ci.yaml | 4 + db/gitlab_schemas/gitlab_main_cell.yaml | 4 + db/gitlab_schemas/gitlab_main_user.yaml | 26 + db/gitlab_schemas/gitlab_sec.yaml | 4 + ...50507062545_add_status_columns_to_lists.rb | 10 + ...m_status_index_and_foreign_key_to_lists.rb | 19 + ..._status_check_constraint_to_board_lists.rb | 24 + ...ined_status_unique_index_to_board_lists.rb | 17 + ...stom_status_unique_index_to_board_lists.rb | 17 + ...ndex_on_id_instance_group_id_project_id.rb | 21 + ...3094447_cleanup_untethered_integrations.rb | 21 + ...ndex_on_id_instance_group_id_project_id.rb | 21 + db/schema_migrations/20250507062545 | 1 + db/schema_migrations/20250512003349 | 1 + db/schema_migrations/20250521231457 | 1 + db/schema_migrations/20250523093414 | 1 + db/schema_migrations/20250523094447 | 1 + db/schema_migrations/20250523100105 | 1 + db/schema_migrations/20250525235710 | 1 + db/schema_migrations/20250525235856 | 1 + db/structure.sql | 12 + doc/api/graphql/reference/_index.md | 41 + doc/development/cells/_index.md | 10 +- .../deprecation_guidelines/_index.md | 7 + lib/bulk_imports/ndjson_pipeline.rb | 17 + lib/gitlab/database/gitlab_schema.rb | 4 + lib/gitlab/database/gitlab_schema_info.rb | 1 + .../restrict_allowed_schemas.rb | 3 +- lib/gitlab/highlight.rb | 13 +- .../base/relation_object_saver.rb | 132 ++- .../group/relation_tree_restorer.rb | 30 + .../import_export/project/import_export.yml | 3 + lib/rouge/formatters/html_gitlab.rb | 7 +- locale/gitlab.pot | 45 + .../example_runtimes/master_report.json | 967 +++++++++--------- qa/knapsack/master_report.json | 552 +++++----- .../merge_request/user_sees_diff_spec.rb | 2 +- .../notes/components/diff_with_note_spec.js | 5 +- spec/lib/bulk_imports/ndjson_pipeline_spec.rb | 23 + .../lib/gitlab/database/gitlab_schema_spec.rb | 25 + .../database/no_cross_db_foreign_keys_spec.rb | 50 +- spec/lib/gitlab/database/sharding_key_spec.rb | 14 +- spec/lib/gitlab/diff/highlight_spec.rb | 10 +- spec/lib/gitlab/highlight_spec.rb | 7 + spec/lib/gitlab/import_export/all_models.yml | 1 + .../base/relation_object_saver_spec.rb | 103 ++ .../group/relation_tree_restorer_spec.rb | 52 + spec/lib/rouge/formatters/html_gitlab_spec.rb | 10 + .../cleanup_untethered_integrations_spec.rb | 74 ++ spec/support/finder_collection_allowlist.yml | 1 + 88 files changed, 1744 insertions(+), 813 deletions(-) create mode 100644 config/feature_flags/beta/import_rescue_query_canceled.yml create mode 100644 db/gitlab_schemas/gitlab_main_user.yaml create mode 100644 db/migrate/20250507062545_add_status_columns_to_lists.rb create mode 100644 db/migrate/20250512003349_add_custom_status_index_and_foreign_key_to_lists.rb create mode 100644 db/migrate/20250521231457_add_status_check_constraint_to_board_lists.rb create mode 100644 db/migrate/20250525235710_add_system_defined_status_unique_index_to_board_lists.rb create mode 100644 db/migrate/20250525235856_add_custom_status_unique_index_to_board_lists.rb create mode 100644 db/post_migrate/20250523093414_add_integrations_index_on_id_instance_group_id_project_id.rb create mode 100644 db/post_migrate/20250523094447_cleanup_untethered_integrations.rb create mode 100644 db/post_migrate/20250523100105_remove_integrations_index_on_id_instance_group_id_project_id.rb create mode 100644 db/schema_migrations/20250507062545 create mode 100644 db/schema_migrations/20250512003349 create mode 100644 db/schema_migrations/20250521231457 create mode 100644 db/schema_migrations/20250523093414 create mode 100644 db/schema_migrations/20250523094447 create mode 100644 db/schema_migrations/20250523100105 create mode 100644 db/schema_migrations/20250525235710 create mode 100644 db/schema_migrations/20250525235856 create mode 100644 spec/migrations/cleanup_untethered_integrations_spec.rb diff --git a/.eslint_todo/vue-no-unused-properties.mjs b/.eslint_todo/vue-no-unused-properties.mjs index f8ddb0cfd41..f5543a5088e 100644 --- a/.eslint_todo/vue-no-unused-properties.mjs +++ b/.eslint_todo/vue-no-unused-properties.mjs @@ -303,9 +303,6 @@ export default { 'ee/app/assets/javascripts/oncall_schedules/components/rotations/components/rotation_assignee.vue', 'ee/app/assets/javascripts/oncall_schedules/components/schedule/components/preset_days/days_header_sub_item.vue', 'ee/app/assets/javascripts/oncall_schedules/components/schedule/components/preset_weeks/weeks_header_item.vue', - 'ee/app/assets/javascripts/operations/components/dashboard/dashboard.vue', - 'ee/app/assets/javascripts/operations/components/dashboard/project.vue', - 'ee/app/assets/javascripts/operations/components/dashboard/project_header.vue', 'ee/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/container_scanning_counts.vue', 'ee/app/assets/javascripts/packages_and_registries/settings/project/components/dependency_proxy_packages_settings_form.vue', 'ee/app/assets/javascripts/product_analytics/onboarding/components/providers/self_managed_provider_card.vue', diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index c60c0e01c06..e9d119411e4 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -cf1b9062404cb08ff4cc12094082d8ce181ab8c1 +2121822a469daf053a08e0c9fc9a98084964ad9c diff --git a/app/assets/javascripts/behaviors/markdown/copy_as_gfm.js b/app/assets/javascripts/behaviors/markdown/copy_as_gfm.js index 05aa72959b5..7b3b5debb90 100644 --- a/app/assets/javascripts/behaviors/markdown/copy_as_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/copy_as_gfm.js @@ -143,7 +143,8 @@ export class CopyAsGFM { codeElement = document.createElement('pre'); codeElement.className = 'code highlight'; - const lang = lineElements[0].getAttribute('lang'); + const [firstLine] = lineElements; + const lang = firstLine.getAttribute('lang') || firstLine.dataset.lang; if (lang) { codeElement.setAttribute('lang', lang); } diff --git a/app/models/list.rb b/app/models/list.rb index 365e77d855e..cd5f3eedc41 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -11,7 +11,7 @@ class List < ApplicationRecord has_many :list_user_preferences - enum :list_type, { backlog: 0, label: 1, closed: 2, assignee: 3, milestone: 4, iteration: 5 } + enum :list_type, { backlog: 0, label: 1, closed: 2, assignee: 3, milestone: 4, iteration: 5, status: 6 } validates :board, :list_type, presence: true, unless: :importing? validates :label_id, uniqueness: { scope: :board_id }, if: :label? diff --git a/app/views/admin/application_settings/general.html.haml b/app/views/admin/application_settings/general.html.haml index b8c7df18e89..e480b9879b0 100644 --- a/app/views/admin/application_settings/general.html.haml +++ b/app/views/admin/application_settings/general.html.haml @@ -105,6 +105,7 @@ = render 'admin/application_settings/floc' = render_if_exists 'admin/application_settings/add_license' = render 'admin/application_settings/cluster_agents' += render_if_exists 'admin/application_settings/workspaces/agent_availability' = render 'admin/application_settings/jira_connect' = render 'admin/application_settings/slack' = render 'admin/application_settings/security_txt', expanded: expanded_by_default? diff --git a/config/feature_flags/beta/import_rescue_query_canceled.yml b/config/feature_flags/beta/import_rescue_query_canceled.yml new file mode 100644 index 00000000000..508f29fcf40 --- /dev/null +++ b/config/feature_flags/beta/import_rescue_query_canceled.yml @@ -0,0 +1,10 @@ +--- +name: import_rescue_query_canceled +description: +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/509325 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191628 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/545313 +milestone: '18.1' +group: group::import and integrate +type: beta +default_enabled: false diff --git a/db/database_connections/ci.yaml b/db/database_connections/ci.yaml index a64fa3b144a..2c2136f413a 100644 --- a/db/database_connections/ci.yaml +++ b/db/database_connections/ci.yaml @@ -9,6 +9,7 @@ lock_gitlab_schemas: - gitlab_main - gitlab_main_clusterwide - gitlab_main_clusterwide_setting + - gitlab_main_user - gitlab_main_cell - gitlab_main_cell_local - gitlab_pm diff --git a/db/database_connections/main.yaml b/db/database_connections/main.yaml index e652dcd8106..71a17ba8932 100644 --- a/db/database_connections/main.yaml +++ b/db/database_connections/main.yaml @@ -9,6 +9,7 @@ gitlab_schemas: - gitlab_pm - gitlab_main_clusterwide - gitlab_main_clusterwide_setting + - gitlab_main_user lock_gitlab_schemas: - gitlab_ci - gitlab_ci_cell_local diff --git a/db/database_connections/sec.yaml b/db/database_connections/sec.yaml index 8db350ae019..5c6054e8164 100644 --- a/db/database_connections/sec.yaml +++ b/db/database_connections/sec.yaml @@ -8,6 +8,7 @@ lock_gitlab_schemas: - gitlab_main - gitlab_main_clusterwide - gitlab_main_clusterwide_setting + - gitlab_main_user - gitlab_main_cell - gitlab_main_cell_local - gitlab_ci diff --git a/db/docs/ai_user_metrics.yml b/db/docs/ai_user_metrics.yml index e531afa8f1c..451b34304a2 100644 --- a/db/docs/ai_user_metrics.yml +++ b/db/docs/ai_user_metrics.yml @@ -9,5 +9,7 @@ feature_categories: description: Stores AI metrics per user. One record per every Duo Pro+ user. introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178559 milestone: '17.9' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/atlassian_identities.yml b/db/docs/atlassian_identities.yml index e7a4613f837..fdc1a2c59d2 100644 --- a/db/docs/atlassian_identities.yml +++ b/db/docs/atlassian_identities.yml @@ -8,5 +8,7 @@ description: Stores Atlassian credentials that are used to integrate with Atlass API introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40176 milestone: '13.4' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/aws_roles.yml b/db/docs/aws_roles.yml index 836898935b9..379c5b9d83e 100644 --- a/db/docs/aws_roles.yml +++ b/db/docs/aws_roles.yml @@ -7,5 +7,7 @@ feature_categories: description: "(Deprecated) AWS IAM role for creating EKS clusters via GitLab" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17057 milestone: '12.4' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/banned_users.yml b/db/docs/banned_users.yml index f4ce6e3951c..4b94ace75bf 100644 --- a/db/docs/banned_users.yml +++ b/db/docs/banned_users.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64728 milestone: '14.2' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/compromised_password_detections.yml b/db/docs/compromised_password_detections.yml index c2296915167..3bf69fd4110 100644 --- a/db/docs/compromised_password_detections.yml +++ b/db/docs/compromised_password_detections.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores detections of user passwords being compromised introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191112 milestone: '18.1' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/early_access_program_tracking_events.yml b/db/docs/early_access_program_tracking_events.yml index 3e1a559df51..3bc143e93f9 100644 --- a/db/docs/early_access_program_tracking_events.yml +++ b/db/docs/early_access_program_tracking_events.yml @@ -7,5 +7,7 @@ feature_categories: description: Identifiable product usage data analytics from Early access program participants. introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148990 milestone: '17.0' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/emails.yml b/db/docs/emails.yml index 346d2db686b..31ff690a081 100644 --- a/db/docs/emails.yml +++ b/db/docs/emails.yml @@ -7,7 +7,9 @@ feature_categories: description: Stores users email records introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/29cfd33d949d21d67f3892473c24d4f0a127dfe6 milestone: '6.6' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users schema_inconsistencies: - type: missing_indexes object_name: index_emails_on_email_trigram diff --git a/db/docs/ghost_user_migrations.yml b/db/docs/ghost_user_migrations.yml index 3fbeff0fe87..2dd00f914cb 100644 --- a/db/docs/ghost_user_migrations.yml +++ b/db/docs/ghost_user_migrations.yml @@ -8,5 +8,7 @@ description: Users records awaiting for their associated records to be migrated ghost user introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95473 milestone: '15.4' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/pipl_users.yml b/db/docs/pipl_users.yml index 75dcc486541..8e76c4c7dc5 100644 --- a/db/docs/pipl_users.yml +++ b/db/docs/pipl_users.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores user accesses and notifications from PIPL countries introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169769 milestone: '17.6' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/saved_replies.yml b/db/docs/saved_replies.yml index a82b57f0751..a4f3c2ccbf6 100644 --- a/db/docs/saved_replies.yml +++ b/db/docs/saved_replies.yml @@ -7,5 +7,7 @@ feature_categories: description: Text templates used to populate comments using a quick action introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80807 milestone: '14.9' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/smartcard_identities.yml b/db/docs/smartcard_identities.yml index 171beb20f31..762a8e6d854 100644 --- a/db/docs/smartcard_identities.yml +++ b/db/docs/smartcard_identities.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/b6316689fdc2d142af85b17d511d39e50712b420 milestone: '11.6' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/term_agreements.yml b/db/docs/term_agreements.yml index 6231b978050..9dba1ae6f0f 100644 --- a/db/docs/term_agreements.yml +++ b/db/docs/term_agreements.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/82eeb72c8c03727540b902d40e7e657d0a5ecb4c milestone: '10.8' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_admin_roles.yml b/db/docs/user_admin_roles.yml index a110f95bbbf..6e3261b3529 100644 --- a/db/docs/user_admin_roles.yml +++ b/db/docs/user_admin_roles.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores association between users and admin roles introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186334 milestone: '17.11' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_broadcast_message_dismissals.yml b/db/docs/user_broadcast_message_dismissals.yml index e6f593615be..167b1622e7f 100644 --- a/db/docs/user_broadcast_message_dismissals.yml +++ b/db/docs/user_broadcast_message_dismissals.yml @@ -7,5 +7,7 @@ feature_categories: description: Table to track user dismissed broadcast messages introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/151056 milestone: '17.0' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_callouts.yml b/db/docs/user_callouts.yml index f6a92743ba7..1f370e8f3d3 100644 --- a/db/docs/user_callouts.yml +++ b/db/docs/user_callouts.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/16735 milestone: '10.5' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_credit_card_validations.yml b/db/docs/user_credit_card_validations.yml index 985327afe58..588d6e7e38f 100644 --- a/db/docs/user_credit_card_validations.yml +++ b/db/docs/user_credit_card_validations.yml @@ -8,5 +8,7 @@ description: Stores whether the user has completed a first time validation to ru CI pipelines introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60626 milestone: '13.12' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_custom_attributes.yml b/db/docs/user_custom_attributes.yml index 78d8f48695b..87a9511bff1 100644 --- a/db/docs/user_custom_attributes.yml +++ b/db/docs/user_custom_attributes.yml @@ -7,5 +7,7 @@ feature_categories: description: Storing custom attributes per user introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/13038 milestone: '10.1' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_details.yml b/db/docs/user_details.yml index 3a135f4f58a..f5a7d43564b 100644 --- a/db/docs/user_details.yml +++ b/db/docs/user_details.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores user details introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25483 milestone: '12.9' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_follow_users.yml b/db/docs/user_follow_users.yml index 6ff6b31f538..ea2fc4338e9 100644 --- a/db/docs/user_follow_users.yml +++ b/db/docs/user_follow_users.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores which users follow each other introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45451 milestone: '13.9' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + follower_id: users table_size: small diff --git a/db/docs/user_highest_roles.yml b/db/docs/user_highest_roles.yml index 27c8bc0167e..7aeaab1f561 100644 --- a/db/docs/user_highest_roles.yml +++ b/db/docs/user_highest_roles.yml @@ -9,5 +9,7 @@ description: Stores highest role per User they have in a Group or a Project. If will be set to nil. introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26987 milestone: '12.9' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_member_roles.yml b/db/docs/user_member_roles.yml index 70f3fe3b816..4e3e19e2eed 100644 --- a/db/docs/user_member_roles.yml +++ b/db/docs/user_member_roles.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores association between users and member roles introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171581 milestone: '17.6' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_phone_number_validations.yml b/db/docs/user_phone_number_validations.yml index f0684d363f5..7755e98b2fd 100644 --- a/db/docs/user_phone_number_validations.yml +++ b/db/docs/user_phone_number_validations.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores whether the user has verified their phone number introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97762 milestone: '15.5' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_preferences.yml b/db/docs/user_preferences.yml index 28901f8f299..dd29dda4567 100644 --- a/db/docs/user_preferences.yml +++ b/db/docs/user_preferences.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores users' preferences introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/7816 milestone: '11.5' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_statuses.yml b/db/docs/user_statuses.yml index c59d4767265..33a398578ea 100644 --- a/db/docs/user_statuses.yml +++ b/db/docs/user_statuses.yml @@ -7,5 +7,7 @@ feature_categories: description: Stores users' statuses introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/20614 milestone: '11.2' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_synced_attributes_metadata.yml b/db/docs/user_synced_attributes_metadata.yml index c8667e71938..4c3660a18bc 100644 --- a/db/docs/user_synced_attributes_metadata.yml +++ b/db/docs/user_synced_attributes_metadata.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/4df54f260751a832ebf0b8c18524020d6604994b milestone: '10.0' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/user_uploads.yml b/db/docs/user_uploads.yml index 18a68532cd6..63b0731fc54 100644 --- a/db/docs/user_uploads.yml +++ b/db/docs/user_uploads.yml @@ -9,4 +9,6 @@ description: Stores uploads for User model introduced_by_url: milestone: '17.11' table_size: small -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + model_id: users diff --git a/db/docs/users.yml b/db/docs/users.yml index 25f100ae01f..5b51f86eda0 100644 --- a/db/docs/users.yml +++ b/db/docs/users.yml @@ -7,7 +7,9 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/9ba1224867665844b117fa037e1465bb706b3685 milestone: "<6.0" -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + id: users schema_inconsistencies: - type: missing_indexes object_name: index_users_on_id_and_last_activity_on_for_active_human_service diff --git a/db/docs/vs_code_settings.yml b/db/docs/vs_code_settings.yml index 256be285697..55ed906d659 100644 --- a/db/docs/vs_code_settings.yml +++ b/db/docs/vs_code_settings.yml @@ -7,5 +7,7 @@ feature_categories: description: VSCode Settings introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131900 milestone: '16.5' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/docs/webauthn_registrations.yml b/db/docs/webauthn_registrations.yml index 65b8367a69d..6608a9af353 100644 --- a/db/docs/webauthn_registrations.yml +++ b/db/docs/webauthn_registrations.yml @@ -7,5 +7,7 @@ feature_categories: description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35797 milestone: '13.2' -gitlab_schema: gitlab_main_clusterwide +gitlab_schema: gitlab_main_user +sharding_key: + user_id: users table_size: small diff --git a/db/gitlab_schemas/gitlab_ci.yaml b/db/gitlab_schemas/gitlab_ci.yaml index 6ede3a5de77..e448d85b182 100644 --- a/db/gitlab_schemas/gitlab_ci.yaml +++ b/db/gitlab_schemas/gitlab_ci.yaml @@ -6,3 +6,7 @@ allow_cross_transactions: - gitlab_internal - gitlab_shared require_sharding_key: true +sharding_root_tables: + - projects + - organizations + - namespaces diff --git a/db/gitlab_schemas/gitlab_main_cell.yaml b/db/gitlab_schemas/gitlab_main_cell.yaml index 65a8230f67c..b2a2cebfb6d 100644 --- a/db/gitlab_schemas/gitlab_main_cell.yaml +++ b/db/gitlab_schemas/gitlab_main_cell.yaml @@ -15,3 +15,7 @@ allow_cross_foreign_keys: - gitlab_main - gitlab_main_clusterwide require_sharding_key: true +sharding_root_tables: + - projects + - organizations + - namespaces diff --git a/db/gitlab_schemas/gitlab_main_user.yaml b/db/gitlab_schemas/gitlab_main_user.yaml new file mode 100644 index 00000000000..5bfe4ab636a --- /dev/null +++ b/db/gitlab_schemas/gitlab_main_user.yaml @@ -0,0 +1,26 @@ +name: gitlab_main_user +description: >- + Schema for all User-related tables, ex. users, etc. + Most user functionality is organizational level (e.g. commenting on an issue), + but some functionality (e.g. login) is cluster-wide. +allow_cross_joins: + - gitlab_shared + - gitlab_main + - gitlab_main_cell + - gitlab_main_clusterwide + - gitlab_main_cell_local +allow_cross_transactions: + - gitlab_internal + - gitlab_shared + - gitlab_main + - gitlab_main_cell + - gitlab_main_cell_local + - gitlab_main_clusterwide + - gitlab_main_clusterwide_setting +allow_cross_foreign_keys: + - gitlab_main + - gitlab_main_cell +require_sharding_key: true +sharding_root_tables: + - organizations + - users diff --git a/db/gitlab_schemas/gitlab_sec.yaml b/db/gitlab_schemas/gitlab_sec.yaml index 6a3e810c8ae..384cbb18bc4 100644 --- a/db/gitlab_schemas/gitlab_sec.yaml +++ b/db/gitlab_schemas/gitlab_sec.yaml @@ -6,3 +6,7 @@ allow_cross_transactions: - gitlab_internal - gitlab_shared require_sharding_key: true +sharding_root_tables: + - projects + - organizations + - namespaces diff --git a/db/migrate/20250507062545_add_status_columns_to_lists.rb b/db/migrate/20250507062545_add_status_columns_to_lists.rb new file mode 100644 index 00000000000..b3d84167507 --- /dev/null +++ b/db/migrate/20250507062545_add_status_columns_to_lists.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddStatusColumnsToLists < Gitlab::Database::Migration[2.3] + milestone '18.1' + + def change + add_column :lists, :custom_status_id, :bigint + add_column :lists, :system_defined_status_identifier, :smallint + end +end diff --git a/db/migrate/20250512003349_add_custom_status_index_and_foreign_key_to_lists.rb b/db/migrate/20250512003349_add_custom_status_index_and_foreign_key_to_lists.rb new file mode 100644 index 00000000000..69f59c9fa72 --- /dev/null +++ b/db/migrate/20250512003349_add_custom_status_index_and_foreign_key_to_lists.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddCustomStatusIndexAndForeignKeyToLists < Gitlab::Database::Migration[2.3] + milestone '18.1' + disable_ddl_transaction! + + INDEX_NAME = 'index_lists_on_custom_status_id' + + def up + add_concurrent_index :lists, :custom_status_id, name: INDEX_NAME + add_concurrent_foreign_key :lists, :work_item_custom_statuses, column: :custom_status_id, + on_delete: :cascade + end + + def down + remove_foreign_key_if_exists :lists, column: :custom_status_id + remove_concurrent_index_by_name :lists, INDEX_NAME + end +end diff --git a/db/migrate/20250521231457_add_status_check_constraint_to_board_lists.rb b/db/migrate/20250521231457_add_status_check_constraint_to_board_lists.rb new file mode 100644 index 00000000000..ae7e6a65543 --- /dev/null +++ b/db/migrate/20250521231457_add_status_check_constraint_to_board_lists.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddStatusCheckConstraintToBoardLists < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.1' + + def up + add_check_constraint( + :lists, + 'list_type != 6 OR num_nonnulls(system_defined_status_identifier, custom_status_id) = 1', + constraint_name + ) + end + + def down + remove_check_constraint :lists, constraint_name + end + + private + + def constraint_name + check_constraint_name(:lists, [:system_defined_status_identifier, :custom_status_id], 'exactly_one') + end +end diff --git a/db/migrate/20250525235710_add_system_defined_status_unique_index_to_board_lists.rb b/db/migrate/20250525235710_add_system_defined_status_unique_index_to_board_lists.rb new file mode 100644 index 00000000000..4e8eacac569 --- /dev/null +++ b/db/migrate/20250525235710_add_system_defined_status_unique_index_to_board_lists.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddSystemDefinedStatusUniqueIndexToBoardLists < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.1' + + SYSTEM_DEFINED_INDEX_NAME = 'index_lists_on_board_id_and_system_defined_status_identifier' + + def up + add_concurrent_index :lists, [:board_id, :system_defined_status_identifier], + unique: true, name: SYSTEM_DEFINED_INDEX_NAME + end + + def down + remove_concurrent_index_by_name :lists, SYSTEM_DEFINED_INDEX_NAME + end +end diff --git a/db/migrate/20250525235856_add_custom_status_unique_index_to_board_lists.rb b/db/migrate/20250525235856_add_custom_status_unique_index_to_board_lists.rb new file mode 100644 index 00000000000..63172e49a5e --- /dev/null +++ b/db/migrate/20250525235856_add_custom_status_unique_index_to_board_lists.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddCustomStatusUniqueIndexToBoardLists < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.1' + + CUSTOM_STATUS_INDEX_NAME = 'index_lists_on_board_id_and_custom_status_id' + + def up + add_concurrent_index :lists, [:board_id, :custom_status_id], + unique: true, name: CUSTOM_STATUS_INDEX_NAME + end + + def down + remove_concurrent_index_by_name :lists, CUSTOM_STATUS_INDEX_NAME + end +end diff --git a/db/post_migrate/20250523093414_add_integrations_index_on_id_instance_group_id_project_id.rb b/db/post_migrate/20250523093414_add_integrations_index_on_id_instance_group_id_project_id.rb new file mode 100644 index 00000000000..be95d3c5971 --- /dev/null +++ b/db/post_migrate/20250523093414_add_integrations_index_on_id_instance_group_id_project_id.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddIntegrationsIndexOnIdInstanceGroupIdProjectId < Gitlab::Database::Migration[2.3] + milestone '18.1' + disable_ddl_transaction! + + INDEX_NAME = 'tmp_idx_integrations_on_id_instance_group_id_project_id' + + def up + add_concurrent_index( + :integrations, + :id, + where: 'instance = FALSE AND group_id IS NULL AND project_id IS NULL', + name: INDEX_NAME + ) + end + + def down + remove_concurrent_index_by_name :integrations, INDEX_NAME + end +end diff --git a/db/post_migrate/20250523094447_cleanup_untethered_integrations.rb b/db/post_migrate/20250523094447_cleanup_untethered_integrations.rb new file mode 100644 index 00000000000..72723757309 --- /dev/null +++ b/db/post_migrate/20250523094447_cleanup_untethered_integrations.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class CleanupUntetheredIntegrations < Gitlab::Database::Migration[2.3] + milestone '18.1' + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + disable_ddl_transaction! + + BATCH_SIZE = 50 + + def up + integrations = define_batchable_model('integrations') + + integrations.where(instance: false, group_id: nil, project_id: nil).each_batch(of: BATCH_SIZE) do |batch| + batch.delete_all + end + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20250523100105_remove_integrations_index_on_id_instance_group_id_project_id.rb b/db/post_migrate/20250523100105_remove_integrations_index_on_id_instance_group_id_project_id.rb new file mode 100644 index 00000000000..14a1c417ed8 --- /dev/null +++ b/db/post_migrate/20250523100105_remove_integrations_index_on_id_instance_group_id_project_id.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class RemoveIntegrationsIndexOnIdInstanceGroupIdProjectId < Gitlab::Database::Migration[2.3] + milestone '18.1' + disable_ddl_transaction! + + INDEX_NAME = 'tmp_idx_integrations_on_id_instance_group_id_project_id' + + def up + remove_concurrent_index_by_name :integrations, INDEX_NAME + end + + def down + add_concurrent_index( + :integrations, + :id, + where: 'instance = FALSE AND group_id IS NULL AND project_id IS NULL', + name: INDEX_NAME + ) + end +end diff --git a/db/schema_migrations/20250507062545 b/db/schema_migrations/20250507062545 new file mode 100644 index 00000000000..fbe9a842bb9 --- /dev/null +++ b/db/schema_migrations/20250507062545 @@ -0,0 +1 @@ +caabb62b4beea7a8800bc8fb3a3ebb10230c7d5b71aefbc7d517603a56f4d306 \ No newline at end of file diff --git a/db/schema_migrations/20250512003349 b/db/schema_migrations/20250512003349 new file mode 100644 index 00000000000..8e20c3b6ddf --- /dev/null +++ b/db/schema_migrations/20250512003349 @@ -0,0 +1 @@ +7ea818452b5c85ce950feafe996bfde80894730124d0ec24dbdcedfa6604839e \ No newline at end of file diff --git a/db/schema_migrations/20250521231457 b/db/schema_migrations/20250521231457 new file mode 100644 index 00000000000..fa3ab4c3d5a --- /dev/null +++ b/db/schema_migrations/20250521231457 @@ -0,0 +1 @@ +151d7696251f6b0f7f3af4c0a9cd78703c2a1b3cfc1ea2a75fa41d0e78287f33 \ No newline at end of file diff --git a/db/schema_migrations/20250523093414 b/db/schema_migrations/20250523093414 new file mode 100644 index 00000000000..143143db673 --- /dev/null +++ b/db/schema_migrations/20250523093414 @@ -0,0 +1 @@ +81218ef31db2a0821ea6ff9989bac32d388db9be34d91bcc1ccdcd08f9199003 \ No newline at end of file diff --git a/db/schema_migrations/20250523094447 b/db/schema_migrations/20250523094447 new file mode 100644 index 00000000000..3f60956a6e4 --- /dev/null +++ b/db/schema_migrations/20250523094447 @@ -0,0 +1 @@ +84a53a73b99c57bef21e2e5389c379b515ee2e4d3922c26fa445e4e5f510b5e9 \ No newline at end of file diff --git a/db/schema_migrations/20250523100105 b/db/schema_migrations/20250523100105 new file mode 100644 index 00000000000..759056b3481 --- /dev/null +++ b/db/schema_migrations/20250523100105 @@ -0,0 +1 @@ +b6df9d496778fc643cef8c5a8ebd5e759fa8528a2244ee1d792dca008785555f \ No newline at end of file diff --git a/db/schema_migrations/20250525235710 b/db/schema_migrations/20250525235710 new file mode 100644 index 00000000000..0056caf828f --- /dev/null +++ b/db/schema_migrations/20250525235710 @@ -0,0 +1 @@ +cb4b0d349a517ffcad87d6d4a840686afd4051983f3678aede21f6e04a8add53 \ No newline at end of file diff --git a/db/schema_migrations/20250525235856 b/db/schema_migrations/20250525235856 new file mode 100644 index 00000000000..5f5a0375c99 --- /dev/null +++ b/db/schema_migrations/20250525235856 @@ -0,0 +1 @@ +2ce0c5cfb8cdfa89834efb6f412a7cac8b3a823c779f16849f55359d71aee500 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 7c3ab0ea1fe..8bfeed52bf0 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -16804,6 +16804,9 @@ CREATE TABLE lists ( iteration_id bigint, group_id bigint, project_id bigint, + custom_status_id bigint, + system_defined_status_identifier smallint, + CONSTRAINT check_5ed14cb08c CHECK (((list_type <> 6) OR (num_nonnulls(system_defined_status_identifier, custom_status_id) = 1))), CONSTRAINT check_6dadb82d36 CHECK ((num_nonnulls(group_id, project_id) = 1)) ); @@ -35872,8 +35875,14 @@ CREATE INDEX index_list_user_preferences_on_user_id ON list_user_preferences USI CREATE UNIQUE INDEX index_list_user_preferences_on_user_id_and_list_id ON list_user_preferences USING btree (user_id, list_id); +CREATE UNIQUE INDEX index_lists_on_board_id_and_custom_status_id ON lists USING btree (board_id, custom_status_id); + CREATE UNIQUE INDEX index_lists_on_board_id_and_label_id ON lists USING btree (board_id, label_id); +CREATE UNIQUE INDEX index_lists_on_board_id_and_system_defined_status_identifier ON lists USING btree (board_id, system_defined_status_identifier); + +CREATE INDEX index_lists_on_custom_status_id ON lists USING btree (custom_status_id); + CREATE INDEX index_lists_on_group_id ON lists USING btree (group_id); CREATE INDEX index_lists_on_iteration_id ON lists USING btree (iteration_id); @@ -42116,6 +42125,9 @@ ALTER TABLE ONLY audit_events_streaming_event_type_filters ALTER TABLE ONLY import_placeholder_user_details ADD CONSTRAINT fk_10a16b0435 FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE; +ALTER TABLE ONLY lists + ADD CONSTRAINT fk_10deab2eef FOREIGN KEY (custom_status_id) REFERENCES work_item_custom_statuses(id) ON DELETE CASCADE; + ALTER TABLE ONLY work_item_type_custom_lifecycles ADD CONSTRAINT fk_111d417cb7 FOREIGN KEY (work_item_type_id) REFERENCES work_item_types(id) ON DELETE CASCADE; diff --git a/doc/api/graphql/reference/_index.md b/doc/api/graphql/reference/_index.md index e337512e29b..a9f4dba1ca5 100644 --- a/doc/api/graphql/reference/_index.md +++ b/doc/api/graphql/reference/_index.md @@ -20344,6 +20344,29 @@ The edge type for [`WorkItem`](#workitem). | `cursor` | [`String!`](#string) | A cursor for use in pagination. | | `node` | [`WorkItem`](#workitem) | The item at the end of the edge. | +#### `WorkItemLifecycleConnection` + +The connection type for [`WorkItemLifecycle`](#workitemlifecycle). + +##### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `edges` | [`[WorkItemLifecycleEdge]`](#workitemlifecycleedge) | A list of edges. | +| `nodes` | [`[WorkItemLifecycle]`](#workitemlifecycle) | A list of nodes. | +| `pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. | + +#### `WorkItemLifecycleEdge` + +The edge type for [`WorkItemLifecycle`](#workitemlifecycle). + +##### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `cursor` | [`String!`](#string) | A cursor for use in pagination. | +| `node` | [`WorkItemLifecycle`](#workitemlifecycle) | The item at the end of the edge. | + #### `WorkItemLinkedResourceConnection` The connection type for [`WorkItemLinkedResource`](#workitemlinkedresource). @@ -27928,6 +27951,7 @@ GPG signature for a signed commit. | `isAdjournedDeletionEnabled` {{< icon name="warning-solid" >}} | [`Boolean!`](#boolean) | **Introduced** in GitLab 16.11. **Status**: Experiment. Indicates if delayed group deletion is enabled. | | `isLinkedToSubscription` | [`Boolean`](#boolean) | Indicates if group is linked to a subscription. | | `lfsEnabled` | [`Boolean`](#boolean) | Indicates if Large File Storage (LFS) is enabled for namespace. | +| `lifecycles` {{< icon name="warning-solid" >}} | [`WorkItemLifecycleConnection`](#workitemlifecycleconnection) | **Introduced** in GitLab 18.1. **Status**: Experiment. Lifecycles of work items available to the namespace. | | `linkPaths` {{< icon name="warning-solid" >}} | [`NamespacesLinkPaths`](#namespaceslinkpaths) | **Introduced** in GitLab 18.1. **Status**: Experiment. Namespace relevant paths to create links on the UI. | | `lockDuoFeaturesEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Introduced** in GitLab 16.10. **Status**: Experiment. Indicates if the GitLab Duo features enabled setting is enforced for all subgroups. | | `lockMathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are locked for all descendant groups. | @@ -33479,6 +33503,7 @@ Product analytics events for a specific month and year. | `fullPath` | [`ID!`](#id) | Full path of the namespace. | | `id` | [`ID!`](#id) | ID of the namespace. | | `lfsEnabled` | [`Boolean`](#boolean) | Indicates if Large File Storage (LFS) is enabled for namespace. | +| `lifecycles` {{< icon name="warning-solid" >}} | [`WorkItemLifecycleConnection`](#workitemlifecycleconnection) | **Introduced** in GitLab 18.1. **Status**: Experiment. Lifecycles of work items available to the namespace. | | `linkPaths` {{< icon name="warning-solid" >}} | [`NamespacesLinkPaths`](#namespaceslinkpaths) | **Introduced** in GitLab 18.1. **Status**: Experiment. Namespace relevant paths to create links on the UI. | | `name` | [`String!`](#string) | Name of the namespace. | | `packageSettings` | [`PackageSettings`](#packagesettings) | Package settings for the namespace. | @@ -41970,6 +41995,22 @@ Returns [`[WorkItemWidget!]`](#workitemwidget). | `name` | [`String`](#string) | Name of Description Template. | | `projectId` | [`Int`](#int) | ID of the description template project. | +### `WorkItemLifecycle` + +Represents a lifecycle for work items. + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `defaultClosedStatus` {{< icon name="warning-solid" >}} | [`WorkItemStatus`](#workitemstatus) | **Introduced** in GitLab 18.1. **Status**: Experiment. Default closed status of the lifecycle. | +| `defaultDuplicateStatus` {{< icon name="warning-solid" >}} | [`WorkItemStatus`](#workitemstatus) | **Introduced** in GitLab 18.1. **Status**: Experiment. Default duplicate status of the lifecycle. | +| `defaultOpenStatus` {{< icon name="warning-solid" >}} | [`WorkItemStatus`](#workitemstatus) | **Introduced** in GitLab 18.1. **Status**: Experiment. Default open status of the lifecycle. | +| `id` {{< icon name="warning-solid" >}} | [`GlobalID`](#globalid) | **Introduced** in GitLab 18.1. **Status**: Experiment. ID of the lifecycle. | +| `name` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 18.1. **Status**: Experiment. Name of the lifecycle. | +| `statuses` {{< icon name="warning-solid" >}} | [`[WorkItemStatus!]`](#workitemstatus) | **Introduced** in GitLab 18.1. **Status**: Experiment. All available statuses of the lifecycle. | +| `workItemTypes` {{< icon name="warning-solid" >}} | [`[WorkItemType!]`](#workitemtype) | **Introduced** in GitLab 18.1. **Status**: Experiment. Work item types associated to the lifecycle. | + ### `WorkItemLinkedResource` #### Fields diff --git a/doc/development/cells/_index.md b/doc/development/cells/_index.md index 3659ba97917..39b1448d295 100644 --- a/doc/development/cells/_index.md +++ b/doc/development/cells/_index.md @@ -19,7 +19,7 @@ Below are available schemas related to Cells and Organizations: | `gitlab_main_cell_local` | For tables in the `main:` database that are related to features that is distinct for each cell. For example, `zoekt_nodes`, or `shards`. These cell-local tables should not have any foreign key references from/to organization tables. | | `gitlab_ci` | Use for all tables in the `ci:` database that are for an Organization. For example, `ci_pipelines` and `ci_builds` | | `gitlab_ci_cell_local` | For tables in the `ci:` database that are related to features that is distinct for each cell. For example, `instance_type_ci_runners`, or `ci_cost_settings`. These cell-local tables should not have any foreign key references from/to organization tables. | -| `gitlab_main_user` | Upcoming schema, related to Users. For example, `users`. | +| `gitlab_main_user` | Schema for all User-related tables, ex. users, etc. Most user functionality is organizational level (e.g. commenting on an issue), but some functionality (e.g. login) is cluster-wide. | ## Choose either the `gitlab_main_cell` or `gitlab_main_clusterwide` schema @@ -54,6 +54,7 @@ All tables with the following `gitlab_schema` are considered organization level: - `gitlab_main_cell` - `gitlab_ci` - `gitlab_sec` +- `gitlab_main_user` All newly created organization-level tables are required to have a `sharding_key` defined in the corresponding `db/docs/` file for that table. @@ -112,6 +113,13 @@ The following are examples of valid sharding keys: namespace_id: namespaces ``` +- (Only for `gitlab_main_user`) The table entries belong to a user only: + + ```yaml + sharding_key: + user_id: user + ``` + ### The sharding key must be immutable The choice of a `sharding_key` should always be immutable. This is because the diff --git a/doc/development/deprecation_guidelines/_index.md b/doc/development/deprecation_guidelines/_index.md index aa89d4c4512..1d80de34962 100644 --- a/doc/development/deprecation_guidelines/_index.md +++ b/doc/development/deprecation_guidelines/_index.md @@ -80,6 +80,13 @@ than the [standard cycle](#when-can-a-feature-be-removedchanged) before a breaki See the [GraphQL deprecation process](../api_graphql_styleguide.md#deprecating-schema-items). +## Webhook breaking changes + +We cannot make breaking changes to webhook payloads. + +For a list of what constitutes a breaking webhook payload change and what to do instead, see the +[Webhook breaking changes guide](../../development/webhooks.md#breaking-changes). + ## How are Community Contributions to a deprecated feature handled? Development on deprecated features is restricted to Priority 1 / Severity 1 bug fixes. Any community contributions to deprecated features are unlikely to be prioritized during milestone planning. diff --git a/lib/bulk_imports/ndjson_pipeline.rb b/lib/bulk_imports/ndjson_pipeline.rb index bb075834486..a706c7aba9a 100644 --- a/lib/bulk_imports/ndjson_pipeline.rb +++ b/lib/bulk_imports/ndjson_pipeline.rb @@ -68,6 +68,7 @@ module BulkImports saver.execute capture_invalid_subrelations(saver.invalid_subrelations) + capture_failed_subrelations(saver.failed_subrelations) else if object.invalid? Gitlab::Import::Errors.merge_nested_errors(object) @@ -176,6 +177,22 @@ module BulkImports end end + def capture_failed_subrelations(failed_subrelations) + failed_subrelations.each do |failure| + record = failure[:record] + exception = failure[:exception] + + BulkImports::Failure.create( + bulk_import_entity_id: tracker.entity.id, + pipeline_class: tracker.pipeline_name, + exception_class: exception.class.to_s, + exception_message: exception.message, + correlation_id_value: Labkit::Correlation::CorrelationId.current_or_new_id, + subrelation: record.class.to_s + ) + end + end + # Creates an Import::SourceUser objects for each source_user_identifier # found in the relation_hash and associate it with the ImportUser. # diff --git a/lib/gitlab/database/gitlab_schema.rb b/lib/gitlab/database/gitlab_schema.rb index a8fd81ed48a..f35682fa456 100644 --- a/lib/gitlab/database/gitlab_schema.rb +++ b/lib/gitlab/database/gitlab_schema.rb @@ -91,6 +91,10 @@ module Gitlab Gitlab::Database.all_gitlab_schemas[schema.to_s].require_sharding_key end + def self.sharding_root_tables(schema) + Gitlab::Database.all_gitlab_schemas[schema.to_s].sharding_root_tables + end + def self.cross_joins_allowed?(table_schemas, all_tables) return true unless table_schemas.many? diff --git a/lib/gitlab/database/gitlab_schema_info.rb b/lib/gitlab/database/gitlab_schema_info.rb index 303568b9814..16524b26e02 100644 --- a/lib/gitlab/database/gitlab_schema_info.rb +++ b/lib/gitlab/database/gitlab_schema_info.rb @@ -10,6 +10,7 @@ module Gitlab :allow_cross_foreign_keys, :file_path, :require_sharding_key, + :sharding_root_tables, keyword_init: true ) do def initialize(*) diff --git a/lib/gitlab/database/query_analyzers/restrict_allowed_schemas.rb b/lib/gitlab/database/query_analyzers/restrict_allowed_schemas.rb index bf0ae20564c..2a600fe557b 100644 --- a/lib/gitlab/database/query_analyzers/restrict_allowed_schemas.rb +++ b/lib/gitlab/database/query_analyzers/restrict_allowed_schemas.rb @@ -23,7 +23,8 @@ module Gitlab gitlab_main_cell: :gitlab_main, gitlab_main_cell_local: :gitlab_main, gitlab_ci_cell_local: :gitlab_ci, - gitlab_main_clusterwide_setting: :gitlab_main + gitlab_main_clusterwide_setting: :gitlab_main, + gitlab_main_user: :gitlab_main }.freeze class << self diff --git a/lib/gitlab/highlight.rb b/lib/gitlab/highlight.rb index 301a40aab65..f5967374700 100644 --- a/lib/gitlab/highlight.rb +++ b/lib/gitlab/highlight.rb @@ -58,22 +58,23 @@ module Gitlab def highlight_text(text, continue: true, plain: false, used_on: :blob) @gitlab_highlight_usage_counter.increment(used_on: used_on) + fix_attributes = used_on == :diff if plain - highlight_plain(text) + highlight_plain(text, fix_attributes:) else - highlight_rich(text, continue: continue) + highlight_rich(text, continue:, fix_attributes:) end end - def highlight_plain(text) - @formatter.format(Rouge::Lexers::PlainText.lex(text), **context).html_safe + def highlight_plain(text, fix_attributes: false) + @formatter.format(Rouge::Lexers::PlainText.lex(text), **context, fix_attributes:).html_safe end - def highlight_rich(text, continue: true) + def highlight_rich(text, continue: true, fix_attributes: false) tag = lexer.tag tokens = lexer.lex(text, continue: continue) - Gitlab::RenderTimeout.timeout { @formatter.format(tokens, **context, tag: tag).html_safe } + Gitlab::RenderTimeout.timeout { @formatter.format(tokens, **context, tag:, fix_attributes:).html_safe } rescue Timeout::Error => e Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e) highlight_plain(text) diff --git a/lib/gitlab/import_export/base/relation_object_saver.rb b/lib/gitlab/import_export/base/relation_object_saver.rb index 62bd650c1d5..4b73833572b 100644 --- a/lib/gitlab/import_export/base/relation_object_saver.rb +++ b/lib/gitlab/import_export/base/relation_object_saver.rb @@ -15,8 +15,14 @@ module Gitlab include Gitlab::Utils::StrongMemoize BATCH_SIZE = 100 + # Default retry count for handling ActiveRecord::QueryCanceled + MAX_RETRY_COUNT = 3 + # Factor to reduce batch size by when retrying after a timeout + BATCH_SIZE_REDUCTION_FACTOR = 4 - attr_reader :invalid_subrelations + MAX_EXCEPTION_RESCUE_COUNT = 20 + + attr_reader :invalid_subrelations, :failed_subrelations # @param relation_object [Object] Object of a project/group, e.g. an issue # @param relation_key [String] Name of the object association to group/project, e.g. :issues @@ -36,6 +42,8 @@ module Gitlab @relation_definition = relation_definition @importable = importable @invalid_subrelations = [] + @failed_subrelations = [] + @exceptions_rescued = 0 end def execute @@ -50,31 +58,119 @@ module Gitlab attr_reader :relation_object, :relation_key, :relation_definition, :importable, :collection_subrelations + # Processes all collection subrelations in configurable batches. + # + # Iterates through each collection subrelation that was extracted during + # the move_subrelations step and processes them in batches of BATCH_SIZE + # to prevent database timeouts. + # + # @example Processing a collection of 300 notes + # # Initial state: { "notes" => [note1, note2, ..., note300] } + # # Will create 3 batches of 100 records each: + # # - Batch 1: notes[1-100] + # # - Batch 2: notes[101-200] + # # - Batch 3: notes[201-300] + # # rubocop:disable GitlabSecurity/PublicSend def save_subrelations collection_subrelations.each_pair do |relation_name, records| records.each_slice(BATCH_SIZE) do |batch| - valid_records, invalid_records = batch.partition { |record| record.valid? } - - relation_object.public_send(relation_name) << valid_records - - # Attempt to save some of the invalid subrelations, as they might be valid after all. - # For example, a merge request `Approval` validates presence of merge_request_id. - # It is not present at a time of calling `#valid?` above, since it's indeed missing. - # However, when saving such subrelation against already persisted merge request - # such validation won't fail (e.g. `merge_request.approvals << Approval.new(user_id: 1)`), - # as we're operating on a merge request that has `id` present. - invalid_records.each do |invalid_record| - relation_object.public_send(relation_name) << invalid_record - - invalid_subrelations << invalid_record unless invalid_record.persisted? - end - - relation_object.save + save_batch_with_retry(relation_name, batch) end end end + # Saves a batch of records for a specific relation with retry logic. + # + # This method partitions the batch into valid and invalid records, processes + # them accordingly, and implements retry logic for database timeouts. + # + # @example Processing a batch of records with potential timeout + # save_batch_with_retry("notes", batch_of_notes, 0) + # # If successful, all notes will be saved + # # If timeout occurs, will call process_with_smaller_batch_size + def save_batch_with_retry(relation_name, batch, retry_count = 0) + valid_records, invalid_records = batch.partition { |record| record.valid? } + + save_valid_records(relation_name, valid_records) + + save_potentially_invalid_records(relation_name, invalid_records) + + relation_object.save + rescue ActiveRecord::QueryCanceled => e # rubocop:disable Database/RescueQueryCanceled -- retry with smaller batches + # Feature flag is disabled, don't rescue, re-raise the exception + raise e unless Feature.enabled?(:import_rescue_query_canceled, importable) + + # Check if we've exceeded the maximum number of exceptions to rescue for this relation_object (Ex. Issue) + raise e if @exceptions_rescued >= MAX_EXCEPTION_RESCUE_COUNT + + @exceptions_rescued += 1 + + track_exception(batch, e, relation_name, retry_count) + process_with_smaller_batch_size(relation_name, batch, retry_count, e) + end + + def save_valid_records(relation_name, valid_records) + relation_object.public_send(relation_name) << valid_records + end + + def save_potentially_invalid_records(relation_name, invalid_records) + # Attempt to save some of the invalid subrelations, as they might be valid after all. + # For example, a merge request `Approval` validates presence of merge_request_id. + # It is not present at a time of calling `#valid?` above, since it's indeed missing. + # However, when saving such subrelation against already persisted merge request + # such validation won't fail (e.g. `merge_request.approvals << Approval.new(user_id: 1)`), + # as we're operating on a merge request that has `id` present. + invalid_records.each do |invalid_record| + relation_object.public_send(relation_name) << invalid_record + + invalid_subrelations << invalid_record unless invalid_record.persisted? + end + end + + # Handles database timeouts by retrying with smaller batch sizes. + # + # When a batch processing operation times out (ActiveRecord::QueryCanceled), + # this method reduces the batch size by BATCH_SIZE_REDUCTION_FACTOR and retries + # with smaller batches until reaching MAX_RETRY_COUNT. + # + # @example Handling a timeout with a batch of 100 records + # # Initial batch of 100 causes timeout (retry_count = 0) + # # - New batch size = ceiling(100/4) = 25 + # # - Creates 4 smaller batches of 25 each + # # - Retry count incremented to 1 + def process_with_smaller_batch_size(relation_name, batch, retry_count, exception) + unless retry_count < MAX_RETRY_COUNT + handle_max_retries_exceeded(batch, exception) + return + end + + new_retry_count = retry_count + 1 + + new_batch_size = (batch.size / BATCH_SIZE_REDUCTION_FACTOR.to_f).ceil + + batch.each_slice(new_batch_size) do |smaller_batch| + save_batch_with_retry(relation_name, smaller_batch, new_retry_count) + end + end + + def handle_max_retries_exceeded(batch, exception) + batch.each do |record| + @failed_subrelations << { record: record, exception: exception } + end + end + + def track_exception(batch, exception, relation_name, retry_count) + Gitlab::ErrorTracking.track_exception( + exception, + relation_name: relation_name, + relation_key: relation_key, + batch_size: batch.size, + retry_count: retry_count, + exceptions_rescued: @exceptions_rescued + ) + end + def move_subrelations strong_memoize(:collection_subrelations) do relation_definition.each_key.each_with_object({}) do |definition, collection_subrelations| diff --git a/lib/gitlab/import_export/group/relation_tree_restorer.rb b/lib/gitlab/import_export/group/relation_tree_restorer.rb index be1e679f2b5..4386db9010d 100644 --- a/lib/gitlab/import_export/group/relation_tree_restorer.rb +++ b/lib/gitlab/import_export/group/relation_tree_restorer.rb @@ -147,6 +147,7 @@ module Gitlab saver.execute log_invalid_subrelations(saver.invalid_subrelations, relation_key) + log_failed_subrelations(saver.failed_subrelations, relation_key) else if relation_object.invalid? Gitlab::Import::Errors.merge_nested_errors(relation_object) @@ -360,6 +361,35 @@ module Gitlab end end + def log_failed_subrelations(failed_subrelations, relation_key) + failed_subrelations.each do |failure| + record = failure[:record] + exception = failure[:exception] + + exception_class = exception.class.to_s + exception_message = exception.message + subrelation_class = record.class.to_s + + @shared.logger.info( + message: '[Project/Group Import] Failed subrelation', + importable_column_name => @importable.id, + relation_key: relation_key, + exception_class: exception_class, + exception_message: exception_message, + subrelation: subrelation_class + ) + + ::ImportFailure.create( + source: 'RelationTreeRestorer#save_relation_object', + relation_key: relation_key, + exception_class: exception_class, + exception_message: exception_message, + correlation_id_value: Labkit::Correlation::CorrelationId.current_or_new_id, + importable_column_name => @importable.id + ) + end + end + def importable_column_name @column_name ||= @importable.class.reflect_on_association(:import_failures).foreign_key.to_sym end diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml index 09cf3159fb4..374f59937c3 100644 --- a/lib/gitlab/import_export/project/import_export.yml +++ b/lib/gitlab/import_export/project/import_export.yml @@ -1048,6 +1048,9 @@ excluded_attributes: - :label_id - :milestone_id - :iteration_id + - :system_defined_status_identifier + - :custom_status_id + epic: - :start_date_sourcing_milestone_id - :due_date_sourcing_milestone_id diff --git a/lib/rouge/formatters/html_gitlab.rb b/lib/rouge/formatters/html_gitlab.rb index a7e95a96b8b..d246ebeba09 100644 --- a/lib/rouge/formatters/html_gitlab.rb +++ b/lib/rouge/formatters/html_gitlab.rb @@ -12,6 +12,7 @@ module Rouge def initialize(options = {}) @tag = options[:tag] @line_number = options[:line_number] || 1 + @fix_attributes = options[:fix_attributes] @ellipsis_indexes = options[:ellipsis_indexes] || [] @ellipsis_svg = options[:ellipsis_svg] end @@ -22,7 +23,11 @@ module Rouge yield "\n" unless is_first is_first = false - yield %() + id = " id=\"LC#{@line_number}\"" unless @fix_attributes + lang = " lang=\"#{@tag}\"" unless @fix_attributes + data_lang = " data-lang=\"#{@tag}\"" if @fix_attributes && @tag + + yield %() line.each do |token, value| value = value.chomp! || value diff --git a/locale/gitlab.pot b/locale/gitlab.pot index b098310d4ed..b71534102ad 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -2173,6 +2173,9 @@ msgstr "" msgid "A limit of %{ci_project_subscriptions_limit} subscriptions to or from a project applies." msgstr "" +msgid "A list for this status already exists on the board" +msgstr "" + msgid "A management, operational, or technical control (that is, safeguard or countermeasure) employed by an organization that provides equivalent or comparable protection for an information system." msgstr "" @@ -12295,6 +12298,9 @@ msgstr "" msgid "Cannot refer to a group milestone by an internal id!" msgstr "" +msgid "Cannot set both system defined status and custom status" +msgstr "" + msgid "Cannot show preview. For previews on sketch files, they must have the file format introduced by Sketch version 43 and above." msgstr "" @@ -59537,6 +59543,12 @@ msgstr "" msgid "Status checks must pass." msgstr "" +msgid "Status feature not available" +msgstr "" + +msgid "Status list requires either a system defined status or custom status" +msgstr "" + msgid "Status lists not available with your current license" msgstr "" @@ -70262,12 +70274,21 @@ msgstr "" msgid "Workspaces|Allowed agents" msgstr "" +msgid "Workspaces|Availability" +msgstr "" + +msgid "Workspaces|Available" +msgstr "" + msgid "Workspaces|Block agent" msgstr "" msgid "Workspaces|Block this agent for all group members?" msgstr "" +msgid "Workspaces|Blocked" +msgstr "" + msgid "Workspaces|Blocking an agent doesn't delete it. Agents can only be deleted in the project where they were created." msgstr "" @@ -70277,6 +70298,12 @@ msgstr "" msgid "Workspaces|Cluster agent" msgstr "" +msgid "Workspaces|Configure which Kubernetes agents are available for new workspaces. These settings do not affect existing workspaces." +msgstr "" + +msgid "Workspaces|Connected" +msgstr "" + msgid "Workspaces|Could not load available agents. Refresh the page to try again." msgstr "" @@ -70334,6 +70361,9 @@ msgstr "" msgid "Workspaces|GitLab devfile" msgstr "" +msgid "Workspaces|Group" +msgstr "" + msgid "Workspaces|Group agents" msgstr "" @@ -70352,18 +70382,27 @@ msgstr "" msgid "Workspaces|Learn more." msgstr "" +msgid "Workspaces|Name" +msgstr "" + msgid "Workspaces|New workspace" msgstr "" msgid "Workspaces|No active workspaces" msgstr "" +msgid "Workspaces|No agents available" +msgstr "" + msgid "Workspaces|No agents available to create workspaces. Please consult %{linkStart}Workspaces documentation%{linkEnd} for troubleshooting." msgstr "" msgid "Workspaces|No terminated workspaces" msgstr "" +msgid "Workspaces|Not connected" +msgstr "" + msgid "Workspaces|Open workspace" msgstr "" @@ -70394,6 +70433,9 @@ msgstr "" msgid "Workspaces|Starting workspace" msgstr "" +msgid "Workspaces|Status" +msgstr "" + msgid "Workspaces|Stop" msgstr "" @@ -70454,6 +70496,9 @@ msgstr "" msgid "Workspaces|Workspaces" msgstr "" +msgid "Workspaces|Workspaces Agent Availability" +msgstr "" + msgid "Workspaces|Workspaces Settings" msgstr "" diff --git a/qa/knapsack/example_runtimes/master_report.json b/qa/knapsack/example_runtimes/master_report.json index 71192a25c7a..e1ddf186ed4 100644 --- a/qa/knapsack/example_runtimes/master_report.json +++ b/qa/knapsack/example_runtimes/master_report.json @@ -5,329 +5,345 @@ "./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:1:2]": 10.695891336, "./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:1]": 21.718634525, "./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:2]": 24.070834486, - "./qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb[1:1:1]": 22.169961321, - "./qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb[1:1:2]": 14.852703426, - "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:1:1]": 19.307340733, - "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:1:2]": 16.659088918, - "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:2:1]": 26.983705693, - "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:2:2]": 19.922903301, - "./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:1]": 72.536127726, - "./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:2:1]": 38.531486875, - "./qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb[1:1:1]": 118.879553314, - "./qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb[1:1:1]": 63.731153411, - "./qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb[1:1:2:1]": 70.052011917, - "./qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb[1:1:1]": 10.095724911, - "./qa/specs/features/api/1_manage/import/import_github_repo_spec.rb[1:1:1:1]": 144.588758096, - "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:1]": 9.421289079, - "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:2]": 20.820812777, - "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:3]": 12.095066944, - "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:4]": 14.34966106, - "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:5]": 14.651701008, - "./qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb[1:1:2:1]": 64.406505144, - "./qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb[1:1:2:1]": 107.140294162, - "./qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb[1:1:3:1]": 108.045392924, - "./qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb[1:1:1:1]": 113.985270328, - "./qa/specs/features/api/1_manage/rate_limits_spec.rb[1:1:1]": 15.744893631, - "./qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb[1:1:1]": 23.69081331, - "./qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb[1:1:1]": 28.261680069, - "./qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb[1:1:1]": 44.658159605, - "./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:1]": 14.781829821, - "./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:2]": 21.263122444, - "./qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb[1:1:1:1]": 1.266904665, - "./qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb[1:1:1]": 18.640052021, - "./qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb[1:1:1]": 12.601774172, - "./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:1]": 6.717906989, - "./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:2]": 7.350882422, - "./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:1]": 6.912397059, - "./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:2:1]": 5.616776291, - "./qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb[1:1:1]": 20.021040605, - "./qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb[1:1:1]": 15.740256803, - "./qa/specs/features/api/3_create/repository/storage_size_spec.rb[1:1:1]": 20.043217391, - "./qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb[1:1:1:1:1]": 11.599297564, - "./qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb[1:1:1]": 131.967654197, - "./qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb[1:1:1]": 15.865443736, - "./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:1]": 34.771362515, - "./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:2]": 28.025699287, - "./qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb[1:1:1]": 71.879704206, - "./qa/specs/features/api/8_monitor/metrics_spec.rb[1:1:2:1]": 2.786461008, - "./qa/specs/features/api/8_monitor/metrics_spec.rb[1:2:1:1]": 3.518666677, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:1]": 21.040575559, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:2]": 20.582314286, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:3]": 10.731780048, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:1]": 38.674102463, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:2]": 10.114654911, - "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:3]": 7.437524023, - "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:1]": 3.709235014, - "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:2]": 4.01026679, - "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:3]": 2.244739111, + "./qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb[1:1:1]": 25.448957756, + "./qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb[1:1:2]": 15.05817004, + "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:1:1]": 21.126866116, + "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:1:2]": 15.524730521, + "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:2:1]": 28.640184328, + "./qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb[1:1:2:2]": 21.543615021, + "./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:1]": 70.899641693, + "./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:2:1]": 33.373308786, + "./qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb[1:1:1]": 101.114687345, + "./qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb[1:1:1]": 56.047974686, + "./qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb[1:1:2:1]": 55.344215321, + "./qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb[1:1:1]": 23.95807231, + "./qa/specs/features/api/1_manage/import/import_github_repo_spec.rb[1:1:1:1]": 113.710036538, + "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:1]": 19.451009247, + "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:2]": 23.780012411, + "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:3]": 19.802929145, + "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:4]": 15.58668256, + "./qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb[1:1:5]": 16.324648701, + "./qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb[1:1:2:1]": 83.516041543, + "./qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb[1:1:2:1]": 125.227222162, + "./qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb[1:1:3:1]": 101.78184991, + "./qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb[1:1:1:1]": 109.571780505, + "./qa/specs/features/api/1_manage/rate_limits_spec.rb[1:1:1]": 20.978583269, + "./qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb[1:1:1]": 16.557301806, + "./qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb[1:1:1]": 16.535545897, + "./qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb[1:1:1]": 32.20775568, + "./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:1]": 16.516853713, + "./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:2]": 24.110178253, + "./qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb[1:1:1:1]": 1.065545759, + "./qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb[1:1:1]": 18.019920263, + "./qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb[1:1:1]": 22.496511341, + "./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:1]": 4.425094491, + "./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:2]": 5.741569965, + "./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:1]": 9.439754486, + "./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:2:1]": 15.550131334, + "./qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb[1:1:1]": 17.059176291, + "./qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb[1:1:1]": 24.840109642, + "./qa/specs/features/api/3_create/repository/storage_size_spec.rb[1:1:1]": 21.335184197, + "./qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb[1:1:1:1:1]": 5.494622621, + "./qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb[1:1:1]": 142.115423092, + "./qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb[1:1:1]": 17.769514023, + "./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:1]": 33.574104275, + "./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:2]": 22.797148199, + "./qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb[1:1:1]": 39.656142093, + "./qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb[1:1:1]": 132.604777095, + "./qa/specs/features/api/8_monitor/metrics_spec.rb[1:1:2:1]": 2.974755236, + "./qa/specs/features/api/8_monitor/metrics_spec.rb[1:2:1:1]": 3.636577425, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:1]": 17.648855849, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:2]": 22.918220687, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:3]": 13.793934679, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:1]": 50.507601671, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:2]": 18.852620488, + "./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:3]": 11.686010847, + "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:1]": 1.465448503, + "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:2]": 1.258433934, + "./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:3]": 1.261456407, "./qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb[1:1:1]": 16.751283529, - "./qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb[1:1:1]": 11.194772573, + "./qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb[1:1:1]": 10.870345752, "./qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb[1:1:1]": 19.351324594, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/group/group_access_token_spec.rb[1:1:1]": 21.580589138, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb[1:1:1]": 55.693922028, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb[1:1:1]": 70.846094125, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_spec.rb[1:1:1]": 13.217373594, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_with_2fa_spec.rb[1:1:1]": 103.346868708, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_gitlab_via_ldap_spec.rb[1:1:1]": 5.660347945, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb[1:1:1]": 34.289283601, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb[1:1:1]": 17.418966895, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb[1:1:1]": 43.109740398, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:1:1]": 2.696219423, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:1:1:1]": 35.461285878, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:1:2:1]": 19.6920713, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:2:1]": 51.726969356, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb[1:1:1]": 26.75519261, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb[1:1:1]": 38.079002374, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:1]": 16.918602636, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:2]": 19.480309512, - "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:3]": 10.444984895, - "./qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb[1:1:1:1]": 46.676631291, - "./qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb[1:1:1:1]": 17.099139252, - "./qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb[1:1:1:1]": 18.479658543, - "./qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb[1:1:1]": 79.945725031, - "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb[1:1:1]": 26.911794017, - "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb[1:1:2]": 35.796571191, - "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb[1:1:1]": 65.623645693, - "./qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb[1:1:1:1]": 47.210321893, - "./qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb[1:1:2:1]": 34.563427037, - "./qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1]": 69.591312824, - "./qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb[1:1:1:1]": 184.821466283, - "./qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb[1:1:1]": 26.971105193, - "./qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb[1:1:1]": 30.997345377, - "./qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb[1:1:1]": 30.297804087, - "./qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb[1:1:1]": 25.524434427, - "./qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb[1:1:1]": 17.831849922, - "./qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb[1:1:1]": 25.714214326, - "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:1]": 46.897753083, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/group/group_access_token_spec.rb[1:1:1]": 22.763037134, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb[1:1:1]": 74.192848173, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb[1:1:1]": 80.654859371, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_spec.rb[1:1:1]": 13.238494187, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_with_2fa_spec.rb[1:1:1]": 113.36947772, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_gitlab_via_ldap_spec.rb[1:1:1]": 5.65725764, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb[1:1:1]": 34.077286994, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb[1:1:1]": 17.397316189, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb[1:1:1]": 43.126849934, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:1:1]": 5.966423955, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:1:1:1]": 31.906800752, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:1:2:1]": 16.391059297, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb[1:2:2:1]": 53.848579337, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb[1:1:1]": 24.624188891, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb[1:1:1]": 40.402813832, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:1]": 26.595198764, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:2]": 13.514681304, + "./qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb[1:1:1:3]": 8.440396222, + "./qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb[1:1:1:1]": 43.910318888, + "./qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb[1:1:1:1]": 17.988410961, + "./qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb[1:1:1:1]": 15.955078023, + "./qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb[1:1:1]": 69.953257383, + "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb[1:1:1]": 34.825688887, + "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb[1:1:2]": 37.663945001, + "./qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb[1:1:1]": 54.613596995, + "./qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb[1:1:1:1]": 31.858457415, + "./qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb[1:1:2:1]": 33.510852483, + "./qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1]": 64.611123131, + "./qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb[1:1:1:1]": 192.390731976, + "./qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb[1:1:1]": 26.774116497, + "./qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb[1:1:1]": 37.255270892, + "./qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb[1:1:1]": 29.353541028, + "./qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb[1:1:1]": 23.591866421, + "./qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb[1:1:1]": 22.717227966, + "./qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb[1:1:1]": 30.61899609, + "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:1]": 52.829779699, "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:2]": 75.061865172, - "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:3]": 40.159700608, - "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:4:1]": 44.866767187, - "./qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb[1:1:1]": 34.393434571, - "./qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb[1:1:1]": 37.867855905, - "./qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb[1:1:1]": 25.022355173, - "./qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb[1:1:1]": 29.944848117, - "./qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb[1:1:1]": 26.604720815, - "./qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb[1:1:1]": 20.038858112, - "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:1:1]": 21.778406168, - "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:2:1]": 38.070434358, - "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:1:1]": 25.589997648, - "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:2:1]": 39.825970977, - "./qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb[1:1:1]": 25.291191959, - "./qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb[1:1:1]": 25.470842388, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:1]": 16.951042508, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:2]": 16.469473878, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:3]": 12.792718643, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:4]": 13.698615919, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:5]": 19.339460861, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:1]": 15.661137511, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:2]": 24.336508319, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:3]": 14.245145237, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb[1:1:1]": 19.829877794, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb[1:1:1]": 37.706129327, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:1:1]": 25.995355854, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:2:1]": 27.471437785, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:1]": 21.25274314, - "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:2]": 27.88995093, - "./qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb[1:1:1]": 35.894351034, - "./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:1]": 56.89914998, - "./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:2]": 46.494397128, - "./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb[1:1:1]": 66.955526732, - "./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb[1:1:1]": 30.936678202, - "./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:1]": 32.050405404, - "./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:2]": 38.178081198, - "./qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb[1:1:1]": 32.746928307, - "./qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb[1:1:1]": 86.680624803, - "./qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb[1:1:1]": 97.191965023, - "./qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb[1:1:1]": 30.533752486, - "./qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb[1:1:1]": 94.073219809, - "./qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb[1:1:1]": 70.854258218, - "./qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb[1:1:1]": 58.548098928, - "./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:1]": 17.430986814, - "./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:2]": 29.913167735, - "./qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb[1:1:1]": 20.368715627, - "./qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb[1:1:1]": 22.460234789, - "./qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb[1:1:1:1]": 25.705829863, - "./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:1]": 17.696236445, - "./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:2]": 27.957926667, - "./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:1:1:1]": 16.951172634, - "./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:2:1:1]": 21.266008178, - "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:1:1]": 27.062805529, - "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:2:1]": 18.712645442, - "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:1:1]": 38.561308576, - "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:2:1]": 32.783000264, - "./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb[1:1:1]": 25.800540915, - "./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb[1:1:1]": 16.344652831, - "./qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb[1:1:1]": 25.918830265, - "./qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb[1:1:1]": 71.345808998, - "./qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb[1:1:1]": 61.405565126, - "./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:1]": 12.542250125, - "./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:2]": 46.984714986, - "./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:1]": 23.113705334, - "./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:2]": 11.68556741, - "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:1]": 15.768470661, - "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:2]": 41.665522422, - "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:1]": 26.63234161, - "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:2]": 22.572582905, - "./qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb[1:1:1:1]": 21.261200855, - "./qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb[1:1:1]": 21.613289274, - "./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb[1:1:1]": 21.561473066, - "./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb[1:1:1]": 19.03212637, - "./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:1]": 28.545308068, - "./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:2]": 15.946338722, - "./qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb[1:1:1]": 20.764340844, - "./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:1:1]": 16.917779052, - "./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:2:1]": 16.20108555, - "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:1]": 23.642948635, - "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:2]": 31.582040391, - "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:1]": 25.029702819, - "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:2]": 29.903619436, - "./qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb[1:1:1]": 17.201055694, - "./qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb[1:1:1]": 17.857592757, - "./qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb[1:1:1]": 33.610678014, - "./qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb[1:1:1:1]": 19.3571828, - "./qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb[1:1:2:1]": 26.877590635, - "./qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb[1:1:1:1]": 22.674945101, - "./qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb[1:1:2:1]": 10.521851152, - "./qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb[1:1:1]": 16.625288552, - "./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:1:1]": 31.802245745, - "./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:2:1]": 34.707863618, - "./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:1:1]": 32.219666824, - "./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:2:1]": 50.885064887, - "./qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb[1:1:1]": 30.451284156, - "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:1]": 47.425482276, - "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:2]": 75.803396415, - "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:3]": 68.181093489, - "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:1:1]": 30.39145351, - "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:1:1:1]": 35.234750878, - "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:2:1:1]": 34.19866634, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:1:1]": 49.229820207, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:2:1]": 48.178719974, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:1]": 76.305230803, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:2]": 77.663131062, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:1]": 47.658152133, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:2]": 67.893641342, - "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb[1:1:1]": 50.728603837, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb[1:1:1:1]": 48.242718889, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:1]": 52.001179872, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:2]": 46.425274595, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:1]": 49.078858558, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:2]": 28.021472056, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:1]": 55.830838123, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:2]": 53.212395235, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:1:1]": 57.38171356, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:2:1]": 116.443291807, - "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:3:1]": 69.454203961, - "./qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb[1:1:1:1]": 57.785853927, - "./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:1]": 37.73003773, - "./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:2]": 103.48952654, - "./qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb[1:1:1]": 56.476404719, - "./qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb[1:1:1]": 82.660284708, - "./qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb[1:1:1]": 29.135359588, - "./qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb[1:1:1]": 61.899105571, - "./qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb[1:1:1]": 59.847459203, - "./qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb[1:1:1]": 42.783691796, - "./qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb[1:1:2]": 36.998572912, - "./qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb[1:1:1]": 75.942739832, - "./qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb[1:1:1]": 68.132040257, - "./qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb[1:1:1]": 55.940159685, - "./qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb[1:1:1]": 50.541011497, - "./qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb[1:1:1]": 30.072772614, - "./qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb[1:1:1]": 22.451529762, - "./qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb[1:1:1]": 34.106708609, - "./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb[1:1:1]": 24.449291459, - "./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb[1:1:1]": 20.958409869, - "./qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb[1:1:1]": 25.214205994, - "./qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb[1:1:1]": 54.215614457, - "./qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb[1:1:1]": 27.54661782, - "./qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb[1:1:1]": 45.346597621, - "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:1:1]": 199.000728654, - "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:2:1]": 108.164869488, - "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:3:1]": 124.246738328, - "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:1:1]": 61.702280018, - "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:2:1]": 69.7271524, - "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:3:1]": 76.666846702, - "./qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb[1:1:1]": 57.894979143, - "./qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb[1:1:1]": 71.757329937, - "./qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb[1:1:1]": 50.079788285, - "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:1:1]": 84.011775647, - "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:2:1]": 79.572576378, - "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:3:1]": 85.80459516, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:1:1]": 98.451617718, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:2:1]": 107.219957987, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:3:1]": 119.985926552, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:1:1]": 112.489286025, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:2:1]": 91.20892341, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:1:1]": 96.729162966, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:2:1]": 93.589691069, - "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:3:1]": 94.529417357, - "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:1:1]": 78.212899081, - "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:2:1]": 83.280571114, - "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:3:1]": 87.498080436, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:1:1]": 103.919967573, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:2:1]": 90.590259674, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:3:1]": 83.56321051, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:1:1]": 77.317304519, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:2:1]": 103.345912873, - "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:3:1]": 96.031617906, - "./qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb[1:1:1:1]": 81.437151955, - "./qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb[1:1:1]": 25.621997068, - "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:1]": 72.79726283, - "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:2]": 36.866419977, - "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:3]": 46.792825802, - "./qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb[1:1:1]": 13.733876844, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:1:1]": 28.882869636, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:2:1]": 31.289430483, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:3:1]": 33.588255162, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:4:1]": 38.558536581, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:1:1]": 23.079925183, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:2:1]": 26.453672306, - "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:3:1]": 30.626247871, - "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:1:1:1]": 17.101084229, - "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:2:1:1]": 23.304203646, - "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:1:1:1]": 18.751129551, - "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:2:1:1]": 19.616324956, - "./qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb[1:1:1]": 14.057398248, - "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:1]": 19.909795489, - "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:1:1]": 21.640358552, - "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:2:1]": 21.383891976, - "./qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb[1:1:1]": 28.937201244, - "./qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb[1:1:1]": 37.828514863, - "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb[1:1:1]": 28.784333971, - "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:1:1:1]": 32.496516925, - "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:2:1:1]": 29.581933392, - "./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:1:1:1]": 9.911547513, - "./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:2:1:1]": 14.198478384, - "./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:1:1:1]": 35.247638885, - "./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:2:1:1]": 26.829483889, - "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:1:1]": 37.478475216, - "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:2:1]": 45.547688472, - "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:1:1]": 39.916513756, - "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:2:1]": 38.688731586, - "./qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb[1:1:1:1]": 25.082409552, - "./qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb[1:1:1]": 40.610926832, - "./qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb[1:1:1:1]": 36.686995534, - "./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:1:1]": 16.40930087, - "./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:2:1]": 15.676551559, - "./qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb[1:1:1:1]": 30.461021237, - "./qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb[1:1:1:1]": 11.744319228, - "./qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb[1:1:4:1]": 18.560257871, - "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:1]": 39.331154855, - "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:2]": 14.895356357, - "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:3]": 11.135954826, - "./qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb[1:1:1:1]": 102.277484661, - "./qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb[1:1:1]": 20.20179088, - "./qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1:1]": 98.218799816, - "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:1]": 13.494864688, - "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:2]": 31.04154488, - "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:3]": 17.245279336, - "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:4]": 11.091676151, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:1:1]": 2.285688989, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:2:1:1]": 1.890264059, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:1:1:1]": 10.66490711, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:2:1]": 0.121060613, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:3:1:1]": 12.035349053, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:1]": 11.471712589, - "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:2]": 3.936490456, + "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:3]": 40.773899113, + "./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:4:1]": 40.971821901, + "./qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb[1:1:1]": 44.938938101, + "./qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb[1:1:1]": 42.734942577, + "./qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb[1:1:1]": 27.120437084, + "./qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb[1:1:1]": 31.257663522, + "./qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb[1:1:1]": 27.32818226, + "./qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb[1:1:1]": 19.130741958, + "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:1:1]": 26.737298892, + "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:2:1]": 31.369163521, + "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:1:1]": 26.502448933, + "./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:2:1]": 34.383932838, + "./qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb[1:1:1]": 25.276540295, + "./qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb[1:1:1]": 27.693233847, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:1]": 23.643419557, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:2]": 24.190075925, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:3]": 21.255073341, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:4]": 23.745967869, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:5]": 22.571831995, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:1]": 23.604223299, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:2]": 30.508817258, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:3]": 21.989007559, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb[1:1:1]": 24.517422913, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb[1:1:1]": 40.416076715, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:1:1]": 28.604220091, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:2:1]": 45.760336193, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:1]": 22.461967261, + "./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:2]": 38.987053119, + "./qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb[1:1:1]": 38.357850314, + "./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:1]": 47.890973394, + "./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:2]": 52.675472603, + "./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb[1:1:1]": 70.89735363, + "./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb[1:1:1]": 34.708398174, + "./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:1]": 37.952276536, + "./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:2]": 33.91014886, + "./qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb[1:1:1]": 35.808055433, + "./qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb[1:1:1]": 103.088087195, + "./qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb[1:1:1]": 67.682048039, + "./qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb[1:1:1]": 31.55556856, + "./qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb[1:1:1]": 44.759074567, + "./qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb[1:1:1]": 92.895923152, + "./qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb[1:1:1]": 81.315071998, + "./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:1]": 28.44712442, + "./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:2]": 25.523363935, + "./qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb[1:1:1]": 26.034822609, + "./qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb[1:1:1]": 45.757456181, + "./qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb[1:1:1:1]": 24.661732231, + "./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:1]": 14.987238559, + "./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:2]": 22.500139327, + "./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:1:1:1]": 22.435258516, + "./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:2:1:1]": 24.064669449, + "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:1:1]": 24.677275092, + "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:2:1]": 25.058572064, + "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:1:1]": 49.239759496, + "./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:2:1]": 49.222247886, + "./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb[1:1:1]": 28.339233773, + "./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb[1:1:1]": 29.821583666, + "./qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb[1:1:1]": 20.986685702, + "./qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb[1:1:1]": 85.167660404, + "./qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb[1:1:1]": 75.445520534, + "./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:1]": 12.227657587, + "./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:2]": 47.761593149, + "./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:1]": 24.444736255, + "./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:2]": 15.472768564, + "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:1]": 13.32496334, + "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:2]": 39.720067061, + "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:1]": 27.340732781, + "./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:2]": 22.640411346, + "./qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb[1:1:1:1]": 21.227568608, + "./qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb[1:1:1]": 24.196593101, + "./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb[1:1:1]": 25.108537135, + "./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb[1:1:1]": 26.114348896, + "./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:1]": 23.136215813, + "./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:2]": 28.969727857, + "./qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb[1:1:1]": 32.408425925, + "./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:1:1]": 24.532974629, + "./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:2:1]": 23.285831874, + "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:1]": 39.769243784, + "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:2]": 38.418028052, + "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:1]": 36.046044926, + "./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:2]": 44.387927396, + "./qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb[1:1:1]": 28.260198545, + "./qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb[1:1:1]": 13.841435452, + "./qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb[1:1:1]": 29.366215694, + "./qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb[1:1:1:1]": 26.240492646, + "./qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb[1:1:2:1]": 24.383714116, + "./qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb[1:1:1:1]": 16.298736958, + "./qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb[1:1:2:1]": 15.831481555, + "./qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb[1:1:1]": 28.181411228, + "./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:1:1]": 29.061355661, + "./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:2:1]": 34.22897225, + "./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:1:1]": 41.974844856, + "./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:2:1]": 59.895395218, + "./qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb[1:1:1]": 37.802424118, + "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:1]": 61.124138537, + "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:2]": 90.945517095, + "./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:3]": 74.699250132, + "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:1:1]": 36.233762797, + "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:1:1:1]": 35.52085201, + "./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:2:1:1]": 92.396400105, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:1:1]": 39.34032286, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:2:1]": 52.198349716, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:1]": 55.467357609, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:2]": 88.870844461, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:1]": 61.894234827, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:2]": 56.358783078, + "./qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb[1:1:1]": 49.798346473, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb[1:1:1:1]": 40.669069632, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:1]": 40.877398655, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:2]": 48.317626884, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:1]": 50.728834538, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:2]": 31.130277504, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:1]": 40.603865808, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:2]": 33.832882045, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:1:1]": 88.122604534, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:2:1]": 77.013655559, + "./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:3:1]": 64.925161206, + "./qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb[1:1:1:1]": 65.828203859, + "./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:1]": 55.890134008, + "./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:2]": 86.000295892, + "./qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb[1:1:1]": 30.970103349, + "./qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb[1:1:1]": 108.545600597, + "./qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb[1:1:1]": 23.28980922, + "./qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb[1:1:1]": 75.790505453, + "./qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb[1:1:1]": 54.702660995, + "./qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb[1:1:1]": 79.705135916, + "./qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb[1:1:2]": 66.051003619, + "./qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb[1:1:1]": 45.14818634, + "./qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb[1:1:1]": 64.550523922, + "./qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb[1:1:1]": 57.028536978, + "./qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb[1:1:1]": 65.720915219, + "./qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb[1:1:1]": 35.67493318, + "./qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb[1:1:1]": 21.428234221, + "./qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb[1:1:1]": 35.846418756, + "./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb[1:1:1]": 24.048885717, + "./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb[1:1:1]": 20.708330724, + "./qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb[1:1:1]": 31.908952529, + "./qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb[1:1:1]": 62.102893884, + "./qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb[1:1:1]": 27.68188924, + "./qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb[1:1:1]": 61.104185524, + "./qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb[1:1:1]": 182.735137728, + "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:1:1]": 147.178980793, + "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:2:1]": 114.590039285, + "./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:3:1]": 119.072401447, + "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:1:1]": 60.338964103, + "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:2:1]": 73.424392765, + "./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:3:1]": 65.488436454, + "./qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb[1:1:1]": 62.936571747, + "./qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb[1:1:1]": 94.728085317, + "./qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb[1:1:1]": 79.781979976, + "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:1:1]": 100.620821765, + "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:2:1]": 102.575521333, + "./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:3:1]": 102.501953132, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:1:1]": 111.357077092, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:2:1]": 112.946904224, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:3:1]": 112.112367381, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:1:1]": 136.109118855, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:2:1]": 115.517444188, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:1:1]": 104.082271795, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:2:1]": 93.379308436, + "./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:3:1]": 104.654697264, + "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:1:1]": 102.852151472, + "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:2:1]": 108.31661316, + "./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:3:1]": 137.739427765, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:1:1]": 136.091200174, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:2:1]": 88.410266496, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:3:1]": 109.44832616, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:1:1]": 122.702834229, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:2:1]": 79.120022779, + "./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:3:1]": 80.92982667, + "./qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb[1:1:1:1]": 100.732485619, + "./qa/specs/features/browser_ui/6_deploy/auto_devops/create_project_with_auto_devops_spec.rb[1:1:1]": 505.112092182, + "./qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb[1:1:1]": 30.032042225, + "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:1]": 70.544475705, + "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:2]": 59.540243535, + "./qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb[1:1:3]": 51.434372865, + "./qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb[1:1:1]": 12.92099205, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:1:1]": 23.388219269, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:2:1]": 24.3122152, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:3:1]": 36.319022723, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:1:4:1]": 29.654942443, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:1:1]": 23.587071746, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:2:1]": 26.928149734, + "./qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb[1:1:2:3:1]": 31.817920604, + "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:1:1:1]": 24.407495286, + "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:2:1:1]": 41.675239815, + "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:1:1:1]": 24.907516979, + "./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:2:1:1]": 24.52584813, + "./qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb[1:1:1]": 10.666582106, + "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:1]": 19.194890231, + "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:1:1]": 22.209740884, + "./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:2:1]": 22.692321538, + "./qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb[1:1:1]": 29.079532431, + "./qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb[1:1:1]": 35.601623995, + "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb[1:1:1]": 30.483208198, + "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:1:1:1]": 33.028441383, + "./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:2:1:1]": 34.950709416, + "./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:1:1:1]": 10.735567932, + "./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:2:1:1]": 8.389561943, + "./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:1:1:1]": 25.394966468, + "./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:2:1:1]": 29.796046037, + "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:1:1]": 38.455615945, + "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:2:1]": 30.794660753, + "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:1:1]": 38.366894031, + "./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:2:1]": 31.731161548, + "./qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb[1:1:1:1]": 33.113124219, + "./qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb[1:1:1]": 44.416285303, + "./qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb[1:1:1:1]": 32.138615968, + "./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:1:1]": 27.856572034, + "./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:2:1]": 18.543079413, + "./qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb[1:1:1:1]": 41.942129456, + "./qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb[1:1:1:1]": 7.749129071, + "./qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb[1:1:4:1]": 26.554029651, + "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:1]": 49.604638418, + "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:2]": 21.314863086, + "./qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:3]": 15.606452118, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb[1:1:1:1]": 60.962802533, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb[1:1:1:2]": 36.88625608, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb[1:1:1]": 23.278670465, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb[1:1:2:1]": 41.713553193, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb[1:1:2:2]": 25.090143746, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/blob_index_spec.rb[1:1:1]": 41.133471219, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/commit_index_spec.rb[1:1:1]": 30.614370834, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/issue_index_spec.rb[1:1:1]": 69.928646308, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/merge_request_index_spec.rb[1:1:1]": 37.144540518, + "./qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/note_index_spec.rb[1:1:1]": 49.861145996, + "./qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb[1:1:1:1]": 63.752179068, + "./qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb[1:1:1]": 9.850711761, + "./qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1:1]": 80.956192345, + "./qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb[1:1:1:1:1]": 0.823121915, + "./qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb[1:1:2:1:1]": 1.190677311, + "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:1]": 16.10035894, + "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:2]": 25.380977935, + "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:3]": 21.225214257, + "./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:4]": 17.920112869, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:1:1]": 1.771693831, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:2:1:1]": 1.947940602, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:1:1:1]": 7.919451246, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:2:1]": 3.164901869, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:3:1:1]": 8.526119372, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:1]": 7.568661135, + "./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:2]": 16.021277882, + "./qa/specs/features/ee/api/6_deploy/kubernetes/kubernetes_agent_spec.rb[1:1:1]": 298.494098973, "./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:1]": 32.570665978, "./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:2]": 31.576192893, "./qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb[1:1:1]": 70.493630702, @@ -339,151 +355,168 @@ "./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:1]": 17.548380983, "./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:2]": 18.723238874, "./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:3]": 30.453818678, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:1:1]": 13.795629328, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:1:1]": 6.37088418, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:2:1]": 18.225792235, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:3:1]": 7.040384792, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:1:1:1]": 50.008363753, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:2:1:1]": 18.250826243, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:3:1:1]": 11.303345435, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:4:1:1]": 29.443502833, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:5:1:1]": 20.798909011, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:1:1]": 17.446729004, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:2:1]": 12.027578004, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:3:1]": 47.657893771, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:1:1]": 18.783442232, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:2:1]": 15.018470033, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:3:1]": 27.375713781, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:1:1:1]": 15.577616307, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:2:1:1]": 15.054641449, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:3:1:1]": 23.294009787, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:4:1:1]": 19.660844325, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:5:1:1]": 24.348228451, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:6:1:1]": 23.101746996, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:1:1:1]": 15.805030471, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:2:1:1]": 30.730207721, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:3:1:1]": 19.543571122, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:4:1:1]": 16.199680599, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:5:1:1]": 48.630067537, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:6:1:1]": 23.68329425, - "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:1]": 14.523485077, - "./qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb[1:1:1]": 12.941794041, - "./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb[1:1:1:1:1]": 21.407153575, - "./qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb[1:1:1:1]": 135.414929708, - "./qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb[1:1:1:1]": 112.313840801, - "./qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb[1:1:1]": 52.105608016, - "./qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb[1:1:2:1]": 72.015034073, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:1]": 55.067241328, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:2]": 53.988345655, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:3]": 32.164719759, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb[1:1:1]": 64.185913002, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb[1:1:1]": 70.767696671, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb[1:1:1]": 21.196145433, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb[1:1:1]": 132.822290428, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb[1:1:1]": 198.855083558, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb[1:1:2]": 136.057944628, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb[1:1:1]": 26.437574935, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb[1:1:2]": 40.771094742, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb[1:1:2]": 128.676744131, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb[1:1:1]": 77.737264679, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb[1:1:2]": 50.906995785, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:1]": 19.964251926, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:2]": 23.639027543, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:3]": 42.232125205, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:1]": 13.102930026, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:2]": 109.914796383, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:3]": 87.573642269, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:4]": 106.478692686, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:6:1]": 33.641719544, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb[1:1:1]": 46.582813914, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:1]": 101.168858677, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:2]": 50.197712583, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:3]": 104.092256432, - "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:4]": 81.6914249, - "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:1]": 27.982300548, - "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:2]": 13.10223731, - "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:3]": 19.844394626, - "./qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb[1:1:1]": 69.950168175, - "./qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb[1:1:1]": 50.362640543, - "./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:1:1:1]": 17.349328404, - "./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:2:1:1]": 29.009094723, - "./qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb[1:1:1]": 13.328726833, - "./qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb[1:1:1]": 22.109997608, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:1]": 49.657944164, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:2]": 56.650381504, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:1]": 13.468403461, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:2]": 12.590026256, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:3]": 54.584939608, - "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:2]": 20.250007998, - "./qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb[1:1:1]": 50.353324211, - "./qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb[1:1:1]": 9.697249426, - "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:1:1]": 13.261163449, - "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:2:1]": 14.744107577, - "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb[1:1:1]": 14.268679209, - "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb[1:1:1]": 28.110920529, - "./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:1:1:1]": 11.839571169, - "./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:2:1:1]": 11.852451964, - "./qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb[1:1:1]": 32.771136335, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb[1:1:1]": 23.241062621, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb[1:1:1]": 24.891699626, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb[1:1:1]": 25.576163693, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb[1:1:1]": 18.330180519, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:1:1]": 25.416156692, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:2:1]": 19.453373304, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:3:1]": 14.837502682, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb[1:1:1]": 32.39003932, - "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb[1:1:1]": 16.870654973, - "./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:1:1:1]": 19.350389872, - "./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:2:1:1]": 11.437423189, - "./qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb[1:1:1]": 36.258593585, - "./qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb[1:1:1]": 23.415118927, - "./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:1:1]": 22.745291602, - "./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:2:1]": 13.503562058, - "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb[1:1:1]": 38.367558451, - "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:1]": 34.804287653, - "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:2]": 34.133258686, - "./qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb[1:1:1]": 26.242661589, - "./qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb[1:1:1]": 77.504955225, - "./qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb[1:1:1]": 33.539812749, - "./qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb[1:1:1]": 51.977006212, - "./qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb[1:1:1]": 35.011538744, - "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:1]": 63.040859342, - "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:2]": 46.620004305, - "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:3]": 70.376303806, - "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:4]": 59.901463498, - "./qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb[1:1:1]": 31.540282505, - "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:1:1:1]": 57.162079842, - "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:2:1:1]": 47.169739279, - "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:1:1:1]": 49.418892214, - "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:2:1:1]": 56.559844854, - "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:3:1:1]": 42.83669811, - "./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:1:1]": 26.303034492, - "./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:2:1]": 29.80019747, - "./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:1:1]": 24.746295678, - "./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:3:1]": 49.151586822, - "./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb[1:1:1]": 42.670885785, - "./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb[1:1:1]": 44.168563475, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:1]": 23.011399355, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:2]": 42.169488815, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:3]": 30.632759543, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:4]": 27.704489365, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:5]": 53.833263532, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:6]": 32.840871794, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:7]": 28.326187845, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:8]": 44.720384087, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:9]": 38.013482769, - "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:2:1]": 42.628924231, - "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:1:1]": 35.821025914, - "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:2:1]": 45.422615036, - "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:1:1]": 38.690080659, - "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:2:1]": 50.27086517, - "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:3:1:1]": 35.566351619, - "./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:2:1:1]": 31.180139348, - "./qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb[1:1:1]": 32.280154446, - "./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:1]": 68.69161637, - "./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:2]": 29.140847353, - "./qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb[1:1:1]": 53.043005561, - "./qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb[1:1:1:1]": 44.900684854, - "./qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb[1:1:1]": 19.457647007, - "./qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb[1:1:1]": 27.433641806 + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:1:1]": 15.625513291, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:1:1]": 8.898420554, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:2:1]": 8.450183087, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb[1:1:2:3:1]": 11.167796817, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:1:1:1]": 28.247117677, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:2:1:1]": 15.42808719, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:3:1:1]": 16.635290391, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:4:1:1]": 32.071105705, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb[1:1:5:1:1]": 21.417263537, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:1:1]": 16.868340098, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:2:1]": 11.970609272, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:1:3:1]": 43.701584905, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:1:1]": 16.681143124, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:2:1]": 12.052495969, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb[1:1:2:3:1]": 19.662988547, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:1:1:1]": 18.738879905, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:2:1:1]": 14.728381327, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:3:1:1]": 20.381545586, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:4:1:1]": 19.740109928, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:5:1:1]": 28.445634633, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb[1:1:6:1:1]": 25.403693625, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:1:1:1]": 36.442108067, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:2:1:1]": 31.616988403, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:3:1:1]": 31.401956545, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:4:1:1]": 31.444023017, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:5:1:1]": 78.869842184, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb[1:1:6:1:1]": 38.631888211, + "./qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb[1:1:1]": 26.278319799, + "./qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb[1:1:1]": 13.962537875, + "./qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb[1:1:1:1]": 54.896545824, + "./qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb[1:1:1:2]": 34.38329196, + "./qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb[1:1:1:3]": 29.968689963, + "./qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb[1:1:1:4]": 61.298866565, + "./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb[1:1:1:1]": 166.784346569, + "./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb[1:1:1:1]": 41.678622034, + "./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb[1:1:1:1:1]": 20.35351725, + "./qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb[1:1:1:1]": 31.65735524, + "./qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb[1:1:1:1]": 128.048974784, + "./qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb[1:1:1:1]": 119.208886217, + "./qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb[1:1:1]": 42.022088439, + "./qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb[1:1:2:1]": 84.162133463, + "./qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb[1:1:1:1:1]": 38.971486003, + "./qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb[1:1:1:2:1]": 25.240508999, + "./qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_explain_code_spec.rb[1:1:1]": 28.134067084, + "./qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb[1:1:1:1:1]": 30.60802716, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:1]": 40.831051639, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:2]": 40.624528482, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb[1:1:3]": 34.694227054, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb[1:1:1]": 81.399147961, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb[1:1:1]": 73.371920322, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/explain_this_vulnerability_spec.rb[1:1:1]": 54.143982095, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb[1:1:1]": 16.243586635, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb[1:1:1]": 136.040794818, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb[1:1:1]": 173.632850361, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb[1:1:2]": 112.997103234, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb[1:1:1]": 29.369759125, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb[1:1:2]": 49.747538968, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb[1:1:2]": 93.756700512, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_license_finding_spec.rb[1:1:1]": 52.03508004, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb[1:1:1]": 98.129214967, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb[1:1:2]": 90.496423578, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:1]": 21.276723111, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:2]": 23.534002786, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb[1:1:3]": 39.024089854, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:1]": 24.899271711, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:2]": 111.669174967, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:3]": 60.513726356, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:4]": 127.97524254, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb[1:1:6:1]": 36.88899068, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb[1:1:1]": 25.109618615, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:1]": 77.547516403, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:2]": 54.773384061, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:3]": 100.927698064, + "./qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb[1:1:4]": 110.800818437, + "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:1]": 30.87668365, + "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:2]": 13.680359599, + "./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:3]": 21.422146663, + "./qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb[1:1:1]": 183.603381447, + "./qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb[1:1:1]": 84.007080672, + "./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:1:1:1]": 35.122655405, + "./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:2:1:1]": 32.950437725, + "./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:2:1]": 18.900033089, + "./qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb[1:1:1]": 20.006215928, + "./qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb[1:1:1]": 17.544257098, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:1]": 62.397536473, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:2]": 58.000061509, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:1]": 54.150465833, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:2]": 52.705586462, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:3]": 53.001117529, + "./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:2]": 60.113751825, + "./qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb[1:1:1]": 52.365083763, + "./qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb[1:1:1]": 22.355923644, + "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:1:1]": 22.561071027, + "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:2:1]": 20.656245125, + "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb[1:1:1]": 18.700724423, + "./qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb[1:1:1]": 38.518595652, + "./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:1:1:1]": 15.7499982, + "./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:2:1:1]": 19.13685779, + "./qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb[1:1:1]": 35.187899468, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb[1:1:1]": 33.828825675, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb[1:1:1]": 46.759892088, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb[1:1:1]": 38.62805672, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb[1:1:1]": 36.022821403, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:1:1]": 20.834359996, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:2:1]": 21.341696834, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:3:1]": 23.673553403, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb[1:1:1]": 48.424952481, + "./qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb[1:1:1]": 26.165719765, + "./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:1:1:1]": 16.943822094, + "./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:2:1:1]": 15.57489451, + "./qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb[1:1:1]": 38.944821538, + "./qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb[1:1:1]": 26.74355221, + "./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:1:1]": 24.787119692, + "./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:2:1]": 22.558088802, + "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb[1:1:1]": 42.764278222, + "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:1]": 46.162235092, + "./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:2]": 35.841632547, + "./qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb[1:1:1]": 30.179142209, + "./qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb[1:1:1]": 98.339845593, + "./qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb[1:1:1]": 56.057041755, + "./qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb[1:1:1:1]": 34.421689839, + "./qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb[1:1:1:1:1]": 588.031691748, + "./qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb[1:1:1]": 53.427869736, + "./qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb[1:1:1]": 28.81670615, + "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:1]": 73.417669662, + "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:2]": 63.813045053, + "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:3]": 55.180950403, + "./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:4]": 53.796915278, + "./qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb[1:1:1]": 44.089321165, + "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:1:1:1]": 68.004350263, + "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:2:1:1]": 65.745224936, + "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:1:1:1]": 62.172199749, + "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:2:1:1]": 65.077322789, + "./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:3:1:1]": 64.181039287, + "./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:1:1]": 26.003037307, + "./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:2:1]": 18.335500741, + "./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:1:1]": 39.105683617, + "./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:3:1]": 129.430905378, + "./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb[1:1:1]": 46.391260459, + "./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb[1:1:1]": 58.375838866, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:1]": 32.452089286, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:2]": 46.807052434, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:3]": 41.23309521, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:4]": 48.811424833, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:5]": 61.989882318, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:6]": 40.189138188, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:7]": 45.319009361, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:8]": 43.616920845, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:9]": 48.598984707, + "./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:2:1]": 52.073169792, + "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:1:1]": 52.486467861, + "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:2:1]": 56.089731117, + "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:1:1]": 76.29917812, + "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:2:1]": 67.500690188, + "./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:3:1:1]": 52.675401486, + "./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:2:1:1]": 38.86330345, + "./qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb[1:1:1]": 49.26893309, + "./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:1]": 42.944381941, + "./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:2]": 63.359085494, + "./qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb[1:1:1]": 50.262591857, + "./qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb[1:1:1:1]": 71.47798872, + "./qa/specs/features/ee/browser_ui/4_verify/root_cause_analysis_with_duo_chat_spec.rb[1:1:1:1]": 37.4724197, + "./qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb[1:1:1]": 21.162758874, + "./qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb[1:1:1]": 36.260538211 } diff --git a/qa/knapsack/master_report.json b/qa/knapsack/master_report.json index ca6a1cde36b..c43e9f6c460 100644 --- a/qa/knapsack/master_report.json +++ b/qa/knapsack/master_report.json @@ -1,276 +1,300 @@ { "qa/specs/features/api/10_govern/group_access_token_spec.rb": 18.521383997999997, "qa/specs/features/api/10_govern/project_access_token_spec.rb": 70.469153042, - "qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb": 37.022664747, - "qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb": 82.87303864500001, - "qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 111.067614601, - "qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 118.879553314, - "qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 133.783165328, - "qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 10.095724911, - "qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 144.588758096, - "qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 71.338530868, - "qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 64.406505144, - "qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 215.185687086, - "qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 113.985270328, - "qa/specs/features/api/1_manage/rate_limits_spec.rb": 15.744893631, - "qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 23.69081331, - "qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 28.261680069, - "qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 44.658159605, - "qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 36.044952265, - "qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 1.266904665, - "qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 18.640052021, - "qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 12.601774172, - "qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 14.068789411000001, - "qa/specs/features/api/3_create/repository/files_spec.rb": 12.52917335, - "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 20.021040605, - "qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 15.740256803, - "qa/specs/features/api/3_create/repository/storage_size_spec.rb": 20.043217391, - "qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 11.599297564, - "qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 131.967654197, - "qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 15.865443736, - "qa/specs/features/api/4_verify/file_variable_spec.rb": 62.797061802, - "qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 71.879704206, - "qa/specs/features/api/8_monitor/metrics_spec.rb": 6.305127685, - "qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 108.58095128999999, - "qa/specs/features/api/9_tenant_scale/users_spec.rb": 9.964240915, + "qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb": 40.507127796, + "qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb": 86.83539598600001, + "qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 104.272950479, + "qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 101.114687345, + "qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 111.39219000700001, + "qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 23.95807231, + "qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 113.710036538, + "qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 94.945282064, + "qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 83.516041543, + "qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 227.009072072, + "qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 109.571780505, + "qa/specs/features/api/1_manage/rate_limits_spec.rb": 20.978583269, + "qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 16.557301806, + "qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 16.535545897, + "qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 32.20775568, + "qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 40.627031966000004, + "qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 1.065545759, + "qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 18.019920263, + "qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 22.496511341, + "qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 10.166664456, + "qa/specs/features/api/3_create/repository/files_spec.rb": 24.989885819999998, + "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 17.059176291, + "qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 24.840109642, + "qa/specs/features/api/3_create/repository/storage_size_spec.rb": 21.335184197, + "qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 5.494622621, + "qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 142.115423092, + "qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 17.769514023, + "qa/specs/features/api/4_verify/file_variable_spec.rb": 56.371252474, + "qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 39.656142093, + "qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 132.604777095, + "qa/specs/features/api/8_monitor/metrics_spec.rb": 6.6113326610000005, + "qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 135.407244221, + "qa/specs/features/api/9_tenant_scale/users_spec.rb": 3.985338844, "qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 16.751283529, - "qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 11.194772573, + "qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 10.870345752, "qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 19.351324594, - "qa/specs/features/browser_ui/10_software_supply_chain_security/group/group_access_token_spec.rb": 21.580589138, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb": 55.693922028, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb": 70.846094125, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_spec.rb": 13.217373594, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_with_2fa_spec.rb": 103.346868708, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_gitlab_via_ldap_spec.rb": 5.660347945, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb": 34.289283601, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb": 17.418966895, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb": 43.109740398, - "qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb": 109.576545957, - "qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb": 26.75519261, - "qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb": 38.079002374, - "qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb": 46.843897043, - "qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 46.676631291, - "qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 17.099139252, - "qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 18.479658543, - "qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 79.945725031, - "qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 62.708365208, - "qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 65.623645693, - "qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 81.77374893, - "qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 69.591312824, - "qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 184.821466283, - "qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 26.971105193, - "qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 30.997345377, - "qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 30.297804087, - "qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 25.524434427, - "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 17.831849922, - "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 25.714214326, - "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 206.98608604999998, - "qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 34.393434571, - "qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 37.867855905, - "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 25.022355173, - "qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 29.944848117, - "qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 26.604720815, - "qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 20.038858112, - "qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 125.26480915100001, - "qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 25.291191959, - "qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 25.470842388, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 79.251311809, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 54.242791067, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 19.829877794, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 37.706129327, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 53.466793639, - "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 49.142694070000005, - "qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 35.894351034, - "qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 103.393547108, - "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 66.955526732, - "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 30.936678202, - "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 70.228486602, - "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 32.746928307, - "qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 86.680624803, - "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 97.191965023, - "qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 30.533752486, - "qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 94.073219809, - "qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 70.854258218, - "qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 58.548098928, - "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 47.344154548999995, - "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 20.368715627, - "qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 22.460234789, - "qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 25.705829863, - "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 45.654163112, - "qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 38.217180811999995, - "qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 117.119759811, - "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 25.800540915, - "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 16.344652831, - "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 25.918830265, - "qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 71.345808998, - "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 61.405565126, - "qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 59.526965111, - "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 34.799272744, - "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 57.433993083000004, - "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 49.204924515, - "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 21.261200855, - "qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 21.613289274, - "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 21.561473066, - "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 19.03212637, - "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 44.491646790000004, - "qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 20.764340844, - "qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 33.118864602, - "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 55.224989026, - "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 54.933322255, - "qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 17.201055694, - "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 17.857592757, - "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 33.610678014, - "qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 46.234773435, - "qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 33.196796253, - "qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 16.625288552, - "qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 66.510109363, - "qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 83.104731711, - "qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 30.451284156, - "qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 191.40997218, - "qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 99.82487072800001, - "qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 97.408540181, - "qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 153.96836186500002, - "qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 115.551793475, - "qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 50.728603837, - "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 48.242718889, - "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 284.570018439, - "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 243.27920932799998, - "qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 57.785853927, - "qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 141.21956427, - "qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 56.476404719, - "qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 82.660284708, - "qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 29.135359588, - "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 61.899105571, - "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 59.847459203, - "qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 79.782264708, - "qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 75.942739832, - "qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 68.132040257, - "qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 55.940159685, - "qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 50.541011497, - "qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 30.072772614, - "qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 22.451529762, - "qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 34.106708609, - "qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 24.449291459, - "qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 20.958409869, - "qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 25.214205994, - "qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 54.215614457, - "qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 27.54661782, - "qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 45.346597621, - "qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 431.41233647, - "qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 208.09627912000002, - "qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 57.894979143, - "qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 71.757329937, - "qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 50.079788285, - "qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 249.388947185, - "qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 529.355711692, - "qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 284.848271392, - "qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 248.991550631, - "qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 278.07343775699997, - "qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 276.694835298, - "qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 81.437151955, - "qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb": 25.621997068, - "qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb": 156.456508609, - "qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb": 13.733876844, - "qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb": 212.47893722199998, - "qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 78.77274238199999, - "qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 14.057398248, - "qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 62.934046017, - "qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 28.937201244, - "qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 37.828514863, - "qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 28.784333971, - "qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 62.078450317000005, - "qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 24.110025897, - "qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 62.077122774, - "qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 161.63140903, - "qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 25.082409552, - "qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 40.610926832, - "qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 36.686995534, - "qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 32.085852429, - "qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb": 30.461021237, - "qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb": 30.304577099, - "qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 65.36246603800001, - "qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 102.277484661, - "qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 20.20179088, - "qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 98.218799816, - "qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 72.873365055, - "qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 42.405472869, + "qa/specs/features/browser_ui/10_software_supply_chain_security/group/group_access_token_spec.rb": 22.763037134, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb": 74.192848173, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb": 80.654859371, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_spec.rb": 13.238494187, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_with_2fa_spec.rb": 113.36947772, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_gitlab_via_ldap_spec.rb": 5.65725764, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb": 34.077286994, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb": 17.397316189, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb": 43.126849934, + "qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb": 108.11286334100001, + "qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb": 24.624188891, + "qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb": 40.402813832, + "qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb": 48.55027629, + "qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 43.910318888, + "qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 17.988410961, + "qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 15.955078023, + "qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 69.953257383, + "qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 72.489633888, + "qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 54.613596995, + "qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 65.369309898, + "qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 64.611123131, + "qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 192.390731976, + "qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 26.774116497, + "qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 37.255270892, + "qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 29.353541028, + "qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 23.591866421, + "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 22.717227966, + "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 30.61899609, + "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 209.637365885, + "qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 44.938938101, + "qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 42.734942577, + "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 27.120437084, + "qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 31.257663522, + "qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 27.32818226, + "qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 19.130741958, + "qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 118.992844184, + "qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 25.276540295, + "qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 27.693233847, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 115.406368687, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 76.102048116, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 24.517422913, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 40.416076715, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 74.364556284, + "qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 61.44902038000001, + "qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 38.357850314, + "qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 100.566445997, + "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 70.89735363, + "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 34.708398174, + "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 71.86242539599999, + "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 35.808055433, + "qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 103.088087195, + "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 67.682048039, + "qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 31.55556856, + "qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 44.759074567, + "qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 92.895923152, + "qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 81.315071998, + "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 53.970488355, + "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 26.034822609, + "qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 45.757456181, + "qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 24.661732231, + "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 37.487377886, + "qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 46.499927965, + "qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 148.197854538, + "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 28.339233773, + "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 29.821583666, + "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 20.986685702, + "qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 85.167660404, + "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 75.445520534, + "qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 59.989250736, + "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 39.917504819, + "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 53.045030401000005, + "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 49.981144127, + "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 21.227568608, + "qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 24.196593101, + "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 25.108537135, + "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 26.114348896, + "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 52.10594367, + "qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 32.408425925, + "qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 47.818806503000005, + "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 78.187271836, + "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 80.433972322, + "qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 28.260198545, + "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 13.841435452, + "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 29.366215694, + "qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 50.624206762, + "qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 32.130218513, + "qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 28.181411228, + "qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 63.290327911, + "qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 101.870240074, + "qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 37.802424118, + "qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 226.768905764, + "qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 164.151014912, + "qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 91.53867257600001, + "qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 144.33820207, + "qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 118.25301790500001, + "qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 49.798346473, + "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 40.669069632, + "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 245.49088543399998, + "qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 230.06142129900002, + "qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 65.828203859, + "qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 141.8904299, + "qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 30.970103349, + "qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 108.545600597, + "qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 23.28980922, + "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 75.790505453, + "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 54.702660995, + "qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 145.756139535, + "qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 45.14818634, + "qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 64.550523922, + "qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 57.028536978, + "qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 65.720915219, + "qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 35.67493318, + "qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 21.428234221, + "qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 35.846418756, + "qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 24.048885717, + "qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 20.708330724, + "qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 31.908952529, + "qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 62.102893884, + "qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 27.68188924, + "qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 61.104185524, + "qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 182.735137728, + "qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 380.841421525, + "qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 199.25179332199997, + "qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 62.936571747, + "qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 94.728085317, + "qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 79.781979976, + "qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 305.69829623, + "qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 588.04291174, + "qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 302.116277495, + "qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 348.908192397, + "qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 333.94979283, + "qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 282.752683678, + "qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 100.732485619, + "qa/specs/features/browser_ui/6_deploy/auto_devops/create_project_with_auto_devops_spec.rb": 505.112092182, + "qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb": 30.032042225, + "qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb": 181.519092105, + "qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb": 12.92099205, + "qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb": 196.00754171900002, + "qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 115.51610021, + "qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 10.666582106, + "qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 64.096952653, + "qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 29.079532431, + "qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 35.601623995, + "qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 30.483208198, + "qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 67.979150799, + "qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 19.125129875, + "qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 55.191012505, + "qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 139.348332277, + "qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 33.113124219, + "qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 44.416285303, + "qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 32.138615968, + "qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 46.399651447, + "qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb": 41.942129456, + "qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb": 34.303158722, + "qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 86.525953622, + "qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 97.84905861300001, + "qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb": 90.082367404, + "qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/blob_index_spec.rb": 41.133471219, + "qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/commit_index_spec.rb": 30.614370834, + "qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/issue_index_spec.rb": 69.928646308, + "qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/merge_request_index_spec.rb": 37.144540518, + "qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/note_index_spec.rb": 49.861145996, + "qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 63.752179068, + "qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 9.850711761, + "qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 80.956192345, + "qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 2.0137992259999997, + "qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 80.626664001, + "qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 46.920045937, + "qa/specs/features/ee/api/6_deploy/kubernetes/kubernetes_agent_spec.rb": 298.494098973, "qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 64.146858871, "qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 70.493630702, "qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 154.707140401, "qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 42.347462152999995, "qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 105.323767621, "qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 66.72543853500001, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb": 45.432690535, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb": 129.804947275, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb": 138.30982682500002, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb": 121.037087315, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb": 154.59185169999998, - "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 14.523485077, - "qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 12.941794041, - "qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 21.407153575, - "qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 135.414929708, - "qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 112.313840801, - "qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 124.120642089, - "qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb": 141.22030674200002, - "qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb": 64.185913002, - "qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb": 70.767696671, - "qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb": 21.196145433, - "qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb": 132.822290428, - "qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb": 334.913028186, - "qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb": 67.208669677, - "qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb": 128.676744131, - "qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb": 128.644260464, - "qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb": 85.835404674, - "qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb": 350.711780908, - "qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb": 46.582813914, - "qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb": 337.150252592, - "qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 60.928932484, - "qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 69.950168175, - "qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 50.362640543, - "qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 46.358423127, - "qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 13.328726833, - "qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 22.109997608, - "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 207.201702991, - "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 50.353324211, - "qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 9.697249426, - "qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 28.005271026, - "qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 14.268679209, - "qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 28.110920529, - "qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 23.692023133, - "qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 32.771136335, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 23.241062621, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 24.891699626, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 25.576163693, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 18.330180519, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 59.707032678, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 32.39003932, - "qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 16.870654973, - "qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 30.787813061, - "qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 36.258593585, - "qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 23.415118927, - "qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 36.24885366, - "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 38.367558451, - "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 68.937546339, - "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 26.242661589, - "qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 77.504955225, - "qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 33.539812749, - "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 51.977006212, - "qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 35.011538744, - "qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 239.938630951, - "qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 31.540282505, - "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 104.331819121, - "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 148.815435178, - "qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 56.103231961999995, - "qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 73.8978825, - "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 42.670885785, - "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 44.168563475, - "qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 363.881251336, - "qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 205.770938398, - "qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 31.180139348, - "qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 32.280154446, - "qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 97.832463723, - "qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 53.043005561, - "qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 44.900684854, - "qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 19.457647007, - "qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb": 27.433641806 + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb": 44.141913749, + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb": 113.79886450000001, + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb": 120.937161915, + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb": 127.438245004, + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb": 248.406806427, + "qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 26.278319799, + "qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 13.962537875, + "qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 180.547394312, + "qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 166.784346569, + "qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 41.678622034, + "qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 20.35351725, + "qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 31.65735524, + "qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 128.048974784, + "qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 119.208886217, + "qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 126.184221902, + "qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 64.21199500200001, + "qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_explain_code_spec.rb": 28.134067084, + "qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 30.60802716, + "qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb": 116.149807175, + "qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb": 81.399147961, + "qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb": 73.371920322, + "qa/specs/features/ee/browser_ui/18_security_risk_management/explain_this_vulnerability_spec.rb": 54.143982095, + "qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb": 16.243586635, + "qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb": 136.040794818, + "qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb": 286.629953595, + "qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb": 79.117298093, + "qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb": 93.756700512, + "qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_license_finding_spec.rb": 52.03508004, + "qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb": 188.62563854500002, + "qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb": 83.83481575100001, + "qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb": 361.946406254, + "qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb": 25.109618615, + "qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb": 344.049416965, + "qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 65.97918991200001, + "qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 183.603381447, + "qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 84.007080672, + "qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 86.97312621900001, + "qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 20.006215928, + "qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 17.544257098, + "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 340.368519631, + "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 52.365083763, + "qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 22.355923644, + "qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 43.217316152, + "qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 18.700724423, + "qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 38.518595652, + "qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 34.88685599, + "qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 35.187899468, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 33.828825675, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 46.759892088, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 38.62805672, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 36.022821403, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 65.84961023299999, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 48.424952481, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 26.165719765, + "qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 32.518716604000005, + "qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 38.944821538, + "qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 26.74355221, + "qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 47.345208494000005, + "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 42.764278222, + "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 82.003867639, + "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 30.179142209, + "qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 98.339845593, + "qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 56.057041755, + "qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 34.421689839, + "qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 588.031691748, + "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 53.427869736, + "qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 28.81670615, + "qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 246.208580396, + "qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 44.089321165, + "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 133.749575199, + "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 191.43056182499998, + "qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 44.338538048000004, + "qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 168.536588995, + "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 46.391260459, + "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 58.375838866, + "qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 461.09076697399996, + "qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 305.051468772, + "qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 38.86330345, + "qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 49.26893309, + "qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 106.303467435, + "qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 50.262591857, + "qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 71.47798872, + "qa/specs/features/ee/browser_ui/4_verify/root_cause_analysis_with_duo_chat_spec.rb": 37.4724197, + "qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 21.162758874, + "qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb": 36.260538211 } diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb index 7eff9c0a56a..7af16a7733d 100644 --- a/spec/features/merge_request/user_sees_diff_spec.rb +++ b/spec/features/merge_request/user_sees_diff_spec.rb @@ -140,7 +140,7 @@ RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_re find_by_scrolling("[id='#{file_hash}']") expect(page).to have_text("function foo {") - expect(page).to have_css(".line[lang='rust'] .k") + expect(page).to have_css(".line[data-lang=\"rust\"] .k") end end diff --git a/spec/frontend/notes/components/diff_with_note_spec.js b/spec/frontend/notes/components/diff_with_note_spec.js index 9cce846d8bb..8a4708ad9b0 100644 --- a/spec/frontend/notes/components/diff_with_note_spec.js +++ b/spec/frontend/notes/components/diff_with_note_spec.js @@ -61,7 +61,7 @@ describe('diff_with_note', () => { }); it('removes trailing "+" char', () => { - const richText = wrapper.vm.$el + const richText = wrapper.element .querySelectorAll('.line_holder')[4] .querySelector('.line_content').textContent[0]; @@ -69,7 +69,8 @@ describe('diff_with_note', () => { }); it('removes trailing "-" char', () => { - const richText = wrapper.vm.$el.querySelector('#LC13').parentNode.textContent[0]; + const richText = wrapper.element.querySelector('.line .deletion').closest('.line').parentNode + .textContent[0]; expect(richText).not.toEqual('-'); }); diff --git a/spec/lib/bulk_imports/ndjson_pipeline_spec.rb b/spec/lib/bulk_imports/ndjson_pipeline_spec.rb index 9f1e4bfa190..4806c23d86f 100644 --- a/spec/lib/bulk_imports/ndjson_pipeline_spec.rb +++ b/spec/lib/bulk_imports/ndjson_pipeline_spec.rb @@ -364,6 +364,29 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do expect(failure.exception_message).to eq("Project can't be blank, Priority can't be blank, and Priority is not a number") end end + + context 'when object has failed subrelations' do + it 'captures failed subrelations when max retries exceeded' do + label = group.labels.new + exception = ActiveRecord::QueryCanceled.new("PG::QueryCanceled: ERROR: canceling statement due to statement timeout") + failed_record = { record: label.priorities.build, exception: exception } + + allow_next_instance_of(Gitlab::ImportExport::Base::RelationObjectSaver) do |saver| + allow(saver).to receive(:execute) + allow(saver).to receive(:invalid_subrelations).and_return([]) + allow(saver).to receive(:failed_subrelations).and_return([failed_record]) + end + + subject.load(context, [label]) + + failure = entity.failures.first + + expect(failure.pipeline_class).to eq(tracker.pipeline_name) + expect(failure.subrelation).to eq('LabelPriority') + expect(failure.exception_class).to eq('ActiveRecord::QueryCanceled') + expect(failure.exception_message).to eq("PG::QueryCanceled: ERROR: canceling statement due to statement timeout") + end + end end context 'when object is persisted' do diff --git a/spec/lib/gitlab/database/gitlab_schema_spec.rb b/spec/lib/gitlab/database/gitlab_schema_spec.rb index dec5ec69d4c..02c623eae26 100644 --- a/spec/lib/gitlab/database/gitlab_schema_spec.rb +++ b/spec/lib/gitlab/database/gitlab_schema_spec.rb @@ -218,6 +218,31 @@ RSpec.describe Gitlab::Database::GitlabSchema, feature_category: :database do end end + describe '.sharding_root_tables' do + context 'schemas where require_sharding_key is true' do + using RSpec::Parameterized::TableSyntax + + where(:schema_name, :result) do + :gitlab_main_user | %w[organizations users] + :gitlab_main_cell | %w[organizations projects namespaces] + :gitlab_ci | %w[organizations projects namespaces] + :gitlab_sec | %w[organizations projects namespaces] + end + + with_them do + it { expect(described_class.sharding_root_tables(schema_name)).to match_array(result) } + end + + it 'always includes organizations', :aggregate_failures do + Gitlab::Database.all_gitlab_schemas.each do |schema_name, schema_info| + next unless schema_info.require_sharding_key + + expect(described_class.sharding_root_tables(schema_name)).to include('organizations') + end + end + end + end + context 'when testing cross schema access' do using RSpec::Parameterized::TableSyntax diff --git a/spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb b/spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb index cc8c9cc103c..a1c9a5e23ab 100644 --- a/spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb +++ b/spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb @@ -3,14 +3,12 @@ require 'spec_helper' RSpec.describe 'cross-database foreign keys', feature_category: :database do - # While we are building out Cells, we will be moving tables from gitlab_main schema - # to either gitlab_main_clusterwide schema or gitlab_main_cell schema. - # During this transition phase, cross database foreign keys need - # to be temporarily allowed to exist, until we can work on converting these columns to loose foreign keys. + # Pre-existing FK that needs to be convered to loose foreign keys + # # The issue corresponding to the loose foreign key conversion # should be added as a comment along with the name of the column. let!(:allowed_cross_database_foreign_keys) do - [ + keys = [ 'zoekt_indices.zoekt_enabled_namespace_id', 'zoekt_repositories.project_id', 'zoekt_replicas.zoekt_enabled_namespace_id', @@ -47,6 +45,30 @@ RSpec.describe 'cross-database foreign keys', feature_category: :database do 'appearance_uploads.namespace_id', # https://gitlab.com/gitlab-org/gitlab/-/issues/534207 'appearance_uploads.organization_id' # https://gitlab.com/gitlab-org/gitlab/-/issues/534207 ] + + # gitlab_main_user <=> gitlab_main_clusterwide issues + # Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/505754 + # NOTE: Likely converting FK to LFK is not enough. + # The tables here needs to be reworked, or shifted to gitlab_main_user + keys += [ + 'abuse_reports.assignee_id', + 'abuse_reports.resolved_by_id', + 'abuse_report_notes.updated_by_id', + 'abuse_report_notes.author_id', + 'abuse_report_notes.resolved_by_id', + 'abuse_report_events.user_id', + 'deploy_tokens.creator_id', + 'user_admin_roles.admin_role_id', + 'abuse_events.user_id', + 'abuse_report_uploads.uploaded_by_user_id', + 'gpg_keys.user_id', + 'authentication_events.user_id', + 'abuse_trust_scores.user_id', + 'user_permission_export_upload_uploads.uploaded_by_user_id', + 'user_permission_export_uploads.user_id' + ] + + keys end def foreign_keys_for(table_name) @@ -61,6 +83,22 @@ RSpec.describe 'cross-database foreign keys', feature_category: :database do !Gitlab::Database::GitlabSchema.cross_foreign_key_allowed?(table_schemas, tables) end + def cross_db_failure_message(column, fk) + tables = [fk.from_table, fk.to_table] + table_schemas = Gitlab::Database::GitlabSchema.table_schemas!(tables) + + if table_schemas.all? { |schema| Gitlab::Database::GitlabSchema.require_sharding_key?(schema) } + "Found extra cross-database foreign key #{column} referencing #{fk.to_table} with constraint name #{fk.name}. " \ + "When a foreign key references another database you must use a Loose Foreign Key instead https://docs.gitlab.com/ee/development/database/loose_foreign_keys.html." + else + # Any FK that references to / from a non-sharded table (e.g. gitlab_main_clusterwide) is not allowed + "Found extra cross-database foreign key #{column} referencing #{fk.to_table} with constraint name #{fk.name}. " \ + "Sharded tables referencing from / to non-sharded tables are not allowed in Cells architecture. " \ + "Consult https://docs.gitlab.com/development/cells for possible solutions. " \ + "(gitlab_schemas: #{table_schemas.join(', ')})" + end + end + it 'onlies have allowed list of cross-database foreign keys', :aggregate_failures do all_tables = ApplicationRecord.connection.data_sources allowlist = allowed_cross_database_foreign_keys.dup @@ -72,7 +110,7 @@ RSpec.describe 'cross-database foreign keys', feature_category: :database do column = "#{fk.from_table}.#{Array.wrap(fk.column).join('.')}" allowlist.delete(column) - expect(allowed_cross_database_foreign_keys).to include(column), "Found extra cross-database foreign key #{column} referencing #{fk.to_table} with constraint name #{fk.name}. When a foreign key references another database you must use a Loose Foreign Key instead https://docs.gitlab.com/ee/development/database/loose_foreign_keys.html ." + expect(allowed_cross_database_foreign_keys).to include(column), cross_db_failure_message(column, fk) end end diff --git a/spec/lib/gitlab/database/sharding_key_spec.rb b/spec/lib/gitlab/database/sharding_key_spec.rb index e9d2454e811..bdd1fb30d0c 100644 --- a/spec/lib/gitlab/database/sharding_key_spec.rb +++ b/spec/lib/gitlab/database/sharding_key_spec.rb @@ -118,6 +118,8 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do 'gitlab_subscription_histories.namespace_id', # allowed as it points to itself 'organizations.id', + # allowed as it points to itself + 'users.id', # contains an object storage reference. Group_id is the sharding key but we can't use the usual cascade delete FK. 'virtual_registries_packages_maven_cache_entries.group_id', # The table contains references in the object storage and thus can't have cascading delete @@ -146,8 +148,6 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do let(:starting_from_milestone) { 16.6 } - let(:allowed_sharding_key_referenced_tables) { %w[projects namespaces organizations] } - it 'requires a sharding_key for all cell-local tables, after milestone 16.6', :aggregate_failures do tables_missing_sharding_key(starting_from_milestone: starting_from_milestone).each do |table_name| expect(allowed_to_be_missing_sharding_key).to include(table_name), error_message(table_name) @@ -166,7 +166,9 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do it 'ensures all sharding_key columns exist and reference projects, namespaces or organizations', :aggregate_failures do - all_tables_to_sharding_key.each do |table_name, sharding_key| + all_tables_to_sharding_key.each do |table_name, sharding_key, gitlab_schema| + allowed_sharding_key_referenced_tables = ::Gitlab::Database::GitlabSchema.sharding_root_tables(gitlab_schema) + sharding_key.each do |column_name, referenced_table_name| expect(column_exists?(table_name, column_name)).to eq(true), "Could not find sharding key column #{table_name}.#{column_name}" @@ -192,7 +194,7 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do it 'ensures all sharding_key columns are not nullable or have a not null check constraint', :aggregate_failures do - all_tables_to_sharding_key.each do |table_name, sharding_key| + all_tables_to_sharding_key.each do |table_name, sharding_key, _gitlab_schema| sharding_key_columns = sharding_key.keys if sharding_key_columns.one? @@ -475,8 +477,8 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do entry.sharding_key.present? end - entries_with_sharding_key.to_h do |entry| - [entry.table_name, entry.sharding_key] + entries_with_sharding_key.map do |entry| + [entry.table_name, entry.sharding_key, entry.gitlab_schema] end end diff --git a/spec/lib/gitlab/diff/highlight_spec.rb b/spec/lib/gitlab/diff/highlight_spec.rb index 6bf2fab60e3..f8e2f9705b0 100644 --- a/spec/lib/gitlab/diff/highlight_spec.rb +++ b/spec/lib/gitlab/diff/highlight_spec.rb @@ -39,19 +39,19 @@ RSpec.describe Gitlab::Diff::Highlight, feature_category: :source_code_managemen end it 'highlights and marks unchanged lines' do - code = %{ def popen(cmd, path=nil)\n} + code = %{ def popen(cmd, path=nil)\n} expect(subject[2].rich_text).to eq(code) end it 'highlights and marks removed lines' do - code = %(- raise "System commands must be given as an array of strings"\n) + code = %(- raise "System commands must be given as an array of strings"\n) expect(subject[4].rich_text).to eq(code) end it 'highlights and marks added lines' do - code = %(+ raise RuntimeError, "System commands must be given as an array of strings"\n) + code = %(+ raise RuntimeError, "System commands must be given as an array of strings"\n) expect(subject[5].rich_text).to eq(code) end @@ -136,7 +136,7 @@ RSpec.describe Gitlab::Diff::Highlight, feature_category: :source_code_managemen it 'blobs are highlighted as plain text without loading all data' do expect(diff_file.blob).not_to receive(:load_all_data!) - expect(subject[2].rich_text).to eq(%{ def popen(cmd, path=nil)\n}) + expect(subject[2].rich_text).to eq(%{ def popen(cmd, path=nil)\n}) expect(subject[2].rich_text).to be_html_safe end end @@ -147,7 +147,7 @@ RSpec.describe Gitlab::Diff::Highlight, feature_category: :source_code_managemen it 'blobs are highlighted as plain text without loading all data' do expect(diff_file.blob).not_to receive(:load_all_data!) - expect(subject[2].rich_text).to eq(%{ def popen(cmd, path=nil)\n}) + expect(subject[2].rich_text).to eq(%{ def popen(cmd, path=nil)\n}) expect(subject[2].rich_text).to be_html_safe end end diff --git a/spec/lib/gitlab/highlight_spec.rb b/spec/lib/gitlab/highlight_spec.rb index 2b585c0b6bb..4b354cf998a 100644 --- a/spec/lib/gitlab/highlight_spec.rb +++ b/spec/lib/gitlab/highlight_spec.rb @@ -46,6 +46,13 @@ RSpec.describe Gitlab::Highlight do expect(result).to eq(%(plain text contents)) end + it 'avoids attributes when used on diff' do + expected = %[(make-pathname :defaults name +:type "assem")] + + expect(described_class.highlight(file_name, content, used_on: :diff)).to eq(expected) + end + context 'when content is too long to be highlighted' do let(:result) { described_class.highlight(file_name, content) } # content is 44 bytes diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index c0d6f540367..5734c7ef88d 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -1034,6 +1034,7 @@ lists: - list_user_preferences - group - project +- custom_status milestone_releases: - milestone - release diff --git a/spec/lib/gitlab/import_export/base/relation_object_saver_spec.rb b/spec/lib/gitlab/import_export/base/relation_object_saver_spec.rb index 13d94fdb6fe..0e815b10e82 100644 --- a/spec/lib/gitlab/import_export/base/relation_object_saver_spec.rb +++ b/spec/lib/gitlab/import_export/base/relation_object_saver_spec.rb @@ -108,5 +108,108 @@ RSpec.describe Gitlab::ImportExport::Base::RelationObjectSaver, feature_category end end end + + context 'when database timeout (ActiveRecord::QueryCanceled) occurs during batch processing' do + let(:notes) { build_list(:note, 10, project: project, importing: true) } + let(:relation_object) { build(:issue, project: project, notes: notes) } + let(:relation_definition) { { 'notes' => {} } } + + before do + stub_feature_flags(import_rescue_query_canceled: true) + end + + context 'when feature flag is disabled' do + before do + stub_feature_flags(import_rescue_query_canceled: false) + end + + it 're-raises the exception without retrying' do + allow(saver).to receive(:save_valid_records).and_raise(ActiveRecord::QueryCanceled) + + expect { saver.execute }.to raise_error(ActiveRecord::QueryCanceled) + expect(saver).not_to receive(:process_with_smaller_batch_size) + end + end + + context 'when maximum exception rescue count is exceeded' do + it 're-raises the exception after MAX_EXCEPTION_RESCUE_COUNT attempts' do + allow(saver).to receive(:save_valid_records).and_raise(ActiveRecord::QueryCanceled) + + saver.instance_variable_set(:@exceptions_rescued, described_class::MAX_EXCEPTION_RESCUE_COUNT - 1) + + expect { saver.execute }.to raise_error(ActiveRecord::QueryCanceled) + expect(saver.instance_variable_get(:@exceptions_rescued)).to eq(described_class::MAX_EXCEPTION_RESCUE_COUNT) + end + + it 'increments exception counter on each rescue' do + call_count = 0 + allow(saver).to receive(:save_valid_records) do + call_count += 1 + raise ActiveRecord::QueryCanceled if call_count <= 2 + end + + saver.execute + + expect(saver.instance_variable_get(:@exceptions_rescued)).to eq(2) + end + end + + it 'retries with smaller batch size' do + expect(saver).to receive(:save_valid_records).and_raise(ActiveRecord::QueryCanceled) + allow(saver).to receive(:save_valid_records).and_call_original + + expect(saver).to receive(:save_batch_with_retry) + .with('notes', notes) + .and_call_original + smaller_batch_size = (notes.size / described_class::BATCH_SIZE_REDUCTION_FACTOR.to_f).ceil + + (0...described_class::BATCH_SIZE_REDUCTION_FACTOR).each do |i| + start_index = i * smaller_batch_size + end_index = [start_index + smaller_batch_size, notes.size].min - 1 + batch = notes[start_index..end_index] + + next if batch.empty? + + expect(saver).to receive(:save_batch_with_retry) + .with('notes', batch, 1) + .and_call_original + end + + saver.execute + end + + it 'tracks error with Gitlab::ErrorTracking' do + expect(saver).to receive(:save_valid_records).and_raise(ActiveRecord::QueryCanceled) + allow(saver).to receive(:save_valid_records).and_call_original + + expect(Gitlab::ErrorTracking).to receive(:track_exception).at_least(:once).with( + instance_of(ActiveRecord::QueryCanceled), + hash_including( + relation_name: 'notes', + relation_key: 'issues', + batch_size: kind_of(Integer), + retry_count: kind_of(Integer) + ) + ) + + saver.execute + end + + it 'tracks failed subrelations when max retries exceeded' do + call_count = 0 + + allow(saver).to receive(:save_valid_records) do |*args| + call_count += 1 + raise ActiveRecord::QueryCanceled if call_count <= 4 + + saver.method(:save_valid_records).super_method.call(*args) + end + + saver.execute + expect(saver.failed_subrelations.present?).to eq(true) + expect(saver.failed_subrelations.pluck(:record)).to match_array(notes.first) + expect(saver.failed_subrelations.pluck(:exception)).to all(be_a(ActiveRecord::QueryCanceled)) + end + end end end diff --git a/spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb index c6119ae60cb..ddeee8044f9 100644 --- a/spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb @@ -115,6 +115,58 @@ RSpec.describe Gitlab::ImportExport::Group::RelationTreeRestorer, feature_catego end end + context 'when relation object has failed subrelations' do + let(:board) do + { + 'name' => 'test', + 'lists' => [List.new], + 'group_id' => importable.id + } + end + + before do + allow_next_instance_of(Gitlab::ImportExport::Base::RelationObjectSaver) do |saver| + exception = ActiveRecord::QueryCanceled.new( + "PG::QueryCanceled: ERROR: canceling statement due to statement timeout" + ) + failed_records = [ + { record: List.new, exception: exception } + ] + + allow(saver).to receive_messages( + invalid_subrelations: [], + failed_subrelations: failed_records + ) + end + end + + it 'logs failed subrelations' do + expect(shared.logger) + .to receive(:info) + .with( + hash_including( + message: '[Project/Group Import] Failed subrelation', + group_id: importable.id, + relation_key: 'boards', + exception_class: 'ActiveRecord::QueryCanceled' + ) + ).at_least(:once) + + restore_relations + + board = importable.boards.last + failures = importable.import_failures.select { |f| f.exception_class != 'ActiveRecord::RecordInvalid' } + + expect(board.name).to eq('test') + + expect(failures.map(&:exception_class)).to include('ActiveRecord::QueryCanceled') + expect(failures.map(&:source)).to all(eq('RelationTreeRestorer#save_relation_object')) + expect(failures.map(&:exception_message)).to include( + 'PG::QueryCanceled: ERROR: canceling statement due to statement timeout' + ) + end + end + describe 'progress tracking' do let(:board) { { 'name' => 'test', 'group_id' => importable.id } } diff --git a/spec/lib/rouge/formatters/html_gitlab_spec.rb b/spec/lib/rouge/formatters/html_gitlab_spec.rb index 5e5075b72b8..5cce2e2f442 100644 --- a/spec/lib/rouge/formatters/html_gitlab_spec.rb +++ b/spec/lib/rouge/formatters/html_gitlab_spec.rb @@ -37,6 +37,16 @@ RSpec.describe Rouge::Formatters::HTMLGitlab, feature_category: :source_code_man end end + context 'when fix_attributes is true' do + let(:options) { { fix_attributes: true } } + + it 'returns highlighted code without attributes' do + code = %q(def hello) + + is_expected.to eq(code) + end + end + context 'when line number is provided' do let(:options) { { tag: lang, line_number: 10 } } diff --git a/spec/migrations/cleanup_untethered_integrations_spec.rb b/spec/migrations/cleanup_untethered_integrations_spec.rb new file mode 100644 index 00000000000..d5124c9c975 --- /dev/null +++ b/spec/migrations/cleanup_untethered_integrations_spec.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe CleanupUntetheredIntegrations, feature_category: :integrations do + let(:organizations) { table(:organizations) } + let(:integrations) { table(:integrations) } + let(:namespaces) { table(:namespaces) } + let(:projects) { table(:projects) } + + let!(:default_organization) { organizations.create!(id: 1, name: 'Default', path: 'default') } + let!(:other_organization) { organizations.create!(id: 2, name: 'Other', path: 'other') } + let!(:group) { namespaces.create!(name: 'bar', path: 'bar', type: 'Group', organization_id: 1) } + + let!(:project) do + projects.create!( + name: 'project', + path: 'project', + namespace_id: group.id, + organization_id: 1, + project_namespace_id: group.id + ) + end + + let!(:untethered_integration) do + integrations.create!( + instance: false, + group_id: nil, + project_id: nil, + type_new: 'Integrations::MockMonitoring' + ) + end + + let!(:another_untethered_integration) do + integrations.create!( + instance: false, + group_id: nil, + project_id: nil, + type_new: 'Integrations::MockCi' + ) + end + + let!(:tethered_integration) do + integrations.create!( + instance: false, + group_id: group.id, + type_new: 'Integrations::MockCi' + ) + end + + let!(:another_tethered_integration) do + integrations.create!( + instance: false, + project_id: project.id, + group_id: nil, + type_new: 'Integrations::Asana' + ) + end + + describe "#up" do + it 'removes untethered integrations' do + expect(integrations.count).to eq(4) + expect(untethered_integration).to be_present + expect(another_untethered_integration).to be_present + + migrate! + + expect(integrations.count).to eq(2) + expect(tethered_integration.reload).to be_present + expect(another_tethered_integration.reload).to be_present + end + end +end diff --git a/spec/support/finder_collection_allowlist.yml b/spec/support/finder_collection_allowlist.yml index ae4dcd83f82..a69d88a1ab6 100644 --- a/spec/support/finder_collection_allowlist.yml +++ b/spec/support/finder_collection_allowlist.yml @@ -10,6 +10,7 @@ - Llm::ExtraResourceFinder # Reason: The finder does not deal with DB-backend resource for now. - Security::VulnerabilityElasticFinder # Reason: The finder deals with Elasticsearch records and not DB records - Security::VulnerabilityElasticAggregationFinder # Reason: The finder deals with Elasticsearch records and not DB records +- WorkItems::Statuses::Finder # Reason: The finder intentionally returns a single model instance. # Temporary excludes (aka TODOs) # For example: