Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-05-23 06:08:54 +00:00
parent 76ca8dd6c3
commit d4718b98dd
20 changed files with 954 additions and 936 deletions

View File

@ -42,7 +42,12 @@ module Resolvers
end
elsif iid
BatchLoader::GraphQL.for(iid).batch(key: project) do |iids, loader|
finder = ::Ci::PipelinesFinder.new(project, current_user, iids: iids)
# This is a temporary workaround for some customers until
# https://gitlab.com/gitlab-org/gitlab/-/issues/545167 is addressed
args = { iids: iids }
args[:sort] = :asc if Feature.enabled?(:single_pipeline_for_resolver, project)
finder = ::Ci::PipelinesFinder.new(project, current_user, args)
apply_lookahead(finder.execute).each { |pipeline| loader.call(pipeline.iid.to_s, pipeline) }
end

View File

@ -34,7 +34,7 @@ module WebHooks
end
included do
delegate :auto_disabling_enabled?, to: :class, private: true
delegate :auto_disabling_enabled?, to: :class
ignore_column :backoff_count, remove_with: '18.1', remove_after: '2025-05-20'
@ -113,7 +113,7 @@ module WebHooks
# Don't actually back-off until a grace level of TEMPORARILY_DISABLED_FAILURE_THRESHOLD failures have been seen
# tracked in the recent_failures counter
def backoff!
return unless executable?
return unless auto_disabling_enabled? && executable?
new_recent_failures = next_failure_count

View File

@ -104,6 +104,7 @@ module Users
def require_password_check?
return false unless @user.persisted?
return false if @user.password_automatically_set?
return false unless @user.allow_password_authentication_for_web?
changes = @user.changed
ATTRS_REQUIRING_PASSWORD_CHECK.any? { |param| changes.include?(param) }

View File

@ -46,6 +46,8 @@ module WebHooks
# Perform this operation within an `Gitlab::ExclusiveLease` lock to make it
# safe to be called concurrently from different workers.
def update_hook_failure_state
return unless hook.auto_disabling_enabled?
in_lock(lock_name, ttl: LOCK_TTL, sleep_sec: LOCK_SLEEP, retries: LOCK_RETRY) do |_retried|
hook.reset # Reload within the lock so properties are guaranteed to be current.

View File

@ -4,7 +4,7 @@
- read_only_help_text = readonly ? s_("Profiles|Your email address was automatically set based on your %{provider_label} account") % { provider_label: attribute_provider_label(:email) } : user_email_help_text(@user)
- help_text = email_change_disabled ? s_("Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO.") % { group_name: @user.managing_group.name } : read_only_help_text
- password_automatically_set = @user.password_automatically_set?
- password_authentication_disabled_by_enterprise_group = local_assigns.fetch(:password_authentication_disabled_by_enterprise_group, false)
- allow_password_authentication_for_web = @user.allow_password_authentication_for_web?
.form-group.gl-form-group
= form.label :email, _('Email')
@ -12,7 +12,7 @@
.form-text.gl-text-subtle
= help_text.html_safe
- unless password_automatically_set || password_authentication_disabled_by_enterprise_group
- unless password_automatically_set || !allow_password_authentication_for_web
= hidden_field_tag 'user[validation_password]', :validation_password, class: 'js-password-prompt-field', help: s_("Profiles|Enter your password to confirm the email change")
.form-group.gl-form-group

View File

@ -1,8 +1,10 @@
name: load_balancer_replace_hosts
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/497226
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170129
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/534523
milestone: '18.0'
group: group::database frameworks
---
name: single_pipeline_for_resolver
description: Temp workaround FF to only return one result on project pipeline resolver
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/461470
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/192174
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/544930
milestone: '18.1'
group: group::pipeline execution
type: gitlab_com_derisk
default_enabled: false

View File

@ -255,6 +255,8 @@
- 1
- - compliance_management_compliance_framework_project_requirement_statuses_export_mailer
- 1
- - compliance_management_compliance_framework_projects_compliance_enqueue
- 1
- - compliance_management_framework_export_mailer
- 1
- - compliance_management_merge_requests_compliance_violations

View File

@ -501,6 +501,8 @@ You can change the maximum time a job can run before it times out:
- At the [runner level](../ci/runners/configure_runners.md#set-the-maximum-job-timeout).
This limit must be 10 minutes or longer.
Regardless of configured timeout limits, GitLab terminates any job that has been inactive for 60 minutes. An inactive job is one that has produced no new logs or trace updates.
### Maximum number of jobs in a pipeline
You can limit the maximum number of jobs in a pipeline. The number

View File

@ -2068,7 +2068,6 @@ Input type: `AiActionInput`
| <a id="mutationaiactionplatformorigin"></a>`platformOrigin` | [`String`](#string) | Specifies the origin platform of the request. |
| <a id="mutationaiactionprojectid"></a>`projectId` | [`ProjectID`](#projectid) | Global ID of the project the user is acting on. |
| <a id="mutationaiactionresolvevulnerability"></a>`resolveVulnerability` | [`AiResolveVulnerabilityInput`](#airesolvevulnerabilityinput) | Input for resolve_vulnerability AI action. |
| <a id="mutationaiactionrootnamespaceid"></a>`rootNamespaceId` | [`NamespaceID`](#namespaceid) | Global ID of the top-level namespace the user is acting on. |
| <a id="mutationaiactionsummarizecomments"></a>`summarizeComments` | [`AiSummarizeCommentsInput`](#aisummarizecommentsinput) | Input for summarize_comments AI action. |
| <a id="mutationaiactionsummarizenewmergerequest"></a>`summarizeNewMergeRequest` | [`AiSummarizeNewMergeRequestInput`](#aisummarizenewmergerequestinput) | Input for summarize_new_merge_request AI action. |
| <a id="mutationaiactionsummarizereview"></a>`summarizeReview` | [`AiSummarizeReviewInput`](#aisummarizereviewinput) | Input for summarize_review AI action. |

View File

@ -296,6 +296,7 @@ Pros:
Cons:
- Query performance degrades in subsequent loops due to [negative side effects](https://gitlab.com/gitlab-org/gitlab/-/issues/544662) from repeated scans of stale index entries and visibility checks. As such, this strategy is only suitable for short-lived operations affecting a relatively small volume of data. The safe limit is generally at most 10k rows, but this can vary based on factors such as table size and index structure.
- Thorough testing and manual verification of the underlying `DELETE` or `UPDATE` query is a must. There are some issues with [CTEs](../sql.md#when-to-use-common-table-expressions) when updating or deleting records.
- If the `break` logic has a bug we might end up in an infinite loop.

View File

@ -31,7 +31,7 @@ module Gitlab
'SRV' => Net::DNS::SRV
}.freeze
Address = Data.define(:hostname, :port) do
Address = Struct.new(:hostname, :port) do
def to_s
port ? "#{hostname}:#{port}" : hostname
end
@ -136,19 +136,11 @@ module Gitlab
wait_time
end
def replace_hosts(addresses)
if replace_hosts_enabled?
new_replace_hosts(addresses)
else
old_replace_hosts(addresses)
end
end
# Replaces all the hosts in the load balancer with the new ones,
# disconnecting the old connections.
#
# addresses - An Array of Address Data types to use for the new hosts
def old_replace_hosts(addresses)
# addresses - An Array of Address structs to use for the new hosts.
def replace_hosts(addresses)
old_hosts = load_balancer.host_list.hosts
load_balancer.host_list.hosts = addresses.map do |addr|
@ -163,56 +155,6 @@ module Gitlab
disconnect_old_hosts(old_hosts)
end
# Replace the hosts in the load balancer with the new ones from the addresses provided.
# Reuse existing hosts where the hostname and port remain unchanged.
# Disconnect the old connections.
#
# addresses - An Array of Address Data types to use for the new hosts
def new_replace_hosts(addresses)
old_hosts = load_balancer.host_list.hosts
# Example:
# old_hosts_lookup = {
# Address.new("10.0.1.30", 5432) => [host1, host2],
# Address.new("10.0.1.31", 5432) => [host3]
# }
old_hosts_lookup = old_hosts.each_with_object({}) do |host, hash|
key = Address.new(host.host.to_s, host.port)
(hash[key] ||= []) << host
end
# Find addresses that exist in both the addresses
# and old_hosts_lookup collections
hosts_to_keep = addresses & old_hosts_lookup.keys
# Create new hosts with current kept hosts
new_hosts = addresses.map do |addr|
if hosts_to_keep.include?(addr)
old_hosts_lookup[addr]
else
Host.new(addr.hostname, load_balancer, port: addr.port)
end
end
# Update load balancer's host list
load_balancer.host_list.hosts = new_hosts
# return the elements that are in the old_host_lookup, but not in addresses.
addresses_to_disconnect = old_hosts_lookup.keys - addresses
# Convert addresses to disconnect back to Host objects before disconnecting them
hosts_to_disconnect = addresses_to_disconnect.flat_map do |addr|
old_hosts_lookup[addr] || []
end
# We must explicitly disconnect the old connections, otherwise we may
# leak database connections over time. For example, if a request
# started just before we added the new hosts it will use an old
# host/connection. While this connection will be checked in and out,
# it won't be explicitly disconnected.
disconnect_old_hosts(hosts_to_disconnect)
end
# Returns an Array containing:
#
# 1. The time to wait for the next check.
@ -282,10 +224,6 @@ module Gitlab
private
def replace_hosts_enabled?
Feature.enabled?(:load_balancer_replace_hosts, Feature.current_pod)
end
def record_type_for(type)
RECORD_TYPES.fetch(type) do
raise(ArgumentError, "Unsupported record type: #{type}")
@ -304,7 +242,7 @@ module Gitlab
end
def addresses_from_a_record(resources)
resources.map { |r| Address.new(r.address.to_s, nil) }
resources.map { |r| Address.new(r.address.to_s) }
end
def sampler

File diff suppressed because it is too large Load Diff

View File

@ -1,301 +1,301 @@
{
"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": 38.111150547,
"qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb": 98.075539459,
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 95.575052715,
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 101.260447973,
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 104.423498389,
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 18.602449972,
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 103.178278762,
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 69.61428484599999,
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 67.166105388,
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 201.443253168,
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 96.197097716,
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 20.374491223,
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 18.094493582,
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 17.424168756,
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 36.237946227,
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 41.161502999,
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 5.456270205,
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 19.153998501,
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 15.918825243,
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 11.799874193,
"qa/specs/features/api/3_create/repository/files_spec.rb": 8.886881007,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 15.073278771,
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 23.663120156,
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 24.611980147,
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 4.903485608,
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 102.896434585,
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 35.60185241,
"qa/specs/features/api/4_verify/file_variable_spec.rb": 67.96600781500001,
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 45.398265887,
"qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 75.014433197,
"qa/specs/features/api/8_monitor/metrics_spec.rb": 5.541299416999999,
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 157.840074237,
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 9.04153073,
"qa/specs/features/api/10_software_supply_chain_security/group_access_token_spec.rb": 33.729497585,
"qa/specs/features/api/10_software_supply_chain_security/project_access_token_spec.rb": 99.77375808299999,
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 99.75135590400001,
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 103.106632808,
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 113.250890775,
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 12.823667002,
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 135.330056427,
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 62.310517004999994,
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 62.737898558,
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 217.906760888,
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 99.214969005,
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 18.698163531,
"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": 26.307625369,
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 28.134853184,
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 34.226462298,
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 4.394272447,
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 19.100452004,
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 10.992138997,
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 14.259009267,
"qa/specs/features/api/3_create/repository/files_spec.rb": 12.52917335,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 13.051352056,
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 22.927797351,
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 15.670832008,
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 11.947882268,
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 75.145120856,
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 19.55595804,
"qa/specs/features/api/4_verify/file_variable_spec.rb": 55.779738675,
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 39.680885853,
"qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 113.831043775,
"qa/specs/features/api/8_monitor/metrics_spec.rb": 5.919834778,
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 135.275125531,
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 8.079570213,
"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": 8.395544179,
"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": 22.283002334,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb": 61.082597923,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb": 64.677489281,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_spec.rb": 14.309775193,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_in_with_2fa_spec.rb": 83.709613822,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_gitlab_via_ldap_spec.rb": 6.010749906,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb": 32.251439946,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb": 18.396677401,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb": 43.464513173,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb": 88.662337124,
"qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb": 26.476377187,
"qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb": 28.144506605,
"qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb": 40.012748332,
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 46.9488407,
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 22.547288368,
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 17.38915003,
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 71.669218414,
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 63.380136384000004,
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 61.951308663,
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 86.264449351,
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 66.378325045,
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 181.488268511,
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 30.157113147,
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 37.997277136,
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 25.329702841,
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 17.788660787,
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 36.196603138,
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 23.481100679,
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 218.87616315900001,
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 33.377930232,
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 48.378931302,
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 28.937625755,
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 30.71645638,
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 35.52220479,
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 23.8668261,
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 132.220518112,
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 29.837806388,
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 38.470629813,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 116.46486399900002,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 91.18818541499999,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 25.383717068,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 41.994619752,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 72.70666402,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 78.418029192,
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 30.290281266,
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 121.39207822,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 59.531032606,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 34.223994806,
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 83.250221712,
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 53.254142091,
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 86.319460986,
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 70.776651114,
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 32.212680874,
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 66.247795924,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 63.444285682,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 51.98428759,
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 53.396109565,
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 27.028215355,
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 35.961107992,
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 23.31599899,
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 28.849404562,
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 64.555505954,
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 158.09833246699998,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 28.435541158,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 35.581662226,
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 26.293243853,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 96.454559773,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 68.22171185,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 51.574169395999995,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 34.086983645000004,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 60.35934335,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 46.70224933,
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 22.822974542,
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 25.808446708,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 23.762283368,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 34.013274611,
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 43.3810681,
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 35.611196368,
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 47.728959398,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 74.96692878,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 71.644739146,
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 39.833623439,
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 14.232417612,
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 29.369842987,
"qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 46.611021337,
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 33.581977419,
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 29.745091804,
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 56.507005899000006,
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 111.028528402,
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 98.744488254,
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 199.693318623,
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 146.406133299,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 90.02628889799999,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 159.72963090899998,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 132.85624477,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 46.944096086,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 70.94115829,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 261.82085280399997,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 285.611826861,
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 68.832607948,
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 169.801331469,
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 42.994208732,
"qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 108.343774359,
"qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 27.645599383,
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 82.638461261,
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 66.602945929,
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 77.832202555,
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 59.904695265,
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 86.186570875,
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 36.613286136,
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 94.711076951,
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 32.040333866,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 23.201478578,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 36.695682153,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 29.601972306,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 24.948546462,
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 21.384531305,
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 59.816282676,
"qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 26.090876463,
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 53.463180206,
"qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 168.26121741,
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 384.61191408900004,
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 214.394666142,
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 78.678839825,
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 97.643423148,
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 62.808413412,
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 310.474415179,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 636.478960743,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 327.943392083,
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 363.846770552,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 287.116987761,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 286.127277494,
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 101.922475668,
"qa/specs/features/browser_ui/6_deploy/auto_devops/create_project_with_auto_devops_spec.rb": 635.925705164,
"qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb": 30.153204869,
"qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb": 182.528811841,
"qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb": 16.598258383,
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb": 201.050451851,
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 102.05338567,
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 12.933900921,
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 66.80862241199999,
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 37.215762078,
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 33.157313333,
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 29.360132361,
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 62.174113198,
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 16.989351796999998,
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 64.82374698199999,
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 183.858967394,
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 25.51563735,
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 36.470017977,
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 37.131314055,
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 40.850739314,
"qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb": 46.325660166,
"qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb": 24.045716455,
"qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 95.464280343,
"qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 122.822174768,
"qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb": 93.943267725,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/blob_index_spec.rb": 43.115643512,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/commit_index_spec.rb": 31.582750003,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/issue_index_spec.rb": 66.391968215,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/merge_request_index_spec.rb": 36.924354904,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/note_index_spec.rb": 59.939803434,
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 163.586779539,
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 14.775235032,
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 82.892779254,
"qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 2.167687183,
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 83.04880919,
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 56.511976923,
"qa/specs/features/ee/api/6_deploy/kubernetes/kubernetes_agent_spec.rb": 348.486801286,
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 11.194772573,
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 19.586511816,
"qa/specs/features/browser_ui/10_software_supply_chain_security/group/group_access_token_spec.rb": 21.44862264,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_recovery_spec.rb": 75.374282602,
"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": 14.451725121,
"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": 4.590088513,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/log_into_mattermost_via_gitlab_spec.rb": 30.852313472,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/login_via_instance_wide_saml_sso_spec.rb": 17.39081198,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb": 42.81768565,
"qa/specs/features/browser_ui/10_software_supply_chain_security/login/register_spec.rb": 107.657027278,
"qa/specs/features/browser_ui/10_software_supply_chain_security/project/project_access_token_spec.rb": 24.224631714,
"qa/specs/features/browser_ui/10_software_supply_chain_security/user/impersonation_token_spec.rb": 39.0311898,
"qa/specs/features/browser_ui/10_software_supply_chain_security/user/user_access_termination_spec.rb": 46.317181586000004,
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 31.412693404,
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 16.959591943,
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 17.218729804,
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 90.674946484,
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 63.968689175,
"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": 97.027137632,
"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": 199.655489594,
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 30.93791539,
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 32.388666346,
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 30.865357362,
"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": 29.61578696,
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 26.927982371,
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 228.459909813,
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 32.282012281,
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 42.645925518,
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 28.684377228,
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 43.338999134,
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 31.496153537,
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 21.633253397,
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 128.68982912200002,
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 25.657647882,
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 33.55859505,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 121.30213238500001,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 74.38198834399999,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 27.83473759,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 38.163295843,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 70.176065376,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 61.67166917,
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 41.458917818,
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 88.989323949,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 52.398744829,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 40.021578525,
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 79.450727085,
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 37.806814212,
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 79.470926863,
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 55.282670616,
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 36.67847337,
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 54.316443061,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 75.910585313,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 51.044740971,
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 60.42697380999999,
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 39.910635717,
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 31.044498315,
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 34.633483474,
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 32.288085717,
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 40.095525218,
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 168.37242043,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 30.420716385,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 26.497516853,
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 22.333165459,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 84.27506953,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 76.603417926,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 55.861543416,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 38.108857434,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 62.94394209399999,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 47.497753576,
"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": 22.987686611,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 26.579970348,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 28.953633916,
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 61.192043899,
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 30.526316737,
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 49.685177216,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 92.759982094,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 75.87326906199999,
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 30.000493821,
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 16.288953406,
"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": 48.309474476000005,
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 38.546342407,
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 23.74605819,
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 40.100389881,
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 104.48533016,
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 35.304441443,
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 195.049594203,
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 141.408415317,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 92.588195786,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 129.38255568,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 127.09388013200001,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 44.763160859,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 40.002734341,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 235.222678413,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 277.797661384,
"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": 120.61002947600001,
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 49.817681304,
"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": 44.949244321,
"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": 75.136141921,
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 87.780731171,
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 44.126500404,
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 70.448619526,
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 46.896649916,
"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": 33.223269348,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 22.949378639,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 42.245237849,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 24.434635279,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 21.919931218,
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 24.862337698,
"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": 31.529639534,
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 58.617418406,
"qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 179.028798155,
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 354.193821795,
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 175.894335851,
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 62.352876457,
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 101.632670707,
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 66.773149523,
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 294.361965559,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 576.911485865,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 300.65003248,
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 325.582335176,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 246.813797008,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 264.29005642000004,
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 119.830112293,
"qa/specs/features/browser_ui/6_deploy/auto_devops/create_project_with_auto_devops_spec.rb": 508.534409644,
"qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb": 40.54865731,
"qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb": 174.96257846400002,
"qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb": 18.358923853,
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb": 219.113961174,
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 81.75776731900001,
"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": 74.629074221,
"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": 32.093244091,
"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": 66.39733359,
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 20.499396629,
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 56.060276537,
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 185.579360825,
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 26.973949904,
"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": 28.431878026,
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 30.511678145,
"qa/specs/features/ee/api/10_software_supply_chain_security/compliance_pipeline_spec.rb": 42.368083226,
"qa/specs/features/ee/api/10_software_supply_chain_security/instance_audit_event_streaming_spec.rb": 44.714497642,
"qa/specs/features/ee/api/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 79.35647539200001,
"qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 138.889256969,
"qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb": 86.426876953,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/blob_index_spec.rb": 60.252244989,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/commit_index_spec.rb": 35.28544611,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/issue_index_spec.rb": 71.428790374,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/merge_request_index_spec.rb": 78.363403839,
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/note_index_spec.rb": 39.000920932,
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 100.215167433,
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 16.18869936,
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 71.318335227,
"qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 1.9536834429999999,
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 81.30575218500002,
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 58.993011909,
"qa/specs/features/ee/api/6_deploy/kubernetes/kubernetes_agent_spec.rb": 347.390735385,
"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": 31.990700299,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb": 103.78321803,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb": 105.888537333,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb": 109.21701602,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb": 252.078243013,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 24.336501419,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 27.152529447,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 14.400584955,
"qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 188.028200379,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 343.008888826,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 49.520481814,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 24.392437719,
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 65.620697333,
"qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 125.921323109,
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 112.479899066,
"qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 123.859361662,
"qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 66.458697357,
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_explain_code_spec.rb": 29.411134621,
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 39.727672908,
"qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb": 127.36550135899999,
"qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb": 66.810152456,
"qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb": 60.191019437,
"qa/specs/features/ee/browser_ui/18_security_risk_management/explain_this_vulnerability_spec.rb": 50.895447969,
"qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb": 26.547110429,
"qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb": 135.849517067,
"qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb": 239.16499573200002,
"qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb": 65.308719785,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb": 88.401737916,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_license_finding_spec.rb": 113.557329895,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb": 110.541579546,
"qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb": 99.787982696,
"qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb": 366.578165225,
"qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb": 20.529203649,
"qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb": 336.934321216,
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 61.12467626,
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 162.977787402,
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 48.458885802,
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 92.009674934,
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 29.776270218,
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 17.61551394,
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 391.19362662599997,
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 51.68405566,
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 15.265142763,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 59.652082193,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 22.837534114,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 35.887005132,
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 34.361309625000004,
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 48.872768856,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 20.16971935,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 47.341266114,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 39.055441082,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 39.012308816,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 85.40554213,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 32.407150826,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 27.352335463,
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 33.925442610000005,
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 41.900124413,
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 26.260563215,
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 52.577645064,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 43.208606357,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 76.878929768,
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 25.183433879,
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 100.089077551,
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 44.652469656,
"qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 33.878016795,
"qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 576.139327141,
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 51.932303423,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 42.113541674,
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 272.45837424800004,
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 48.136657519,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 165.26323557,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 245.597610537,
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 38.855780228,
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 175.35799061,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 44.107962662,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 65.028191306,
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 443.263647588,
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 310.28899864100003,
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 138.047687762,
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 58.954467084,
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 118.760715917,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 81.94450505,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 82.997600643,
"qa/specs/features/ee/browser_ui/4_verify/root_cause_analysis_with_duo_chat_spec.rb": 47.159537228,
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 15.799898825,
"qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb": 33.250843736
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_event_streaming_spec.rb": 50.564336993000005,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_audit_logs_1_spec.rb": 118.673447224,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/restrict_by_ip_address_spec.rb": 114.714044237,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/instance/instance_audit_logs_spec.rb": 124.15534271199999,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/project/project_audit_logs_spec.rb": 248.975066944,
"qa/specs/features/ee/browser_ui/10_software_supply_chain_security/user/minimal_access_user_spec.rb": 31.983135942,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 30.091785565,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 13.666803619,
"qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 204.249185937,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 356.156053914,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 40.41336058,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 17.390043654,
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 33.882604603,
"qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 115.643922294,
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 102.20206676,
"qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 142.335429257,
"qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 66.517417976,
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_explain_code_spec.rb": 32.448344445,
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 65.592552289,
"qa/specs/features/ee/browser_ui/18_security_risk_management/change_vulnerability_status_spec.rb": 119.07416373800001,
"qa/specs/features/ee/browser_ui/18_security_risk_management/create_merge_request_with_secure_spec.rb": 74.815624315,
"qa/specs/features/ee/browser_ui/18_security_risk_management/dismissed_vulnerabilities_in_security_widget_spec.rb": 82.609248469,
"qa/specs/features/ee/browser_ui/18_security_risk_management/explain_this_vulnerability_spec.rb": 48.885358719,
"qa/specs/features/ee/browser_ui/18_security_risk_management/export_vulnerability_report_spec.rb": 26.069179166,
"qa/specs/features/ee/browser_ui/18_security_risk_management/fix_vulnerability_workflow_spec.rb": 132.823123578,
"qa/specs/features/ee/browser_ui/18_security_risk_management/group_pipeline_execution_policy_spec.rb": 237.87592180299998,
"qa/specs/features/ee/browser_ui/18_security_risk_management/project_security_dashboard_spec.rb": 85.851539269,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_execution_policy_vulnerabilities_spec.rb": 85.260439371,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_license_finding_spec.rb": 49.494906509,
"qa/specs/features/ee/browser_ui/18_security_risk_management/scan_result_policy_vulnerabilities_spec.rb": 117.10027006600001,
"qa/specs/features/ee/browser_ui/18_security_risk_management/security_policies_spec.rb": 84.49516156199999,
"qa/specs/features/ee/browser_ui/18_security_risk_management/security_reports_spec.rb": 356.085490877,
"qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerabilities_jira_integration_spec.rb": 46.559122284,
"qa/specs/features/ee/browser_ui/18_security_risk_management/vulnerability_management_spec.rb": 358.92712536500005,
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 57.669210796,
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 121.036604825,
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 56.452138587,
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 81.62097906,
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 22.776134101,
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 18.662644504,
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 394.847792659,
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 58.881964081,
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 15.070071824,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 45.142878392,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 17.553472354,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 39.066278693,
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 42.270769689000005,
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 29.631150573,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 23.138853795,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 33.736093094,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 40.845928732,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 41.011401716,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 62.200659476,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 32.846193228,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 29.413208174,
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 35.731022409,
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 33.24523594,
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 32.817113823,
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 54.264500659,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 40.317723538,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 103.542579776,
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 30.038372126,
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 116.999600968,
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 43.682718342,
"qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 40.079098759,
"qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 527.062471318,
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 56.977668097,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 36.363934799,
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 234.376369475,
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 38.325886455,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 142.72999175400003,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 202.24458252199997,
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 48.151704463,
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 173.79283714,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 47.640731161,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 53.777534776,
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 431.145850456,
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 267.006200813,
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 125.930786394,
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 60.928529948,
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 99.299313394,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 65.005156159,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 54.93497872,
"qa/specs/features/ee/browser_ui/4_verify/root_cause_analysis_with_duo_chat_spec.rb": 31.958236351,
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 18.531912527,
"qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb": 34.357993397
}

View File

@ -37,7 +37,7 @@ RSpec.describe Resolvers::Ci::ProjectPipelineResolver, feature_category: :contin
it 'resolves pipeline for the passed iid' do
expect(Ci::PipelinesFinder)
.to receive(:new)
.with(project, current_user, iids: [project_pipeline_1.iid.to_s])
.with(project, current_user, { iids: [project_pipeline_1.iid.to_s], sort: :asc })
.and_call_original
result = batch_sync do
@ -47,6 +47,25 @@ RSpec.describe Resolvers::Ci::ProjectPipelineResolver, feature_category: :contin
expect(result).to eq(project_pipeline_1)
end
context 'with FF single_pipeline_for_resolver disabled' do
before do
stub_feature_flags(single_pipeline_for_resolver: false)
end
it 'resolves pipeline for the passed iid' do
expect(Ci::PipelinesFinder)
.to receive(:new)
.with(project, current_user, { iids: [project_pipeline_1.iid.to_s] })
.and_call_original
result = batch_sync do
resolve_pipeline(project, { iid: project_pipeline_1.iid.to_s })
end
expect(result).to eq(project_pipeline_1)
end
end
it 'resolves pipeline for the passed sha' do
expect(Ci::PipelinesFinder)
.to receive(:new)
@ -60,6 +79,21 @@ RSpec.describe Resolvers::Ci::ProjectPipelineResolver, feature_category: :contin
expect(result).to eq(project_pipeline_2)
end
it 'only calls the finder once for all parameters' do
expect(Ci::PipelinesFinder)
.to receive(:new)
.with(project, current_user, sha: %w[sha sha1 sha2])
.and_call_original
result = batch_sync do
resolve_pipeline(project, { sha: 'sha' })
resolve_pipeline(project, { sha: 'sha1' })
resolve_pipeline(project, { sha: 'sha2' })
end
expect(result).to eq(project_pipeline_3)
end
it 'keeps the queries under the threshold for id' do
control = ActiveRecord::QueryRecorder.new do
batch_sync { resolve_pipeline(project, { id: project_pipeline_1.to_global_id }) }

View File

@ -149,8 +149,8 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery, feature_catego
end
describe '#refresh_if_necessary' do
let(:address_foo) { described_class::Address.new('foo', nil) }
let(:address_bar) { described_class::Address.new('bar', nil) }
let(:address_foo) { described_class::Address.new('foo') }
let(:address_bar) { described_class::Address.new('bar') }
context 'when a refresh is necessary' do
before do
@ -199,34 +199,20 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery, feature_catego
.and_return(load_balancer)
end
let(:address_foo) { described_class::Address.new('foo', nil) }
let(:address_bar) { described_class::Address.new('bar', nil) }
let(:address_foo) { described_class::Address.new('foo') }
let(:address_bar) { described_class::Address.new('bar') }
let(:load_balancer) do
Gitlab::Database::LoadBalancing::LoadBalancer.new(
Gitlab::Database::LoadBalancing::Configuration
.new(ActiveRecord::Base, [address_foo.hostname])
.new(ActiveRecord::Base, [address_foo])
)
end
it 'replaces the hosts of the load balancer' do
service.replace_hosts([address_bar])
expect(load_balancer.host_list.host_names_and_ports).to match_array([['bar', nil]])
end
it 'reuses existing hosts when hostname and port are unchanged' do
old_host1 = Gitlab::Database::LoadBalancing::Host.new(address_foo.hostname, load_balancer, port: address_foo.port)
old_host2 = Gitlab::Database::LoadBalancing::Host.new(address_bar.hostname, load_balancer, port: address_bar.port)
allow(load_balancer.host_list)
.to receive(:hosts)
.and_return([old_host1, old_host2])
expect(service).to receive(:disconnect_old_hosts).with([old_host2])
service.replace_hosts([address_foo])
expect(load_balancer.host_list.hosts.size).to eq(2)
expect(load_balancer.host_list.host_names_and_ports).to eq([['bar', nil]])
end
it 'disconnects the old connections gracefully if possible' do
@ -270,32 +256,6 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery, feature_catego
service.replace_hosts([address_foo, address_bar])
end
end
context "when replace_hosts_enabled? is true" do
before do
allow(service).to receive(:replace_hosts_enabled?).and_return(true)
allow(service).to receive(:new_replace_hosts).and_call_original
end
it 'calls new_replace_hosts' do
expect(service).to receive(:new_replace_hosts).with([address_bar])
service.replace_hosts([address_bar])
end
end
context "when replace_hosts_enabled? is false" do
before do
allow(service).to receive(:replace_hosts_enabled?).and_return(false)
allow(service).to receive(:old_replace_hosts).and_call_original
end
it 'calls old_replace_hosts' do
expect(service).to receive(:old_replace_hosts).with([address_bar])
service.replace_hosts([address_bar])
end
end
end
describe '#addresses_from_dns' do
@ -329,8 +289,8 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery, feature_catego
it 'returns a TTL and ordered list of IP addresses' do
addresses = [
described_class::Address.new('127.0.0.1', nil),
described_class::Address.new('255.255.255.0', nil)
described_class::Address.new('127.0.0.1'),
described_class::Address.new('255.255.255.0')
]
expect(service.addresses_from_dns).to eq([90, addresses])
@ -429,8 +389,8 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery, feature_catego
it 'returns the ordered host names of the load balancer' do
addresses = [
described_class::Address.new('a', nil),
described_class::Address.new('b', nil)
described_class::Address.new('a'),
described_class::Address.new('b')
]
expect(service.addresses_from_load_balancer).to eq(addresses)

View File

@ -56,7 +56,7 @@ RSpec.describe 'getting pipeline information nested in a project', feature_categ
it 'executes the finder once' do
mock = double(Ci::PipelinesFinder)
opts = { iids: [pipeline.iid, pipeline2.iid, pipeline3.iid].map(&:to_s) }
opts = { iids: [pipeline.iid, pipeline2.iid, pipeline3.iid].map(&:to_s), sort: :asc }
expect(Ci::PipelinesFinder).to receive(:new).once.with(project, current_user, opts).and_return(mock)
expect(mock).to receive(:execute).once.and_return(Ci::Pipeline.none)

View File

@ -146,6 +146,25 @@ RSpec.describe Users::UpdateService, feature_category: :user_profile do
end.to change { user.reload.job_title }
expect(result[:status]).to eq(:success)
end
context 'when password authentication is disabled for SSO users' do
before do
stub_application_setting(disable_password_authentication_for_users_with_sso_identities: true)
end
context 'when the user has SSO identity' do
let_it_be(:user) { create(:omniauth_user) }
it 'does not require password', :aggregate_failures do
result = {}
expect do
result = update_user(user, { email: 'example@example.com' })
end.to change { user.reload.unconfirmed_email }
expect(result[:status]).to eq(:success)
end
end
end
end
end

View File

@ -65,6 +65,19 @@ RSpec.describe WebHooks::LogExecutionService, feature_category: :webhooks do
expect { service.execute }.to change { WebHook.find(project_hook.id).recent_failures }.to(1)
end
context 'when the hook does not have auto-disabling enabled' do
before do
allow(project_hook).to receive(:auto_disabling_enabled?).and_return(false)
end
it 'does not try to obtain a lease or update failure state' do
lease = stub_exclusive_lease(lease_key, timeout: described_class::LOCK_TTL)
expect(lease).not_to receive(:try_obtain)
expect { service.execute }.not_to change { WebHook.find(project_hook.id).recent_failures }.from(0)
end
end
context 'when a lease cannot be obtained' do
where(:response_category, :executable, :needs_updating) do
:ok | true | false

View File

@ -55,6 +55,20 @@ RSpec.shared_examples 'a hook that gets automatically disabled on failure' do
end
end
describe '#auto_disabling_enabled?' do
subject(:auto_disabling_enabled) { hook.auto_disabling_enabled? }
it { is_expected.to be(true) }
context 'when auto_disabling_web_hooks ops flag is disabled' do
before do
stub_feature_flags(auto_disabling_web_hooks: false)
end
it { is_expected.to be(false) }
end
end
describe '#executable?', :freeze_time do
include_context 'with webhook auto-disabling failure thresholds'

View File

@ -38,6 +38,12 @@ RSpec.shared_examples 'a hook that does not get automatically disabled on failur
end
end
describe '#auto_disabling_enabled?' do
it 'is false' do
expect(hook.auto_disabling_enabled?).to be(false)
end
end
describe '#executable?', :freeze_time do
include_context 'with webhook auto-disabling failure thresholds'
@ -78,6 +84,12 @@ RSpec.shared_examples 'a hook that does not get automatically disabled on failur
expect(sql_count).to eq(0)
end
it 'does not write any logs' do
expect(Gitlab::WebHooks::Logger).not_to receive(:new)
hook.enable!
end
end
describe '#backoff!' do
@ -85,6 +97,20 @@ RSpec.shared_examples 'a hook that does not get automatically disabled on failur
it 'does not disable the hook' do
expect { hook.backoff! }.not_to change { hook.executable? }.from(true)
end
it 'does not make a database request' do
hook
sql_count = ActiveRecord::QueryRecorder.new { hook.backoff! }.count
expect(sql_count).to eq(0)
end
it 'does not write any logs' do
expect(Gitlab::WebHooks::Logger).not_to receive(:new)
hook.backoff!
end
end
context 'when we have exhausted the grace period' do