Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-04-04 09:11:41 +00:00
parent 96ddec954f
commit 8a0aaba672
61 changed files with 956 additions and 835 deletions

View File

@ -11,7 +11,7 @@
- .default-retry
- .default-before_script
- .assets-compile-cache
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/${BUILD_OS}-${OS_VERSION}-ruby-${RUBY_VERSION}-rust-${RUST_VERSION}-node-${NODE_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}-lfs-${LFS_VERSION}-yarn-${YARN_VERSION}-graphicsmagick-${GRAPHICSMAGICK_VERSION}
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/ci/${BUILD_OS}-${OS_VERSION}-slim-ruby-${RUBY_VERSION}-node-${NODE_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}-lfs-${LFS_VERSION}-yarn-${YARN_VERSION}-graphicsmagick-${GRAPHICSMAGICK_VERSION}
variables:
SETUP_DB: "false"
WEBPACK_VENDOR_DLL: "true"
@ -30,7 +30,7 @@
- yarn patch-package --reverse # To avoid caching patched modules
compile-production-assets:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/${BUILD_OS}-${OS_VERSION}-ruby-${RUBY_VERSION}-rust-${RUST_VERSION}-node-${NODE_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}-lfs-${LFS_VERSION}-yarn-${YARN_VERSION}-graphicsmagick-${GRAPHICSMAGICK_VERSION}-docker-${DOCKER_VERSION}
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/ci/${BUILD_OS}-${OS_VERSION}-slim-ruby-${RUBY_VERSION}-node-${NODE_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}-lfs-${LFS_VERSION}-yarn-${YARN_VERSION}-graphicsmagick-${GRAPHICSMAGICK_VERSION}-docker-${DOCKER_VERSION}
extends:
- .use-buildx
- .compile-assets-base

View File

@ -4,7 +4,7 @@ variables:
DOCKER_VERSION: "27.4.1"
EXIFTOOL_VERSION: "12.60"
GCLOUD_VERSION: "413"
GIT_VERSION: "2.45"
GIT_VERSION: "2.49"
GO_VERSION: "1.23"
GRAPHICSMAGICK_VERSION: "1.3.36"
HELM_VERSION: "3.16"

View File

@ -16,7 +16,6 @@ import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import DetailsRow from '~/vue_shared/components/registry/details_row.vue';
import ListItem from '~/vue_shared/components/registry/list_item.vue';
import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import {
REMOVE_TAG_BUTTON_TITLE,
DIGEST_LABEL,
@ -55,7 +54,6 @@ export default {
directives: {
GlTooltip: GlTooltipDirective,
},
mixins: [glFeatureFlagsMixin()],
props: {
tag: {
type: Object,
@ -164,9 +162,8 @@ export default {
},
isProtected() {
return (
(this.tag.protection?.minimumAccessLevelForDelete != null ||
this.tag.protection?.minimumAccessLevelForPush != null) &&
this.glFeatures.containerRegistryProtectedTags
this.tag.protection?.minimumAccessLevelForDelete != null ||
this.tag.protection?.minimumAccessLevelForPush != null
);
},
tagRowId() {

View File

@ -1,6 +1,5 @@
<script>
import { GlLink, GlSprintf } from '@gitlab/ui';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { helpPagePath } from '~/helpers/help_page_helper';
import SettingsBlock from '~/vue_shared/components/settings/settings_block.vue';
import ContainerExpirationPolicy from '~/packages_and_registries/settings/project/components/container_expiration_policy.vue';
@ -16,7 +15,6 @@ export default {
ContainerProtectionTagRules,
SettingsBlock,
},
mixins: [glFeatureFlagsMixin()],
inject: ['isContainerRegistryMetadataDatabaseEnabled'],
props: {
expanded: {
@ -27,10 +25,7 @@ export default {
},
computed: {
showContainerProtectedTagsSettings() {
return (
this.glFeatures.containerRegistryProtectedTags &&
this.isContainerRegistryMetadataDatabaseEnabled
);
return this.isContainerRegistryMetadataDatabaseEnabled;
},
},
containerRegistryHelpPath: helpPagePath('user/packages/container_registry/_index.md'),

View File

@ -1,4 +1,4 @@
- if @preload
- if !@lazy
- helpers.add_page_startup_api_call @metadata_endpoint
- helpers.add_page_startup_api_call @diff_files_endpoint
- if @stream_url
@ -23,6 +23,10 @@
= helpers.gl_loading_icon(size: 'sm')
.rd-app-content
.rd-app-content-header{ data: { hidden_files_warning: true } }
- if empty_diff? && !@lazy
= render RapidDiffs::EmptyStateComponent.new
.code{ class: helpers.user_color_scheme }
%div{ data: { diffs_list: true } }
= javascript_tag nonce: content_security_policy_nonce do
@ -30,7 +34,7 @@
requestAnimationFrame(() => { window.performance.mark('rapid-diffs-first-diff-file-shown') })
- if diffs_list?
= diffs_list
- else
- elsif !empty_diff?
= render RapidDiffs::DiffFileComponent.with_collection(@diffs_slice, parallel_view: @diff_view == :parallel)
- if @stream_url
#js-stream-container{ data: { diffs_stream_url: @stream_url } }

View File

@ -13,7 +13,7 @@ module RapidDiffs
update_user_endpoint:,
metadata_endpoint:,
diff_files_endpoint:,
preload: true
lazy: false
)
@diffs_slice = diffs_slice
@reload_stream_url = reload_stream_url
@ -23,7 +23,11 @@ module RapidDiffs
@update_user_endpoint = update_user_endpoint
@metadata_endpoint = metadata_endpoint
@diff_files_endpoint = diff_files_endpoint
@preload = preload
@lazy = lazy
end
def empty_diff?
@diffs_slice.nil? || @diffs_slice.empty?
end
def browser_visible?

View File

@ -0,0 +1,9 @@
.rd-app-empty-state.gl-mt-5.gl-text-center
= render Pajamas::CardComponent.new(card_options: { class: "gl-bg-subtle" }) do |c|
- c.with_body do
= render Pajamas::EmptyStateComponent.new(svg_path: 'illustrations/empty-state/empty-commit-md.svg',
title: message) do |c|
- c.with_description do
-# TODO: Add secondary text
-# TODO: Add call to action button

View File

@ -0,0 +1,13 @@
# frozen_string_literal: true
module RapidDiffs
class EmptyStateComponent < ViewComponent::Base
def initialize(message: nil)
@message = message || _('There are no changes')
end
private
attr_reader :message
end
end

View File

@ -57,11 +57,19 @@ module StreamDiffs
def stream_diff_files(options)
return unless resource
diffs = resource.diffs_for_streaming(options)
if params.permit(:offset)[:offset].blank? && diffs.diff_files.empty?
empty_state_component = ::RapidDiffs::EmptyStateComponent.new
response.stream.write empty_state_component.render_in(view_context)
return
end
# NOTE: This is a temporary flag to test out the new diff_blobs
if !!ActiveModel::Type::Boolean.new.cast(params.permit(:diff_blobs)[:diff_blobs])
stream_diff_blobs(options)
else
resource.diffs_for_streaming(options).diff_files.each do |diff_file|
diffs.diff_files.each do |diff_file|
response.stream.write(render_diff_file(diff_file))
end
end

View File

@ -10,10 +10,6 @@ module Projects
push_frontend_feature_flag(:show_container_registry_tag_signatures, project)
end
before_action only: [:index, :show] do
push_frontend_feature_flag(:container_registry_protected_tags, project)
end
before_action :authorize_update_container_image!, only: [:destroy]
def index

View File

@ -8,7 +8,6 @@ module Projects
before_action :authorize_admin_project!
before_action :packages_and_registries_settings_enabled!
before_action :set_feature_flag_packages_protected_packages, only: :show
before_action :set_feature_flag_container_registry_protected_tags, only: :show
feature_category :package_registry
urgency :low
@ -36,10 +35,6 @@ module Projects
push_frontend_feature_flag(:packages_protected_packages_conan, project)
push_frontend_feature_flag(:packages_protected_packages_delete, project)
end
def set_feature_flag_container_registry_protected_tags
push_frontend_feature_flag(:container_registry_protected_tags, project)
end
end
end
end

View File

@ -7,8 +7,7 @@ module Mutations
class Create < ::Mutations::BaseMutation
graphql_name 'createContainerProtectionTagRule'
description 'Creates a protection rule to control which user roles ' \
'can modify container image tags matching a specified pattern. ' \
'Available only when feature flag `container_registry_protected_tags` is enabled.'
'can modify container image tags matching a specified pattern.'
include FindsProject
@ -53,10 +52,6 @@ module Mutations
def resolve(project_path:, **kwargs)
project = authorized_find!(project_path)
if Feature.disabled?(:container_registry_protected_tags, project)
raise_resource_not_available_error!("'container_registry_protected_tags' feature flag is disabled")
end
response =
::ContainerRegistry::Protection::CreateTagRuleService
.new(project: project, current_user: current_user, params: kwargs)

View File

@ -7,8 +7,7 @@ module Mutations
class Delete < ::Mutations::BaseMutation
graphql_name 'DeleteContainerProtectionTagRule'
description 'Deletes a protection rule that controls which user ' \
'roles can modify container image tags matching a specified pattern. ' \
'Available only when feature flag `container_registry_protected_tags` is enabled.'
'roles can modify container image tags matching a specified pattern.'
authorize :admin_container_image
@ -26,10 +25,6 @@ module Mutations
def resolve(id:, **_kwargs)
container_protection_tag_rule = authorized_find!(id:)
if Feature.disabled?(:container_registry_protected_tags, container_protection_tag_rule.project)
raise_resource_not_available_error!("'container_registry_protected_tags' feature flag is disabled")
end
response = ::ContainerRegistry::Protection::DeleteTagRuleService.new(container_protection_tag_rule,
current_user: current_user).execute

View File

@ -7,8 +7,7 @@ module Mutations
class Update < ::Mutations::BaseMutation
graphql_name 'UpdateContainerProtectionTagRule'
description 'Updates a protection rule that controls which user roles ' \
'can modify container image tags matching a specified pattern. ' \
'Available only when feature flag `container_registry_protected_tags` is enabled.'
'can modify container image tags matching a specified pattern.'
authorize :admin_container_image
@ -54,10 +53,6 @@ module Mutations
def resolve(id:, **kwargs)
container_protection_tag_rule = authorized_find!(id:)
if Feature.disabled?(:container_registry_protected_tags, container_protection_tag_rule.project)
raise_resource_not_available_error!("'container_registry_protected_tags' feature flag is disabled")
end
response = ::ContainerRegistry::Protection::UpdateTagRuleService.new(container_protection_tag_rule,
current_user: current_user, params: kwargs).execute

View File

@ -552,10 +552,10 @@ module Types
field :container_protection_tag_rules,
Types::ContainerRegistry::Protection::TagRuleType.connection_type,
method: :container_registry_protection_tag_rules,
null: true,
experiment: { milestone: '17.8' },
description: 'Container repository tag protection rules for the project. ' \
'Returns an empty array if the `container_registry_protected_tags` feature flag is disabled.'
description: 'Container repository tag protection rules for the project.'
field :container_repositories, Types::ContainerRegistry::ContainerRepositoryType.connection_type,
null: true,
@ -1020,12 +1020,6 @@ module Types
)
end
def container_protection_tag_rules
return [] unless Feature.enabled?(:container_registry_protected_tags, object)
object.container_registry_protection_tag_rules
end
private
def project

View File

@ -14,6 +14,8 @@ module Ci
self.table_name = 'p_ci_builds_metadata'
self.primary_key = 'id'
ignore_column :runtime_runner_features, remove_with: '18.1', remove_after: '2025-05-22'
query_constraints :id, :partition_id
partitionable scope: :build, partitioned: true
@ -32,7 +34,6 @@ module Ci
attribute :config_options, ::Gitlab::Database::Type::SymbolizedJsonb.new
attribute :config_variables, ::Gitlab::Database::Type::SymbolizedJsonb.new
attribute :runtime_runner_features, ::Gitlab::Database::Type::SymbolizedJsonb.new
chronic_duration_attr_reader :timeout_human_readable, :timeout

View File

@ -275,10 +275,6 @@ module Ci
end
end
def cancel_gracefully?
false
end
private
def dependencies

View File

@ -25,9 +25,7 @@ module Ci
expires_at: :compute_token_expiration,
format_with_prefix: :prefix_for_new_and_legacy_runner,
routable_token: {
if: ->(token_owner_record) {
token_owner_record.owner && Feature.enabled?(:routable_runner_token, token_owner_record.owner)
},
if: ->(token_owner_record) { token_owner_record.owner },
payload: {
o: ->(token_owner_record) { token_owner_record.owner.try(:organization_id) },
g: ->(token_owner_record) { token_owner_record.group_type? ? token_owner_record.sharding_key_id : nil },

View File

@ -26,9 +26,15 @@ module Enums
pub: 17
}.with_indifferent_access.freeze
UNKNOWN = :unknown
IN_USE = :in_use
NOT_FOUND = :not_found
REACHABILITY_TYPES = {
unknown: 0,
in_use: 1 # In case package imported and being used in code.
UNKNOWN => 0, # reachability analysis was not available for this component
# (this attribute can't be renamed as it would be a breaking change)
IN_USE => 1, # component is known to be in use
NOT_FOUND => 2 # component was not found to be in use
}.with_indifferent_access.freeze
DEPENDENCY_SCANNING_PURL_TYPES = %w[

View File

@ -310,8 +310,6 @@ class ContainerRepository < ApplicationRecord
end
def has_protected_tag_rules_for_delete?(user)
return false if Feature.disabled?(:container_registry_protected_tags, project)
return true if user.nil?
return false if user.can_admin_all_resources?

View File

@ -134,7 +134,6 @@ module Auth
def self.tag_deny_access_patterns(project, user, actions)
return if project.nil? || user.nil?
return unless Feature.enabled?(:container_registry_protected_tags, project)
rules = project.container_registry_protection_tag_rules
return unless rules.mutable.any?

View File

@ -22,8 +22,6 @@ module Projects
end
def filter_out_protected!(tags)
return if Feature.disabled?(:container_registry_protected_tags, project)
tag_rules = ::ContainerRegistry::Protection::TagRule.tag_name_patterns_for_project(project.id)
if current_user

View File

@ -24,10 +24,8 @@ module Projects
def execute
return success(deleted: []) if tag_names.empty?
if Feature.enabled?(:container_registry_protected_tags, project)
filter_out_protected!
return error(PROTECTED_TAGS_ERROR_MESSAGE, pass_back: { deleted: [] }) if tag_names.empty?
end
filter_out_protected!
return error(PROTECTED_TAGS_ERROR_MESSAGE, pass_back: { deleted: [] }) if tag_names.empty?
delete_tags
rescue TimeoutError, ::Faraday::Error => e

View File

@ -329,7 +329,6 @@ module Projects
end
def protected_by_tag_protection_rules?
return false if Feature.disabled?(:container_registry_protected_tags, project)
return false if current_user.can_admin_all_resources?
return false unless project.has_container_registry_protected_tag_rules?(

View File

@ -3,5 +3,5 @@
- add_page_specific_style 'page_bundles/merge_request_creation_rapid_diffs'
= render "page" do
- args = { diffs_slice: nil, reload_stream_url: @reload_stream_url, stream_url: @stream_url, show_whitespace: @show_whitespace_default, diff_view: diff_view, update_user_endpoint: expose_path(api_v4_user_preferences_path), metadata_endpoint: nil, diff_files_endpoint: @diff_files_endpoint, preload: false }
- args = { diffs_slice: nil, reload_stream_url: @reload_stream_url, stream_url: @stream_url, show_whitespace: @show_whitespace_default, diff_view: diff_view, update_user_endpoint: expose_path(api_v4_user_preferences_path), metadata_endpoint: nil, diff_files_endpoint: @diff_files_endpoint, lazy: true }
= render ::RapidDiffs::AppComponent.new(**args)

View File

@ -1,9 +0,0 @@
---
name: container_registry_protected_tags
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/499874
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171566
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/505455
milestone: '17.7'
group: group::container registry
type: beta
default_enabled: false

View File

@ -1,9 +0,0 @@
---
name: routable_runner_token
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/489847
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170634
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/505790
milestone: '17.10'
group: group::cells infrastructure
type: gitlab_com_derisk
default_enabled: false

View File

@ -4123,7 +4123,7 @@ Input type: `CreateContainerProtectionRepositoryRuleInput`
### `Mutation.createContainerProtectionTagRule`
Creates a protection rule to control which user roles can modify container image tags matching a specified pattern. Available only when feature flag `container_registry_protected_tags` is enabled.
Creates a protection rule to control which user roles can modify container image tags matching a specified pattern.
{{< details >}}
**Introduced** in GitLab 17.8.
@ -5044,7 +5044,7 @@ Input type: `DeleteContainerProtectionRepositoryRuleInput`
### `Mutation.deleteContainerProtectionTagRule`
Deletes a protection rule that controls which user roles can modify container image tags matching a specified pattern. Available only when feature flag `container_registry_protected_tags` is enabled.
Deletes a protection rule that controls which user roles can modify container image tags matching a specified pattern.
{{< details >}}
**Introduced** in GitLab 17.8.
@ -11316,7 +11316,7 @@ Input type: `UpdateContainerProtectionRepositoryRuleInput`
### `Mutation.updateContainerProtectionTagRule`
Updates a protection rule that controls which user roles can modify container image tags matching a specified pattern. Available only when feature flag `container_registry_protected_tags` is enabled.
Updates a protection rule that controls which user roles can modify container image tags matching a specified pattern.
{{< details >}}
**Introduced** in GitLab 17.8.
@ -34315,7 +34315,7 @@ Project-level settings for product analytics provider.
| <a id="projectcomponentusages"></a>`componentUsages` | [`CiCatalogResourceComponentUsageConnection`](#cicatalogresourcecomponentusageconnection) | Component(s) used by the project. (see [Connections](#connections)) |
| <a id="projectcontainerexpirationpolicy"></a>`containerExpirationPolicy` {{< icon name="warning-solid" >}} | [`ContainerExpirationPolicy`](#containerexpirationpolicy) | **Deprecated** in GitLab 17.5. Use `container_tags_expiration_policy`. |
| <a id="projectcontainerprotectionrepositoryrules"></a>`containerProtectionRepositoryRules` {{< icon name="warning-solid" >}} | [`ContainerProtectionRepositoryRuleConnection`](#containerprotectionrepositoryruleconnection) | **Introduced** in GitLab 16.10. **Status**: Experiment. Container protection rules for the project. |
| <a id="projectcontainerprotectiontagrules"></a>`containerProtectionTagRules` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleConnection`](#containerprotectiontagruleconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Container repository tag protection rules for the project. Returns an empty array if the `container_registry_protected_tags` feature flag is disabled. |
| <a id="projectcontainerprotectiontagrules"></a>`containerProtectionTagRules` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleConnection`](#containerprotectiontagruleconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Container repository tag protection rules for the project. |
| <a id="projectcontainerregistryenabled"></a>`containerRegistryEnabled` | [`Boolean`](#boolean) | Indicates if Container registry is enabled for the current user. |
| <a id="projectcontainerrepositoriescount"></a>`containerRepositoriesCount` | [`Int!`](#int) | Number of container repositories in the project. |
| <a id="projectcontainertagsexpirationpolicy"></a>`containerTagsExpirationPolicy` | [`ContainerTagsExpirationPolicy`](#containertagsexpirationpolicy) | Container tags expiration policy of the project. |
@ -39727,6 +39727,7 @@ Represents a vulnerability.
| <a id="vulnerabilitypresentondefaultbranch"></a>`presentOnDefaultBranch` | [`Boolean!`](#boolean) | Indicates whether the vulnerability is present on the default branch or not. |
| <a id="vulnerabilityprimaryidentifier"></a>`primaryIdentifier` | [`VulnerabilityIdentifier`](#vulnerabilityidentifier) | Primary identifier of the vulnerability. |
| <a id="vulnerabilityproject"></a>`project` | [`Project`](#project) | Project on which the vulnerability was found. |
| <a id="vulnerabilityreachability"></a>`reachability` {{< icon name="warning-solid" >}} | [`ReachabilityType!`](#reachabilitytype) | **Introduced** in GitLab 17.11. **Status**: Experiment. Reachability status of the vulnerability. |
| <a id="vulnerabilityreporttype"></a>`reportType` | [`VulnerabilityReportType`](#vulnerabilityreporttype) | Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING, CLUSTER_IMAGE_SCANNING, CONTAINER_SCANNING_FOR_REGISTRY, GENERIC). `Scan Type` in the UI. |
| <a id="vulnerabilityrepresentationinformation"></a>`representationInformation` {{< icon name="warning-solid" >}} | [`VulnerabilityRepresentationInformation`](#vulnerabilityrepresentationinformation) | **Introduced** in GitLab 17.7. **Status**: Experiment. Information about the representation of the vulnerability, such as resolved commit SHA. |
| <a id="vulnerabilityresolvedat"></a>`resolvedAt` | [`Time`](#time) | Timestamp of when the vulnerability state was changed to resolved. |
@ -44228,7 +44229,8 @@ Dependency reachability status.
| Value | Description |
| ----- | ----------- |
| <a id="reachabilitytypein_use"></a>`IN_USE` | Dependency is imported and in use. |
| <a id="reachabilitytypeunknown"></a>`UNKNOWN` | Dependency reachability status is unknown. |
| <a id="reachabilitytypenot_found"></a>`NOT_FOUND` | Dependency is not in use. |
| <a id="reachabilitytypeunknown"></a>`UNKNOWN` | Dependency reachability status is not available. |
### `RefType`

View File

@ -50,8 +50,6 @@ To set up GitLab Duo with Amazon Q, you must:
- With an HTTPS URL that can be accessed by Amazon Q (the SSL certificate must not be self-signed).
For more details about SSL, see [Configure SSL for a Linux package installation](https://docs.gitlab.com/omnibus/settings/ssl/).
- With an Ultimate subscription that is synchronized with GitLab. (No trial access.)
- GitLab Duo features [must be turned on](../gitlab_duo/turn_on_off.md#turn-on-beta-and-experimental-features).
(Experimental and beta features are off by default.)
### Create an IAM identity provider

View File

@ -16,6 +16,8 @@ title: Protected container tags
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/505455) as an [experiment](../../../policy/development_stages_support.md) in GitLab 17.9 [with a flag](../../../administration/feature_flags.md) named `container_registry_protected_tags`. Disabled by default.
- [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/505455) in GitLab 17.10.
- [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/524076) in GitLab 17.11. Feature flag `container_registry_protected_tags` removed.
{{< /history >}}

View File

@ -65,15 +65,14 @@ When you invite a group to a project, the following members get access to the pr
- Inherited group members.
- Members of other [groups that are shared](sharing_projects_groups.md#invite-a-group-to-a-group) with the invited group.
Each member's access is based on the:
Each member's access depends on:
- Role they're assigned in the group.
- Maximum role you choose when you invite the group.
- Their role in the group.
- The maximum role you choose when you invite the group.
If a group member has a role for the group with fewer permissions than the maximum project role,
the member keeps the permissions of their group role.
For example, if you add a member with the Guest role to a project with a maximum role of Maintainer,
the member has only the permissions of the Guest role for the project.
Invited members keep the lower of these two roles. For example, if a member has the Guest
role in their group, and you add their group to a project with a maximum role of Maintainer,
they keep the Guest role in the project.
In addition:
@ -133,7 +132,11 @@ To invite a group to a project:
1. Select **Manage > Members**.
1. Select **Invite a group**.
1. In the **Select a group to invite** list, select the group you want to invite.
1. From the **Select maximum role** list, select the highest [role](../../permissions.md) the invited group's members can have in the project. Group members with a higher role are limited to this role, while members with a lower role keep their existing role.
1. From the **Select maximum role** list, select the [role](../../permissions.md) the invited group's members can have in the project. Invited members receive the lower of:
- The maximum role you select
- Their existing role in the group
Invited group members cannot have a higher role in the project than they have in the group. For more information, see [member access and roles](#member-access-and-roles).
1. Optional. Select an **Access expiration date**.
From that date onward, the invited group can no longer access the project.
1. Select **Invite**.
@ -237,14 +240,14 @@ The following table provides an overview of the group members that get access to
### Member access and roles
Each member's access is based on the:
Each member's access depends on:
- Role they're assigned in the invited group.
- Maximum role you choose when you invite the group.
- Their role in the invited group.
- The maximum role you choose when you invite the group.
If a group member has a role for the invited group with fewer permissions than the maximum role for your group,
the member keeps the permissions of their invited group role.
The least access is granted between the access in the invited group and the access in the inviting group.
Invited members keep the lower of these two roles. For example, if a member has the Guest
role in their group, and you invite their group to another group with a maximum role of Maintainer,
they keep the Guest role in the new group.
After you invite a group to your group:
@ -297,6 +300,11 @@ To invite a group to your group:
1. Select **Manage > Members**.
1. Select **Invite a group**.
1. In the **Select a group to invite** list, select the group you want to invite.
1. From the **Select maximum role** list, select the [role](../../permissions.md) the invited group's members can have in the group. Invited members receive the lower of:
- The maximum role you select
- Their existing role in the invited group
Invited members cannot have a higher role than they have in the invited group. For more information, see [member access and roles](#member-access-and-roles-1).
1. Select the highest [role](../../permissions.md) or [custom role](../../custom_roles/_index.md#assign-a-custom-role-to-an-invited-group) for users in the group.
1. Optional. Select an **Access expiration date**.
From that date onward, the invited group can no longer access the group.

View File

@ -12,24 +12,42 @@ module ActiveContext
BATCH_SIZE = 100
class_methods do
def bulk_embeddings(refs)
unless respond_to?(:embedding_content)
raise IndexingError, "#{self} should implement :embedding_content method"
end
def apply_embeddings(
refs:,
target_field:,
content_field: :content,
content_method: nil,
remove_content_field: true
)
refs.each do |ref|
initialize_documents!(ref, content_method, content_field)
refs.each_slice(BATCH_SIZE) do |batch|
contents = batch.map { |ref| embedding_content(ref) }
embeddings = ActiveContext::Embeddings.generate_embeddings(contents)
ref.documents.each_slice(BATCH_SIZE) do |docs_batch|
contents = docs_batch.pluck(content_field)
embeddings = ActiveContext::Embeddings.generate_embeddings(contents)
batch.each_with_index do |ref, index|
ref.embedding = embeddings[index]
docs_batch.each_with_index do |doc, index|
doc[target_field] = embeddings[index]
doc.delete(content_field) if remove_content_field
end
end
end
refs
rescue StandardError => e
::ActiveContext::Logger.exception(e)
refs # we will generate each embedding on the fly if bulk fails
ErrorHandler.log_and_raise_error(e)
end
def initialize_documents!(ref, content_method, content_field)
return unless content_method && ref.respond_to?(content_method)
ref.documents << {} if ref.documents.empty?
ref.documents.each do |doc|
next if doc.key?(content_field)
doc[content_field] = ref.send(content_method) # rubocop: disable GitlabSecurity/PublicSend -- method is defined elsewhere
end
end
end
end

View File

@ -5,100 +5,347 @@ RSpec.describe ActiveContext::Preprocessors::Embeddings do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :bulk_embeddings do |refs|
bulk_embeddings(refs)
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding, content_method: :embedding_content)
end
attr_accessor :embedding
def embedding_content
'Some content'
end
end
end
let(:reference_1) { reference_class.new(collection_id: collection_id, routing: partition, args: object_id) }
let(:reference_2) { reference_class.new(collection_id: collection_id, routing: partition, args: object_id) }
let(:reference) { reference_class.new(collection_id: collection_id, routing: partition, args: object_id) }
let(:mock_adapter) { double }
let(:mock_collection) { double(name: collection_name, partition_for: partition) }
let(:mock_object) { double(id: object_id) }
let(:mock_relation) { double(find_by: mock_object) }
let(:mock_connection) { double(id: connection_id) }
let(:connection_id) { 3 }
let(:partition) { 2 }
let(:collection_id) { 1 }
let(:object_id) { 5 }
let(:collection_name) { 'mock_collection' }
let(:embeddings) { [[1, 2], [3, 4]] }
let(:embedding_content) { 'some text' }
subject(:preprocess_refs) { ActiveContext::Reference.preprocess_references([reference_1, reference_2]) }
let(:vectors) { [1.0, 2.0] }
let(:vertex_blank_error) { StandardError.new('The text content is empty.') }
before do
allow(ActiveContext).to receive(:adapter).and_return(mock_adapter)
allow(ActiveContext::CollectionCache).to receive(:fetch).and_return(mock_collection)
allow(ActiveContext::Logger).to receive(:exception).and_return(nil)
allow(reference_class).to receive(:model_klass).and_return(mock_relation)
end
allow(ActiveContext::Embeddings).to receive(:generate_embeddings) do |contents|
raise vertex_blank_error if contents.any?(&:nil?) # this is what vertex returns when the content is empty
context 'when the reference klass implements :embedding_content' do
before do
allow(reference_class).to receive(:embedding_content).and_return(embedding_content)
end
it 'generates embeddings in bulk and sets the embeddings for each reference' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.with([embedding_content, embedding_content])
.and_return(embeddings)
preprocess_refs
expect(reference_1.embedding).to eq(embeddings.first)
expect(reference_2.embedding).to eq(embeddings.last)
end
context 'when generating for a single reference' do
it 'generates embeddings in bulk and sets the embeddings for the reference' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.with([embedding_content])
.and_return([embeddings.first])
ActiveContext::Reference.preprocess_references([reference_1])
expect(reference_1.embedding).to eq(embeddings.first)
end
end
context 'when generate_embeddings returns an error' do
let(:error) { StandardError }
before do
allow(ActiveContext::Embeddings).to receive(:generate_embeddings).and_raise(error)
end
it 'logs and returns all references without embeddings' do
expect(::ActiveContext::Logger).to receive(:exception).with(error)
expect(preprocess_refs).to eq([reference_1, reference_2])
expect(reference_1.embedding).to be_nil
expect(reference_2.embedding).to be_nil
end
Array.new(contents.size, vectors)
end
end
context 'when the reference does not implement :embedding_content' do
it 'logs and does not raise an error' do
expect(ActiveContext::Embeddings).not_to receive(:generate_embeddings)
expect(::ActiveContext::Logger).to receive(:exception)
.with(ActiveContext::Preprocessors::Embeddings::IndexingError)
subject(:preprocessed_reference) { ActiveContext::Reference.preprocess_references([reference]).first }
expect { preprocess_refs }.not_to raise_error
describe '.apply_embeddings' do
context 'when :content_method is passed and defined' do
context 'when no documents are present' do
it 'creates a single document' do
expect { preprocessed_reference }.to change { reference.documents.count }.by(1)
end
it 'generates the content using the content_method' do
expect(reference).to receive(:embedding_content).once.and_call_original
preprocessed_reference
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Some content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when documents are present' do
context 'when :content_field is not passed (default is used)' do
context 'when documents have content populated' do
before do
reference.documents << { content: 'Other content' }
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'does not generate content using the content_method' do
expect(reference).not_to receive(:embedding_content)
preprocessed_reference
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Other content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when documents do not have content populated' do
before do
reference.documents << {}
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'generates the content using the content_method' do
expect(reference).to receive(:embedding_content).once.and_call_original
preprocessed_reference
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Some content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when :remove_content_field is set to false' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding,
content_method: :embedding_content, remove_content_field: false)
end
def embedding_content
'Some content'
end
end
end
before do
reference.documents << {}
end
it 'keeps the content field in the document' do
expect(preprocessed_reference.documents).to match_array([{ content: 'Some content', embedding: vectors }])
end
end
end
context 'when :content_field is passed' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding,
content_field: :other_field, content_method: :embedding_content)
end
def embedding_content
'Some content'
end
end
end
context 'when documents have the content field populated' do
before do
reference.documents << { other_field: 'Some other content' }
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'does not generate content using the content_method' do
expect(reference).not_to receive(:embedding_content)
preprocessed_reference
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Some other content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when documents do not have the content field populated' do
before do
reference.documents << {}
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'generates the content using the content_method' do
expect(reference).to receive(:embedding_content).once.and_call_original
preprocessed_reference
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Some content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when :remove_content_field is set to false' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding,
content_field: :other_field, content_method: :embedding_content, remove_content_field: false)
end
def embedding_content
'Some content'
end
end
end
before do
reference.documents << {}
end
it 'keeps the content field in the document' do
expected_array = [{ other_field: 'Some content', embedding: vectors }]
expect(preprocessed_reference.documents).to match_array(expected_array)
end
end
end
end
end
it 'returns references without embeddings' do
expect(preprocess_refs).to eq([reference_1, reference_2])
context 'when :content_method is passed but not defined' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
expect(reference_1.embedding).to be_nil
expect(reference_2.embedding).to be_nil
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding, content_method: :embedding_content)
end
end
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'does not generate embeddings' do
expect(ActiveContext::Embeddings).not_to receive(:generate_embeddings)
expect(preprocessed_reference.documents).to be_empty
end
end
context 'when :content_method is not passed' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding)
end
end
end
context 'when no documents are present' do
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'does not generate embeddings' do
expect(ActiveContext::Embeddings).not_to receive(:generate_embeddings)
expect(preprocessed_reference.documents).to be_empty
end
end
context 'when documents are present' do
context 'when :content_field is not passed (default is used)' do
context 'when documents have content populated' do
before do
reference.documents << { content: 'Other content' }
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Other content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when documents do not have content populated' do
before do
reference.documents << {}
end
it 'raises and logs an error because the embedding content cannot be blank' do
expect(ActiveContext::ErrorHandler).to receive(:log_and_raise_error).with(vertex_blank_error).once
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
end
end
context 'when :content_field is passed' do
let(:reference_class) do
Class.new(Test::References::MockWithDatabaseRecord) do
include ::ActiveContext::Preprocessors::Embeddings
add_preprocessor :embeddings do |refs|
apply_embeddings(refs: refs, target_field: :embedding, content_field: :other_field)
end
end
end
context 'when documents have the content field populated' do
before do
reference.documents << { other_field: 'Some other content' }
end
it 'does not create documents' do
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
it 'generates and sets embeddings for each document' do
expect(ActiveContext::Embeddings).to receive(:generate_embeddings)
.once.with(['Some other content']).and_return([vectors])
expect(preprocessed_reference.documents).to match_array([{ embedding: vectors }])
end
end
context 'when documents do not have the content field populated' do
before do
reference.documents << {}
end
it 'raises and logs an error because the embedding content cannot be blank' do
expect(ActiveContext::ErrorHandler).to receive(:log_and_raise_error).with(vertex_blank_error).once
expect { preprocessed_reference }.not_to change { reference.documents.count }
end
end
end
end
end
end
end

View File

@ -154,8 +154,6 @@ module ContainerRegistry
end
def protection_rule
return if Feature.disabled?(:container_registry_protected_tags, project)
result = nil
project.container_registry_protection_tag_rules.each do |rule|
next unless Gitlab::UntrustedRegexp.new(rule.tag_name_pattern).match?(name)

View File

@ -43,7 +43,7 @@ gem 'deprecation_toolkit', '~> 2.2.2', require: false
gem 'factory_bot', '~> 6.5.1'
group :development do
gem 'pry-byebug', '~> 3.10.1', platform: :mri
gem 'pry-byebug', '~> 3.11.0', platform: :mri
gem "ruby-debug-ide", "~> 0.7.5"
end

View File

@ -51,7 +51,7 @@ GEM
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
builder (3.3.0)
byebug (11.1.3)
byebug (12.0.0)
capybara (3.40.0)
addressable
matrix
@ -241,9 +241,9 @@ GEM
pry (0.14.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
pry-byebug (3.11.0)
byebug (~> 12.0)
pry (>= 0.13, < 0.16)
public_suffix (6.0.0)
racc (1.8.1)
rack (2.2.10)
@ -379,7 +379,7 @@ DEPENDENCIES
octokit (~> 9.2.0)
parallel (~> 1.26, >= 1.26.3)
parallel_tests (~> 5.1)
pry-byebug (~> 3.10.1)
pry-byebug (~> 3.11.0)
rainbow (~> 3.1.1)
rake (~> 13, >= 13.2.1)
rest-client (~> 2.1.0)

View File

@ -1,10 +1,10 @@
{
"./qa/specs/features/api/10_govern/group_access_token_spec.rb[1:1:1]": 17.920571572,
"./qa/specs/features/api/10_govern/group_access_token_spec.rb[1:1:2]": 18.956185002,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:1:1]": 18.001031609,
"./qa/specs/features/api/10_govern/group_access_token_spec.rb[1:1:1]": 21.345465199,
"./qa/specs/features/api/10_govern/group_access_token_spec.rb[1:1:2]": 12.707926754,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:1:1]": 18.701190741,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:1:2]": 17.00237347,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:1]": 25.368254826,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:2]": 18.001401646,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:1]": 24.374857411,
"./qa/specs/features/api/10_govern/project_access_token_spec.rb[1:1:2:2]": 19.393474089,
"./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:1]": 63.141736739,
"./qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb[1:1:2:1]": 29.326292872,
"./qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb[1:1:1]": 97.1455883,
@ -24,24 +24,24 @@
"./qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb[1:1:4:1]": 94.88226786,
"./qa/specs/features/api/1_manage/rate_limits_spec.rb[1:1:1]": 10.665014077,
"./qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb[1:1:1]": 16.628659891,
"./qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb[1:1:1]": 14.265449698,
"./qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb[1:1:1]": 18.294365108,
"./qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb[1:1:1]": 29.214217934,
"./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:1]": 19.426373418,
"./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:2]": 20.656460052,
"./qa/specs/features/api/3_create/merge_request/push_options_spec.rb[1:1:2]": 23.276730651,
"./qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb[1:1:1:1]": 0.824777225,
"./qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb[1:1:1]": 24.822583968,
"./qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb[1:1:1]": 11.897384646,
"./qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb[1:1:1]": 28.84643376,
"./qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb[1:1:1]": 20.338480021,
"./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:1]": 8.563084224,
"./qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb[1:1:2]": 7.987368427,
"./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:1]": 3.435232972,
"./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:2:1]": 2.709465587,
"./qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb[1:1:1]": 10.638450056,
"./qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb[1:1:1]": 15.958644309,
"./qa/specs/features/api/3_create/repository/storage_size_spec.rb[1:1:1]": 20.715469549,
"./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:1]": 5.735341199,
"./qa/specs/features/api/3_create/repository/files_spec.rb[1:1:2:1]": 2.286323051,
"./qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb[1:1:1]": 8.376276918,
"./qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb[1:1:1]": 17.936085874,
"./qa/specs/features/api/3_create/repository/storage_size_spec.rb[1:1:1]": 17.964734783,
"./qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb[1:1:1:1:1]": 10.059909767,
"./qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb[1:1:1]": 102.556843326,
"./qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb[1:1:1]": 14.697843577,
"./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:1]": 42.99177635,
"./qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb[1:1:1]": 15.080705977,
"./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:1]": 41.52362932,
"./qa/specs/features/api/4_verify/file_variable_spec.rb[1:1:2]": 48.622598382,
"./qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb[1:1:1]": 60.320143223,
"./qa/specs/features/api/8_monitor/metrics_spec.rb[1:1:2:1]": 2.055287014,
@ -50,31 +50,31 @@
"./qa/specs/features/api/9_data_stores/users_spec.rb[1:1:2]": 0.196238554,
"./qa/specs/features/api/9_data_stores/users_spec.rb[1:1:3]": 0.188122873,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:1]": 17.71396851,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:2]": 10.066351297,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:2]": 10.444301186,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:1:3]": 14.109959545,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:1]": 37.155739428,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:1]": 37.024564257,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:2]": 14.890362285,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:3]": 7.616021042,
"./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:1]": 0.938903601,
"./qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb[1:1:2:3]": 6.110136342,
"./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:1]": 2.36839947,
"./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:2]": 0.879913382,
"./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:3]": 0.76583502,
"./qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb[1:1:1]": 21.34472408,
"./qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb[1:1:1]": 46.852367083,
"./qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb[1:1:1]": 43.222224721,
"./qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb[1:1:1]": 12.347638626,
"./qa/specs/features/api/9_tenant_scale/users_spec.rb[1:1:3]": 0.838358023,
"./qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb[1:1:1]": 23.229270123,
"./qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb[1:1:1]": 43.313732839,
"./qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb[1:1:1]": 48.903998481,
"./qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb[1:1:1]": 12.913598453,
"./qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb[1:1:1]": 98.164227158,
"./qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb[1:1:1]": 4.037794483,
"./qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb[1:1:1]": 29.161059011,
"./qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb[1:1:1]": 15.180380601,
"./qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb[1:1:1]": 40.071175095,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:1:1]": 3.903931157,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:2:1:1:1]": 26.844276281,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:2:1:2:1]": 11.723279374,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:2:1:1:1]": 26.421971503,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:2:1:2:1]": 7.865090226,
"./qa/specs/features/browser_ui/10_govern/login/register_spec.rb[1:2:2:1]": 46.333517332,
"./qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb[1:1:1]": 23.952322241,
"./qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb[1:1:1]": 24.788841999,
"./qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb[1:1:1]": 32.700644966,
"./qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb[1:1:1:1]": 18.6961224,
"./qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb[1:1:1:2]": 9.620469555,
"./qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb[1:1:1:2]": 9.711631976,
"./qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb[1:1:1:3]": 14.198895221,
"./qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb[1:1:1:1]": 34.703431313,
"./qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb[1:1:1:1]": 11.914625589,
@ -86,98 +86,99 @@
"./qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb[1:1:2:1]": 32.64645162,
"./qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1]": 53.950460633,
"./qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb[1:1:1]": 21.000879009,
"./qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb[1:1:1]": 16.845372043,
"./qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb[1:1:1]": 27.509609279,
"./qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb[1:1:1]": 22.84829016,
"./qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb[1:1:1]": 20.736328257,
"./qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb[1:1:1]": 11.465310964,
"./qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb[1:1:1]": 24.926239844,
"./qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb[1:1:1]": 34.100777778,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:1]": 48.62264658,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:2]": 79.442339994,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:3:1]": 43.469962206,
"./qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb[1:1:1]": 15.199775266,
"./qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb[1:1:1]": 29.716510024,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:1]": 47.397118841,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:2]": 78.200787822,
"./qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb[1:1:3:1]": 41.285492667,
"./qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb[1:1:1]": 18.911894995,
"./qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb[1:1:1]": 42.772263877,
"./qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb[1:1:1]": 36.782677725,
"./qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb[1:1:1]": 17.047156919,
"./qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb[1:1:1]": 35.040591839,
"./qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb[1:1:1]": 15.410701863,
"./qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb[1:1:1]": 34.339875239,
"./qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb[1:1:1]": 18.182525862,
"./qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb[1:1:1]": 34.064684121,
"./qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb[1:1:1]": 17.50282746,
"./qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb[1:1:1]": 16.015064449,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:1:1]": 34.912999058,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:2:1]": 39.647876777,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:1:1]": 31.916104724,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:2:1]": 39.983705821,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:1:1]": 32.591000929,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:1:2:1]": 37.019897185,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:1:1]": 37.503006005,
"./qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb[1:1:2:2:1]": 37.643170568,
"./qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb[1:1:1]": 19.615730556,
"./qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb[1:1:1]": 27.326013418,
"./qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb[1:1:1]": 26.584123497,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:1]": 13.052112796,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:2]": 17.928132856,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:3]": 8.086414349,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:4]": 10.795659231,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:5]": 10.580172663,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:3]": 8.284350333,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:4]": 11.798456095,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb[1:1:5]": 9.958093143,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:1]": 11.153613539,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:2]": 12.297775289,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb[1:1:3]": 13.230359812,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb[1:1:1]": 17.160290353,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb[1:1:1]": 34.591485112,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:1:1]": 21.695018697,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:1:1]": 15.960595122,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb[1:1:2:1]": 36.405343162,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:1]": 10.610470287,
"./qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb[1:1:2]": 32.33736385,
"./qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb[1:1:1]": 30.310774167,
"./qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb[1:1:1]": 34.564315241,
"./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:1]": 53.069541242,
"./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:2]": 61.752423041,
"./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb[1:1:1]": 65.474139866,
"./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb[1:1:1]": 35.543461754,
"./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:1]": 46.961625178,
"./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:2]": 31.439722151,
"./qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb[1:1:2]": 66.960784433,
"./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb[1:1:1]": 89.104696324,
"./qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb[1:1:1]": 42.588401814,
"./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:1]": 34.325248868,
"./qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb[1:1:2]": 35.56363491,
"./qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb[1:1:1]": 56.429494658,
"./qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb[1:1:1]": 70.466221972,
"./qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb[1:1:1]": 34.210289421,
"./qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb[1:1:1]": 42.457176102,
"./qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb[1:1:1]": 68.9478432,
"./qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb[1:1:1]": 59.308457214,
"./qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb[1:1:1]": 31.592504076,
"./qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb[1:1:1]": 101.022114139,
"./qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb[1:1:1]": 68.434694263,
"./qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb[1:1:1]": 66.314881342,
"./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:1]": 18.658028765,
"./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:2]": 15.485752092,
"./qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb[1:1:1]": 18.334742894,
"./qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb[1:1:1]": 20.532363673,
"./qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb[1:1:1:1]": 11.467374256,
"./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:1]": 12.710053486,
"./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:2]": 12.633983931,
"./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:1:1:1]": 17.640308812,
"./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:2:1:1]": 18.925878073,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:1:1]": 11.549067876,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:2:1]": 12.817566711,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:1:1]": 27.593926253,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:2:1]": 26.139931931,
"./qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb[1:1:2]": 16.221731428,
"./qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb[1:1:1]": 23.524863724,
"./qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb[1:1:1]": 20.358336218,
"./qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb[1:1:1:1]": 12.429301084,
"./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:1]": 12.734575654,
"./qa/specs/features/browser_ui/3_create/repository/clone_spec.rb[1:1:2]": 12.315591769,
"./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:1:1:1]": 21.264443104,
"./qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb[1:1:2:1:1]": 19.129848243,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:1:1]": 13.737543657,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:1:2:1]": 13.278224063,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:1:1]": 27.082219096,
"./qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb[1:1:2:2:1]": 29.085105116,
"./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb[1:1:1]": 15.83357532,
"./qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb[1:1:1]": 22.066593143,
"./qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb[1:1:1]": 24.155087572,
"./qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb[1:1:1]": 58.147190295,
"./qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb[1:1:1]": 23.538800037,
"./qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb[1:1:1]": 70.251405249,
"./qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb[1:1:1]": 67.926226809,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:1]": 7.496294294,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:1]": 7.406617922,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb[1:1:2]": 40.393519982,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:1]": 23.864622348,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:1]": 32.348906797,
"./qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb[1:1:2]": 8.55142058,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:1]": 12.837279459,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:2]": 39.157900239,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:1]": 24.297234786,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:2]": 26.033257132,
"./qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb[1:1:1:1]": 9.495416511,
"./qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb[1:1:1]": 25.214420054,
"./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb[1:1:1]": 27.065253562,
"./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb[1:1:1]": 28.748436261,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:1]": 13.932574117,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb[1:1:2]": 38.204451469,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:1]": 26.537209835,
"./qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb[1:1:2]": 25.129344321,
"./qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb[1:1:1:1]": 10.3939351,
"./qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb[1:1:1]": 22.287921808,
"./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb[1:1:1]": 39.047353577,
"./qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb[1:1:1]": 32.928761259,
"./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:1]": 25.798134337,
"./qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb[1:1:2]": 16.380829623,
"./qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb[1:1:1:1]": 19.920925987,
"./qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb[1:1:2:1]": 20.481773874,
"./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:1:1]": 14.157797793,
"./qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb[1:1:2:1]": 20.101943536,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:1]": 27.000612557,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:2]": 28.65633381,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:1]": 20.518892997,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:2]": 32.188237706,
"./qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb[1:1:1:1]": 11.970247005,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:1]": 19.272834917,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb[1:1:2]": 28.907688524,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:1]": 22.513407315,
"./qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb[1:1:2]": 31.543937573,
"./qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb[1:1:1:1]": 13.177480432,
"./qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb[1:1:2:1]": 13.765765511,
"./qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb[1:1:1]": 15.862628298,
"./qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb[1:1:1]": 14.482592168,
"./qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb[1:1:1]": 11.621989822,
"./qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_spec.rb[1:1:1]": 18.98362614,
"./qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb[1:1:1]": 17.95735824,
@ -190,34 +191,34 @@
"./qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb[1:1:3:1]": 23.502487409,
"./qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb[1:1:4:1]": 16.356247204,
"./qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb[1:1:1]": 20.716304489,
"./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:1:1]": 13.711134327,
"./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:2:1]": 17.986852214,
"./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:1:1]": 17.277890316,
"./qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb[1:1:2:1]": 19.630952434,
"./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:1:1]": 27.487525526,
"./qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb[1:1:2:1]": 38.770281789,
"./qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb[1:1:1]": 15.933774981,
"./qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb[1:1:1]": 15.974842294,
"./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:1]": 33.360754412,
"./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:2]": 73.5647653,
"./qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb[1:1:3]": 59.359674502,
"./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:1:1]": 17.333706808,
"./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:1:1:1]": 24.960959565,
"./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:1:1]": 16.135740451,
"./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:1:1:1]": 28.1419377,
"./qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb[1:1:2:2:1:1]": 81.337899127,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:1:1]": 38.4856397,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:2:1]": 48.8558115,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:1:1]": 40.043215983,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb[1:1:1:2:2:1]": 39.616299787,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:1]": 67.142408445,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb[1:1:2]": 59.020971813,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:1]": 45.224887027,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:2]": 63.577446104,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb[1:1:1]": 33.243461008,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:1]": 51.636700065,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb[1:1:2]": 66.252585357,
"./qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb[1:1:1]": 40.671473718,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb[1:1:1:1]": 49.811767036,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:1]": 52.762100359,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:1:1:2]": 49.640537901,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:1]": 46.992787039,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:2]": 42.518741046,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:1]": 30.960295937,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:2]": 32.680816395,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:1:1]": 58.157986963,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:2:1]": 63.561307649,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:3:1]": 131.779983357,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:2:1:2]": 42.789046708,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:1]": 30.96560484,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb[1:1:3:1:2]": 41.319559587,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:1:1]": 58.677097144,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:2:1]": 118.716643024,
"./qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb[1:1:3:1]": 110.342069246,
"./qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb[1:1:1:1]": 85.998420066,
"./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:1]": 56.250333097,
"./qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb[1:1:2]": 87.356929054,
@ -232,60 +233,60 @@
"./qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb[1:1:1]": 99.015735467,
"./qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb[1:1:1]": 74.022677016,
"./qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb[1:1:1]": 79.436578332,
"./qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb[1:1:1]": 18.75679378,
"./qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb[1:1:1]": 18.329611039,
"./qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb[1:1:1]": 18.733546629,
"./qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb[1:1:1]": 31.366730619,
"./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb[1:1:1]": 23.770899178,
"./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb[1:1:1]": 8.062104486,
"./qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb[1:1:1]": 17.153327394,
"./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb[1:1:1]": 25.739514062,
"./qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb[1:1:1]": 7.976540396,
"./qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb[1:1:1]": 16.022177597,
"./qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb[1:1:1]": 54.539150395,
"./qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb[1:1:1]": 44.0594222,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:1:1]": 105.102796549,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:2:1]": 106.083827096,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:3:1]": 136.658100035,
"./qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb[1:1:1]": 47.037460436,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:1:1]": 116.487234572,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:2:1]": 204.437167599,
"./qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb[1:1:1:3:1]": 116.887726194,
"./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:1:1]": 65.915121952,
"./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:2:1]": 55.737526348,
"./qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb[1:1:3:1]": 53.517437091,
"./qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb[1:1:1]": 53.397001906,
"./qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb[1:1:1]": 85.718160991,
"./qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb[1:1:1]": 49.331400227,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:1:1]": 76.097567522,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:2:1]": 76.460354457,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:3:1]": 82.080673358,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:1:1]": 87.537059674,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:2:1]": 80.846117403,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:3:1]": 87.873398988,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:1:1]": 95.625525133,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:2:1]": 78.566271443,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:1:1]": 95.485283631,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:2:1]": 108.067241276,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:3:1]": 96.118953125,
"./qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb[1:1:1]": 56.098151751,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:1:1]": 76.84759793,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:2:1]": 86.370705844,
"./qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb[1:1:3:1]": 93.027172778,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:1:1]": 86.559936751,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:2:1]": 89.591503047,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:1:3:1]": 91.397157686,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:1:1]": 94.875234666,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb[1:1:2:2:1]": 90.787194402,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:1:1]": 87.661303255,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:2:1]": 96.861542307,
"./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb[1:1:3:1]": 102.384397815,
"./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:1:1]": 74.445114347,
"./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:2:1]": 100.465454368,
"./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb[1:1:3:1]": 91.607946373,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:1:1]": 93.838165059,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:2:1]": 109.946687784,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:3:1]": 92.066155658,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:1:1]": 102.040478469,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:2:1]": 69.799158519,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:3:1]": 106.853337086,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:1:1]": 119.349662826,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:2:1]": 84.210453322,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb[1:1:3:1]": 84.098717685,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:1:1]": 106.36357559,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:2:1]": 95.729674924,
"./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb[1:1:3:1]": 119.525824827,
"./qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb[1:1:1:1]": 89.732331566,
"./qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb[1:1:1]": 26.363516181,
"./qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb[1:1:1]": 27.670297299,
"./qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb[1:1:1]": 75.617985451,
"./qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb[1:1:2]": 34.525620868,
"./qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb[1:1:2]": 40.175592018,
"./qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb[1:1:3]": 32.445075237,
"./qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb[1:1:1]": 10.243383898,
"./qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb[1:1:1:1:1]": 23.573791191,
"./qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb[1:1:2:1:1]": 22.288380615,
"./qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb[1:1:1]": 7.199167311,
"./qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb[1:1:1:1:1]": 26.400514953,
"./qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb[1:1:2:1:1]": 27.503268213,
"./qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb[1:1:1:1:1]": 34.060239856,
"./qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb[1:1:2:1:1]": 34.670253631,
"./qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb[1:1:1:1:1]": 24.255701649,
"./qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb[1:1:2:1:1]": 26.22306787,
"./qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb[1:1:1:1:1]": 26.213749003,
"./qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb[1:1:2:1:1]": 25.824392193,
"./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:1:1:1]": 13.661216474,
"./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:1:2:1:1]": 16.072659788,
"./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:1:1:1]": 14.736025201,
"./qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb[1:1:2:2:1:1]": 14.031824623,
"./qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb[1:1:1:1:1]": 17.561720992,
"./qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb[1:1:1:1:1]": 16.594793624,
"./qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb[1:1:1]": 22.367142461,
"./qa/specs/features/browser_ui/9_data_stores/project/create_project_spec.rb[1:1:1:1:1]": 15.739382483,
"./qa/specs/features/browser_ui/9_data_stores/project/create_project_spec.rb[1:1:2:1:1]": 12.0713692,
@ -293,51 +294,51 @@
"./qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb[1:1:1]": 6.193219278,
"./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:1]": 19.317512446,
"./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:1:1]": 20.616129911,
"./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:2:1]": 19.712787294,
"./qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb[1:1:2:2:1]": 18.577463064,
"./qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb[1:1:1]": 28.280268834,
"./qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb[1:1:1]": 32.827498197,
"./qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb[1:1:1]": 33.583268558,
"./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb[1:1:1]": 24.382265573,
"./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:1:1:1]": 29.763421573,
"./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:2:1:1]": 28.898491326,
"./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:1:1:1]": 38.133692136,
"./qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb[1:1:2:1:1]": 33.153121981,
"./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:1:1:1]": 5.46215626,
"./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:2:1:1]": 5.551016075,
"./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:1:1:1]": 19.237224728,
"./qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb[1:1:2:1:1]": 5.29527991,
"./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:1:1:1]": 19.112133407,
"./qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb[1:1:2:1:1]": 30.457251059,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:1:1]": 47.123682642,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:2:1]": 27.780354594,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:1:1]": 49.477514824,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:2:1]": 30.578881355,
"./qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb[1:1:1:1]": 28.9797109,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:1:1]": 45.613024261,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:1:2:1]": 28.249381579,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:1:1]": 49.834549355,
"./qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb[1:1:2:2:1]": 31.544833992,
"./qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb[1:1:1:1]": 25.961302636,
"./qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb[1:1:1]": 31.198744317,
"./qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb[1:1:1:1]": 20.927947324,
"./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:1:1]": 12.475978437,
"./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:2:1]": 11.515509451,
"./qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb[1:1:1:1]": 33.439496096,
"./qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb[1:1:1:1]": 20.852436775,
"./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:1:1]": 13.956032291,
"./qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb[1:1:2:1]": 12.792232806,
"./qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb[1:1:1:1]": 36.785539956,
"./qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb[1:1:1:1]": 9.780793832,
"./qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb[1:1:4:1]": 22.47995808,
"./qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb[1:1:1]": 43.071718409,
"./qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb[1:1:2]": 9.452870523,
"./qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb[1:1:3]": 10.626188102,
"./qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb[1:1:2]": 14.553011172,
"./qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb[1:1:3]": 11.166955167,
"./qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb[1:1:1:1]": 124.737539272,
"./qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb[1:1:1]": 12.552667041,
"./qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb[1:1:1:1]": 80.09937666,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:1]": 12.212498422,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:2]": 23.180402926,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:3]": 16.858484642,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:4]": 15.168860025,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:1:1]": 1.517233178,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:2:1:1]": 1.589505678,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:2]": 29.241760096,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:3]": 18.183525571,
"./qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb[1:1:4]": 8.932639998,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:1:1]": 1.393046156,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:1:2:1:1]": 1.949051566,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:2:1:1:1:1:1]": 1.345128215,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:1:2:1:1:1:2:1:1]": 1.184973837,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:1:1:1]": 8.333374609,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:1:1:1]": 9.72175634,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:1:1:1:1:1]": 1.049440656,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:1:1:2:1]": 0.083569422,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:1:2:1]": 2.484552767,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:2:2:1]": 2.454098833,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:3:1:1]": 9.635212594,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:3:1:1]": 8.998454656,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:2:3:2:1:1:1:1]": 1.622914085,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:1]": 4.096368738,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:2]": 4.305014772,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:1]": 4.267197849,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:1:2]": 3.359710922,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:2:1:1:1:1]": 2.493502543,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:2:1:1:1:2]": 1.134464741,
"./qa/specs/features/ee/api/3_create/code_suggestions_spec.rb[1:1:3:2:1:1:1:3:1]": 1.186078777,
@ -352,71 +353,72 @@
"./qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb[1:1:1]": 59.772997146,
"./qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/notes_index/note_index_spec.rb[1:1:1]": 60.872727745,
"./qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/user_index/user_index_spec.rb[1:1:1]": 54.947357205,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:1]": 46.395221921,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:2]": 39.044727966,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:3]": 15.875388638,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:1]": 44.647891986,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:2]": 38.804709589,
"./qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb[1:1:3]": 14.644363937,
"./qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb[1:1:1]": 84.366078982,
"./qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb[1:1:1]": 79.342023264,
"./qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb[1:1:1]": 81.818780947,
"./qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb[1:1:1]": 23.056943382,
"./qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb[1:1:1]": 132.942144291,
"./qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb[1:1:1]": 160.927666992,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb[1:1:1:1]": 21.27797017,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb[1:1:2:1:1]": 20.766032324,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb[1:1:2:2:1]": 17.250961366,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb[1:1:2:3:1]": 11.895428137,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:1:1:1]": 23.680010843,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:2:1:1]": 9.18252546,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:3:1:1]": 9.431459632,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:4:1:1]": 25.280606596,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:5:1:1]": 18.580966061,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:1:1:1]": 27.527857908,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:2:1:1]": 11.26936086,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:3:1:1]": 12.713846555,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:4:1:1]": 25.892509362,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb[1:1:5:1:1]": 24.179720207,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:1:1:1]": 32.519769991,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:1:1:2]": 13.453116486,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:1:1:3]": 14.17613157,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:2:1:1]": 34.802667792,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:2:1:2]": 16.322704877,
"./qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb[1:1:2:1:3]": 16.421019843,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:1:1]": 12.328516472,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:2:1]": 9.48338219,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:3:1]": 46.39894979,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:2:1:1]": 16.086550546,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:2:2:1]": 10.477593039,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:1:1]": 15.131378621,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:2:1]": 10.121508177,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:1:3:1]": 46.187106026,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:2:1:1]": 16.785913741,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:2:2:1]": 11.178951079,
"./qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb[1:1:2:3:1]": 23.036430369,
"./qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb[1:1:1]": 129.82081259,
"./qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb[1:1:2]": 133.596101599,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:1:1:1]": 13.326209464,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:2:1:1]": 11.894827063,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:3:1:1]": 20.467447965,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:4:1:1]": 15.958527157,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:1:1:1]": 14.407692856,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:2:1:1]": 12.22563472,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:3:1:1]": 18.331904688,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:4:1:1]": 16.070508505,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:5:1:1]": 20.235684752,
"./qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb[1:1:6:1:1]": 19.257553635,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:1:1:1]": 13.852142549,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:2:1:1]": 17.2083208,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:3:1:1]": 15.635244946,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:4:1:1]": 14.700379323,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:5:1:1]": 46.886432126,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:6:1:1]": 20.161470609,
"./qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb[1:1:1]": 26.672149035,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:1:1:1]": 14.109770838,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:2:1:1]": 18.108765144,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:3:1:1]": 18.200431215,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:4:1:1]": 14.361884125,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:5:1:1]": 67.559110024,
"./qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb[1:1:6:1:1]": 19.941761021,
"./qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb[1:1:1]": 28.273160342,
"./qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb[1:1:2]": 39.783308092,
"./qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb[1:1:1]": 75.052529905,
"./qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb[1:1:2]": 102.844293319,
"./qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb[1:1:1]": 59.391789939,
"./qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb[1:1:2]": 46.46733355,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:1]": 19.895655226,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:2]": 21.9087035,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:3]": 41.6250746,
"./qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb[1:1:2]": 85.371350094,
"./qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb[1:1:1]": 58.766022069,
"./qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb[1:1:2]": 69.0555916,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:1]": 24.448576983,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:2]": 24.111295586,
"./qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb[1:1:3]": 48.616572419,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:1]": 13.506885998,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:2]": 102.828340112,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:2]": 129.78890648,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:3]": 165.865678489,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:4]": 98.76723826,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:4]": 103.219895521,
"./qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb[1:1:6:1]": 28.123292853,
"./qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb[1:1:1]": 15.440628401,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb[1:1:1]": 33.566097652,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:1]": 78.605091101,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:1]": 68.112267109,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:2]": 103.243970315,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:3]": 85.089569766,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:4]": 80.699734289,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:3]": 97.225519665,
"./qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb[1:1:4]": 94.584278197,
"./qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb[1:1:1]": 11.041504734,
"./qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb[1:2:1]": 33.208792789,
"./qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb[1:1:1]": 4.240581244,
"./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb[1:1:1:1:1]": 16.614093465,
"./qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb[1:1:1]": 5.837416834,
"./qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb[1:1:1:1:1]": 16.035744041,
"./qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb[1:1:1:1]": 69.400627467,
"./qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb[1:1:1:1]": 147.811122367,
"./qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb[1:1:1]": 43.795329208,
@ -425,93 +427,93 @@
"./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:1]": 26.448417579,
"./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:2]": 12.690652683,
"./qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb[1:1:3]": 16.213254435,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb[1:1:1]": 57.331201741,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb[1:1:1]": 40.540130503,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb[1:1:1]": 62.991913454,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb[1:1:1]": 46.321280138,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:1:1:1]": 21.302544543,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:2:1:1]": 15.303268403,
"./qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb[1:1:1]": 17.259039861,
"./qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb[1:1:1:2:1:1]": 13.475621279,
"./qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb[1:1:1]": 10.630950953,
"./qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb[1:1:1]": 14.780715549,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:1]": 48.262388094,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:1]": 50.801045515,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:2]": 51.656552852,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:1]": 11.250804616,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:2]": 9.388384016,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:3]": 52.979638584,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:2]": 16.682832892,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:1]": 11.672167492,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:2]": 12.043313408,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:1:3]": 52.835418268,
"./qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb[1:1:3:2]": 17.5455551,
"./qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb[1:1:1]": 42.635646256,
"./qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb[1:1:1]": 7.56588128,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:1:1]": 11.72793207,
"./qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb[1:1:1]": 8.14161055,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:1:1]": 12.339495023,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb[1:1:2:1]": 18.421656117,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb[1:1:1]": 7.620638813,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb[1:1:1]": 8.677543947,
"./qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb[1:1:1]": 27.787672921,
"./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:1:1:1]": 7.666360437,
"./qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb[1:2:1:1]": 9.716955339,
"./qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb[1:1:1]": 29.209360285,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb[1:1:1]": 9.400996272,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb[1:1:1]": 25.128804237,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb[1:1:1]": 19.776874427,
"./qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb[1:1:1]": 34.495841737,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb[1:1:1]": 15.046654925,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb[1:1:1]": 27.721628207,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb[1:1:1]": 15.138984071,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb[1:1:1]": 21.26430284,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:1:1]": 11.872660703,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:1:1]": 11.319352149,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:2:1]": 21.39627919,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:3:1]": 14.429128455,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb[1:1:3:1]": 13.222319783,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb[1:1:1]": 24.033409427,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb[1:1:1]": 11.753620813,
"./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:1:1:1]": 7.109162886,
"./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:2:1:1]": 11.959252195,
"./qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb[1:1:1]": 32.243326304,
"./qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb[1:1:1]": 10.830980543,
"./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:1:1:1]": 6.981695485,
"./qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb[1:2:1:1]": 8.410196013,
"./qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb[1:1:1]": 31.013050131,
"./qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb[1:1:1]": 22.619466189,
"./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:1:1]": 30.310240963,
"./qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb[1:1:2:1]": 13.056069127,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb[1:1:1]": 39.321465699,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:1]": 25.328647377,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:2]": 13.726066482,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb[1:1:1]": 39.425461787,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:1]": 26.173670294,
"./qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb[1:1:2]": 16.428505339,
"./qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb[1:1:1]": 17.620232628,
"./qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb[1:1:1]": 82.649659221,
"./qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb[1:1:1]": 30.41902287,
"./qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb[1:1:1]": 30.978762475,
"./qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb[1:1:1]": 26.071237444,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:1]": 40.2384642,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:2]": 32.440227506,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:3]": 26.663452314,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:4]": 23.579491276,
"./qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb[1:1:1]": 26.496152789,
"./qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb[1:1:1]": 88.724211741,
"./qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb[1:1:1]": 34.577951658,
"./qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb[1:1:1]": 46.287451598,
"./qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb[1:1:1]": 31.228351734,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:1]": 38.620306344,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:2]": 36.508033878,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:3]": 30.289241667,
"./qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb[1:1:4]": 27.695485532,
"./qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb[1:1:1]": 27.045346295,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:1:1:1]": 58.925673372,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb[1:1:1:2:1:1]": 79.580958061,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:1:1:1]": 52.955496367,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:2:1:1]": 48.812391031,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:3:1:1]": 60.636449724,
"./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:1:1]": 22.806413811,
"./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:2:1]": 14.700349046,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:1:1:1]": 57.287497632,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:2:1:1]": 53.270939457,
"./qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb[1:1:1:3:1:1]": 61.93425693,
"./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:1:1]": 28.445154424,
"./qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb[1:1:2:1]": 18.70735459,
"./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:1:1]": 34.137509298,
"./qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb[1:1:3:1]": 73.18440745,
"./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb[1:1:1]": 27.656670271,
"./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb[1:1:1]": 54.53304389,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:1]": 18.975898219,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:2]": 37.196910427,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:3]": 28.656532192,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:4]": 24.923173536,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:5]": 41.747028147,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:6]": 24.002529549,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:7]": 23.248544836,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:8]": 29.600855633,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:9]": 32.603006222,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:2:1]": 28.605761912,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:1:1]": 31.963961731,
"./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb[1:1:1]": 30.008903812,
"./qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb[1:1:1]": 55.620797437,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:1]": 22.592609164,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:2]": 39.13996438,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:3]": 30.232571169,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:4]": 24.753397418,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:5]": 54.897526179,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:6]": 26.294296276,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:7]": 25.327854625,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:8]": 28.741769146,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:1:9]": 30.991166689,
"./qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb[1:1:2:1]": 36.173668463,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:1:1]": 34.65967699,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:1:2:1]": 78.186049078,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:1:1]": 34.672997667,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:2:1]": 46.029796569,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:1:1]": 35.012390659,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:2:2:1]": 54.013435493,
"./qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb[1:1:3:1:1]": 46.397500079,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:1:1:1]": 31.989577159,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:1:2:1]": 33.961688255,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:1:1:1]": 40.312923394,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:1:2:1]": 37.109904073,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:1:1:1:1:1]": 22.38909095,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:1:1:2:1:1]": 23.829265979,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:1:2:1:1]": 21.958439845,
"./qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb[1:1:2:2:1:1]": 22.266473536,
"./qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb[1:1:1]": 82.372355921,
"./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:1]": 57.344202791,
"./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:2]": 37.723551424,
"./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:1]": 59.837237486,
"./qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb[1:1:2]": 45.993649498,
"./qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb[1:1:1]": 87.932170592,
"./qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb[1:1:1:1]": 61.29443203,
"./qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb[1:1:1]": 10.669843875,
"./qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb[1:1:1]": 14.396202459,
"./qa/specs/features/ee/browser_ui/9_tenant_scale/elasticsearch/elasticsearch_reindexing_spec.rb[1:1:1]": 83.263844739,
"./qa/specs/features/ee/browser_ui/9_tenant_scale/elasticsearch/elasticsearch_reindexing_spec.rb[1:1:2]": 76.587191731,
"./qa/specs/features/ee/browser_ui/9_tenant_scale/group/share_group_with_group_spec.rb[1:1:1]": 29.700954649

View File

@ -1,6 +1,6 @@
{
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 36.876756574,
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 78.373061551,
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 34.053391953,
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 79.471895711,
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 92.468029611,
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 97.1455883,
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 108.734601332,
@ -13,39 +13,39 @@
"qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb": 94.88226786,
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 10.665014077,
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 16.628659891,
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 14.265449698,
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 18.294365108,
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 29.214217934,
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 40.08283347,
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 42.703104069000005,
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 0.824777225,
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 24.822583968,
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 11.897384646,
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 28.84643376,
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 20.338480021,
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 16.550452651,
"qa/specs/features/api/3_create/repository/files_spec.rb": 6.144698559,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 10.638450056,
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 15.958644309,
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 20.715469549,
"qa/specs/features/api/3_create/repository/files_spec.rb": 8.02166425,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 8.376276918,
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 17.936085874,
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 17.964734783,
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 10.059909767,
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 102.556843326,
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 14.697843577,
"qa/specs/features/api/4_verify/file_variable_spec.rb": 91.614374732,
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 15.080705977,
"qa/specs/features/api/4_verify/file_variable_spec.rb": 90.146227702,
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 60.320143223,
"qa/specs/features/api/8_monitor/metrics_spec.rb": 3.380111308,
"qa/specs/features/api/9_data_stores/users_spec.rb": 0.725984172,
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 101.55240210699999,
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 2.584652003,
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 21.34472408,
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 46.852367083,
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 43.222224721,
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 12.347638626,
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 100.29329212500001,
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 4.086670874999999,
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 23.229270123,
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 43.313732839,
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 48.903998481,
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 12.913598453,
"qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb": 98.164227158,
"qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb": 4.037794483,
"qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb": 29.161059011,
"qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb": 15.180380601,
"qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb": 40.071175095,
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 88.805004144,
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 23.952322241,
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 84.524510218,
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 24.788841999,
"qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb": 32.700644966,
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 42.515487176,
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 42.606649597,
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 34.703431313,
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 11.914625589,
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 12.014757008,
@ -54,67 +54,68 @@
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 73.852005486,
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 53.950460633,
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 21.000879009,
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 16.845372043,
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 27.509609279,
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 22.84829016,
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 20.736328257,
"qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb": 11.465310964,
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 24.926239844,
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 34.100777778,
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 171.53494877999998,
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 15.199775266,
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 29.716510024,
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 166.88339933,
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 18.911894995,
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 42.772263877,
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 36.782677725,
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 17.047156919,
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 35.040591839,
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 15.410701863,
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 34.339875239,
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 18.182525862,
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 34.064684121,
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 17.50282746,
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 16.015064449,
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 146.46068638,
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 144.757074687,
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 19.615730556,
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 27.326013418,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 60.442491895,
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 26.584123497,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 61.021145223,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 36.681748639999995,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 17.160290353,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 34.591485112,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 58.100361859,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 52.365938284,
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 42.947834137,
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 30.310774167,
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 114.821964283,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 65.474139866,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 35.543461754,
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 78.401347329,
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 34.564315241,
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 120.030325675,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 89.104696324,
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 42.588401814,
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 69.88888377800001,
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 56.429494658,
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 70.466221972,
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 34.210289421,
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 42.457176102,
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 68.9478432,
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 59.308457214,
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 31.592504076,
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 101.022114139,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 68.434694263,
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 66.314881342,
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 34.143780857,
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 18.334742894,
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 20.532363673,
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 11.467374256,
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 25.344037417,
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 36.566186885,
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 78.100492771,
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 34.879760192999996,
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 23.524863724,
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 20.358336218,
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 12.429301084,
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 25.050167422999998,
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 40.39429134700001,
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 83.183091932,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 15.83357532,
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 22.066593143,
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 24.155087572,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 58.147190295,
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 23.538800037,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 70.251405249,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 67.926226809,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 47.889814276,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 32.416042928,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 51.995179698,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 50.330491918,
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 9.495416511,
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 25.214420054,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 27.065253562,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 28.748436261,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 47.800137904,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 40.900327376999996,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 52.137025586,
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 51.666554156000004,
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 10.3939351,
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 22.287921808,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 39.047353577,
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 32.928761259,
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 42.178963960000004,
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 40.402699861,
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 34.259741329,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 55.656946367,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 52.707130703000004,
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 25.736012516,
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 15.862628298,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 48.180523441000005,
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 54.057344888,
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 26.943245943,
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 14.482592168,
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 11.621989822,
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_spec.rb": 18.98362614,
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 17.95735824,
@ -122,18 +123,18 @@
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 25.262319222000002,
"qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb": 69.051929539,
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 20.716304489,
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 31.697986541,
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 36.908842750000005,
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 66.25780731500001,
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 15.933774981,
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 15.974842294,
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 166.285194214,
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 123.6325655,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 87.3414512,
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 125.615577278,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 79.65951577000001,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 126.163380258,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 108.80233313100001,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 33.243461008,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 117.889285422,
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 40.671473718,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 49.811767036,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 255.55527867700002,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 253.499277969,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 264.469636434,
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 287.735809414,
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 85.998420066,
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 143.60726215100001,
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 58.882249785,
@ -146,58 +147,58 @@
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 99.015735467,
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 74.022677016,
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 79.436578332,
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 18.75679378,
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 18.329611039,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 18.733546629,
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 31.366730619,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 23.770899178,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 8.062104486,
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 17.153327394,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 25.739514062,
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 7.976540396,
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 16.022177597,
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 54.539150395,
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 44.0594222,
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 347.84472368,
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 47.037460436,
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 437.812128365,
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 175.17008539100001,
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 53.397001906,
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 85.718160991,
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 49.331400227,
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 234.63859533700003,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 430.448372641,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 299.67147803200004,
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 56.098151751,
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 256.245476552,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 453.211026552,
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 286.907243377,
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 266.518515088,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 295.851008501,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 278.692974074,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 287.658833833,
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 321.619075341,
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 89.732331566,
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 26.363516181,
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 142.58868155599998,
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 10.243383898,
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb": 45.862171806000006,
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 27.670297299,
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 148.23865270599998,
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 7.199167311,
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb": 53.903783166,
"qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb": 68.730493487,
"qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb": 50.478769519,
"qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb": 52.038141196,
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 58.501726086,
"qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb": 17.561720992,
"qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb": 16.594793624,
"qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb": 22.367142461,
"qa/specs/features/browser_ui/9_data_stores/project/create_project_spec.rb": 27.810751683,
"qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb": 21.995113318,
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 6.193219278,
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 59.646429651,
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 58.511105420999996,
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 28.280268834,
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 32.827498197,
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 33.583268558,
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 24.382265573,
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 58.661912899,
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 11.013172335,
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 49.694475787,
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 154.96043341499998,
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 28.9797109,
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 71.286814117,
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 10.75743617,
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 49.569384466,
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 155.24178918700002,
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 25.961302636,
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 31.198744317,
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 20.927947324,
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 23.991487888,
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 33.439496096,
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 20.852436775,
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 26.748265097,
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 36.785539956,
"qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb": 32.260751912,
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 63.150777034,
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 68.791684748,
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 124.737539272,
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 12.552667041,
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 80.09937666,
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 67.420246015,
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 44.515433445,
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 68.570424087,
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 44.727941365,
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 185.431764316,
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/elasticsearch_api_spec.rb": 42.718907001,
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/commit_index/commit_index_spec.rb": 20.20139317,
@ -206,81 +207,81 @@
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb": 59.772997146,
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/notes_index/note_index_spec.rb": 60.872727745,
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/user_index/user_index_spec.rb": 54.947357205,
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 101.31533852500002,
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 98.09696551199998,
"qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 84.366078982,
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 79.342023264,
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 81.818780947,
"qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb": 23.056943382,
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 132.942144291,
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 160.927666992,
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb": 71.19039199699999,
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 86.155568592,
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 101.583294892,
"qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb": 127.695410559,
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 117.811422406,
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 122.441288013,
"qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb": 263.416914189,
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 101.140250036,
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 128.443990353,
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 26.672149035,
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 177.896823224,
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 105.859123489,
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 83.42943332600001,
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 409.091435712,
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 100.52897915599999,
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 152.281722367,
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 68.056468434,
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 160.423879999,
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 127.821613669,
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 97.176444988,
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 440.50465934100004,
"qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb": 15.440628401,
"qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb": 33.566097652,
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 347.638365471,
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 363.166035286,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 44.250297523,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 4.240581244,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 16.614093465,
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 5.837416834,
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 16.035744041,
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 69.400627467,
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 147.811122367,
"qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 100.53495196200001,
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 14.75215224,
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 55.352324697,
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 57.331201741,
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 40.540130503,
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 36.605812946,
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 17.259039861,
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 62.991913454,
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 46.321280138,
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 34.778165822,
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 10.630950953,
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 14.780715549,
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 190.22060105399999,
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 196.554052635,
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 42.635646256,
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 7.56588128,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 30.149588187,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 7.620638813,
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 8.14161055,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 30.761151140000003,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 8.677543947,
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 27.787672921,
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 17.383315776,
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 29.209360285,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 9.400996272,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 25.128804237,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 19.776874427,
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 34.495841737,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 15.046654925,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 27.721628207,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 15.138984071,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 21.26430284,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 47.69806834800001,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 45.937951122,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 24.033409427,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 11.753620813,
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 19.068415080999998,
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 32.243326304,
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 10.830980543,
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 15.391891498,
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 31.013050131,
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 22.619466189,
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 43.36631009,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.321465699,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 39.054713859,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.425461787,
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 42.602175633,
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 17.620232628,
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 82.649659221,
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 30.41902287,
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 30.978762475,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 26.071237444,
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 122.92163529599999,
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 26.496152789,
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 88.724211741,
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 34.577951658,
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 46.287451598,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 31.228351734,
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 133.11306742099998,
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 27.045346295,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 138.506631433,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 162.40433712200002,
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 37.506762857,
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 172.492694019,
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 47.152509014,
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 107.32191674799999,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 27.656670271,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 54.53304389,
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 289.560240673,
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 237.25030512399996,
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 156.394535724,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 30.008903812,
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 55.620797437,
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 319.144823509,
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 248.269052299,
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 167.86609777700002,
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 82.372355921,
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 95.06775421500001,
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 105.830886984,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 87.932170592,
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 61.29443203,
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 10.669843875,
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 14.396202459,
"qa/specs/features/ee/browser_ui/9_tenant_scale/elasticsearch/elasticsearch_reindexing_spec.rb": 159.85103647,
"qa/specs/features/ee/browser_ui/9_tenant_scale/group/share_group_with_group_spec.rb": 29.700954649
}

View File

@ -90,7 +90,22 @@ RSpec.describe RapidDiffs::AppComponent, type: :component, feature_category: :co
expect(vc_test_controller.view_context.content_for?(:startup_js)).not_to be_nil
end
def create_instance
context "when there are no diffs" do
let(:diffs_slice) { [] }
it "renders empty state component" do
render_component
expect(page).to have_text("There are no changes")
end
it "does not render empty state when lazy is true" do
instance = create_instance(lazy: true)
render_inline(instance)
expect(page).not_to have_text("There are no changes")
end
end
def create_instance(lazy: false)
described_class.new(
diffs_slice:,
stream_url:,
@ -99,7 +114,8 @@ RSpec.describe RapidDiffs::AppComponent, type: :component, feature_category: :co
diff_view:,
update_user_endpoint:,
metadata_endpoint:,
diff_files_endpoint:
diff_files_endpoint:,
lazy:
)
end

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
require "spec_helper"
RSpec.describe RapidDiffs::EmptyStateComponent, type: :component, feature_category: :code_review_workflow do
it "renders with default message" do
render_inline(described_class.new)
expect(page).to have_text("There are no changes")
end
it "renders with custom message" do
custom_message = "No changes found in this merge request"
render_inline(described_class.new(message: custom_message))
expect(page).to have_text(custom_message)
end
end

View File

@ -48,4 +48,48 @@ RSpec.describe StreamDiffs, type: :controller, feature_category: :source_code_ma
expect(controller.new.request.format.to_s).to eq('text/html')
end
end
describe '#stream_diff_files' do
let(:controller_instance) { controller.new }
let(:mock_resource) { instance_double(::Commit) }
let(:mock_diffs) { instance_double(Gitlab::Diff::FileCollection::Commit, diff_files: diff_files) }
let(:diff_files) { [] }
let(:response) do
instance_double(ActionDispatch::Response,
stream: instance_double(ActionDispatch::Response::Buffer, write: nil))
end
let(:empty_state_html) { '<empty-state>No changes</empty-state>' }
before do
allow(controller_instance).to receive_messages(resource: mock_resource, response: response)
allow(controller_instance).to receive(:view_context)
allow(mock_resource).to receive(:diffs_for_streaming).and_return(mock_diffs)
end
context 'when no diffs and no offset' do
before do
allow(controller_instance).to receive(:params).and_return(ActionController::Parameters.new)
allow(RapidDiffs::EmptyStateComponent).to receive_message_chain(:new, :render_in).and_return(empty_state_html)
end
it 'renders empty state' do
controller_instance.send(:stream_diff_files, {})
expect(response.stream).to have_received(:write).with(empty_state_html)
end
end
context 'when offset is provided' do
before do
allow(controller_instance).to receive(:params).and_return(ActionController::Parameters.new(offset: '5'))
end
it 'does not render empty state' do
expect(RapidDiffs::EmptyStateComponent).not_to receive(:new)
controller_instance.send(:stream_diff_files, {})
end
end
end
end

View File

@ -469,7 +469,7 @@ RSpec.describe 'Database schema',
"ApplicationSetting" => %w[repository_storages_weighted oauth_provider rate_limits_unauthenticated_git_http],
"AlertManagement::Alert" => %w[payload],
"AlertManagement::HttpIntegration" => %w[payload_example],
"Ci::BuildMetadata" => %w[config_options config_variables runtime_runner_features],
"Ci::BuildMetadata" => %w[config_options config_variables],
"Ci::Runner" => %w[config],
"ExperimentSubject" => %w[context],
"ExperimentUser" => %w[context],

View File

@ -59,7 +59,7 @@ describe('tags list row', () => {
const findProtectedBadge = () => wrapper.findByTestId('protected-badge');
const findProtectedPopover = () => wrapper.findByTestId('protected-popover');
const mountComponent = (propsData = defaultProps, protectedTagsFeatureFlagState = false) => {
const mountComponent = (propsData = defaultProps) => {
wrapper = shallowMountExtended(TagsListRow, {
stubs: {
GlSprintf,
@ -70,11 +70,6 @@ describe('tags list row', () => {
},
propsData,
directives: { GlTooltip: createMockDirective('gl-tooltip') },
provide: {
glFeatures: {
containerRegistryProtectedTags: protectedTagsFeatureFlagState,
},
},
});
};
@ -180,41 +175,35 @@ describe('tags list row', () => {
describe('protected tag', () => {
it('hidden if tag.protection does not exists', () => {
mountComponent(defaultProps, true);
mountComponent(defaultProps);
expect(findProtectedBadge().exists()).toBe(false);
});
it('displays if tag.protection exists', () => {
mountComponent(
{
...defaultProps,
tag: {
...tag,
protection: {
...protection,
},
mountComponent({
...defaultProps,
tag: {
...tag,
protection: {
...protection,
},
},
true,
);
});
expect(findProtectedBadge().exists()).toBe(true);
});
it('has the correct text for the popover', () => {
mountComponent(
{
...defaultProps,
tag: {
...tag,
protection: {
...protection,
},
mountComponent({
...defaultProps,
tag: {
...tag,
protection: {
...protection,
},
},
true,
);
});
const popoverText = findProtectedPopover().text();

View File

@ -18,9 +18,6 @@ describe('Container registry project settings section', () => {
const findContainerProtectionTagRules = () => wrapper.findComponent(ContainerProtectionTagRules);
const defaultProvide = {
glFeatures: {
containerRegistryProtectedTags: true,
},
isContainerRegistryMetadataDatabaseEnabled: true,
};
@ -77,21 +74,6 @@ describe('Container registry project settings section', () => {
});
});
describe('when feature flag "containerRegistryProtectedTags" is disabled', () => {
it('container protection tag rules settings is hidden', () => {
mountComponent({
provide: {
...defaultProvide,
glFeatures: { containerRegistryProtectedTags: false },
},
});
expect(findContainerExpirationPolicy().exists()).toBe(true);
expect(findContainerProtectionRepositoryRules().exists()).toBe(true);
expect(findContainerProtectionTagRules().exists()).toBe(false);
});
});
describe('when "isContainerRegistryMetadataDatabaseEnabled" is set to false', () => {
it('container protection tag rules settings is hidden', () => {
mountComponent({

View File

@ -90,19 +90,6 @@ RSpec.describe Mutations::ContainerRepositories::Destroy, feature_category: :con
it_behaves_like 'destroying the container repository'
end
context 'when the feature container_registry_protected_tags is disabled' do
%i[owner maintainer developer].each do |user_role|
context "with the role of #{user_role}" do
before do
stub_feature_flags(container_registry_protected_tags: false)
project.send("add_#{user_role}", current_user)
end
it_behaves_like 'destroying the container repository'
end
end
end
end
context 'when the container repository does not have tags' do

View File

@ -476,14 +476,6 @@ RSpec.describe ContainerRegistry::Tag, feature_category: :container_registry do
)
end
context 'when the feature container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it { is_expected.to be_nil }
end
context 'when there are no protection rules that match the tag name' do
let(:tag) { described_class.new(repository, 'newname') }
@ -503,7 +495,7 @@ RSpec.describe ContainerRegistry::Tag, feature_category: :container_registry do
context 'when the feature container_registry_immutable_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
stub_feature_flags(container_registry_immutable_tags: false)
end
it { is_expected.to be_nil }
@ -529,14 +521,6 @@ RSpec.describe ContainerRegistry::Tag, feature_category: :container_registry do
)
end
context 'when the feature container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it { is_expected.to be_falsey }
end
context 'when there is an immutable tag rule' do
before do
allow(tag).to receive(:immutable_protection_rule).and_return(

View File

@ -1882,21 +1882,6 @@ RSpec.describe Ci::Runner, type: :model, factory_default: :keep, feature_categor
include_context 'with token authenticatable routable token context'
shared_examples 'an encrypted non-routable token' do |prefix|
context 'when :routable_runner_token feature flag is disabled' do
before do
stub_feature_flags(routable_runner_token: false)
end
it_behaves_like 'an encrypted token' do
let(:expected_token) { token }
let(:expected_token_payload) { devise_token }
let(:expected_token_prefix) { prefix }
let(:expected_encrypted_token) { token_owner_record.token_encrypted }
end
end
end
shared_examples 'an encrypted routable token for resource' do |prefix|
let(:resource_payload) do
case resource
@ -1922,19 +1907,6 @@ RSpec.describe Ci::Runner, type: :model, factory_default: :keep, feature_categor
routing_payload.map { |pairs| pairs.join(':') }.join("\n")
end
context 'when :routable_runner_token feature flag is enabled for the resource' do
before do
stub_feature_flags(routable_runner_token: resource)
end
it_behaves_like 'an encrypted routable token' do
let(:expected_token) { token }
let(:expected_random_bytes) { random_bytes }
let(:expected_token_prefix) { prefix }
let(:expected_encrypted_token) { token_owner_record.token_encrypted }
end
end
it_behaves_like 'an encrypted routable token' do
let(:expected_token) { token }
let(:expected_random_bytes) { random_bytes }
@ -1946,7 +1918,6 @@ RSpec.describe Ci::Runner, type: :model, factory_default: :keep, feature_categor
shared_examples 'an instance runner encrypted token' do |prefix|
let(:runner_type) { :instance_type }
it_behaves_like 'an encrypted non-routable token', prefix
it_behaves_like 'an encrypted routable token for resource', prefix do
let(:resource) { nil }
end
@ -1956,7 +1927,6 @@ RSpec.describe Ci::Runner, type: :model, factory_default: :keep, feature_categor
let(:runner_type) { :group_type }
let(:attrs) { { groups: [group], sharding_key_id: group.id } }
it_behaves_like 'an encrypted non-routable token', prefix
it_behaves_like 'an encrypted routable token for resource', prefix do
let(:resource) { group }
end
@ -1966,7 +1936,6 @@ RSpec.describe Ci::Runner, type: :model, factory_default: :keep, feature_categor
let(:runner_type) { :project_type }
let(:attrs) { { projects: [project], sharding_key_id: project.id } }
it_behaves_like 'an encrypted non-routable token', prefix
it_behaves_like 'an encrypted routable token for resource', prefix do
let(:resource) { project }
end

View File

@ -1267,14 +1267,6 @@ RSpec.describe ContainerRepository, :aggregate_failures, feature_category: :cont
allow(repository).to receive(:has_tags?).and_return(has_tags)
end
context 'when the feature container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it { is_expected.to be_falsey }
end
context 'when the project does not have tag protection rules' do
it { is_expected.to be_falsey }
end

View File

@ -57,21 +57,6 @@ RSpec.describe ContainerRepositoryPolicy, feature_category: :container_registry
end
it_behaves_like 'not allowing anonymous user'
context 'when the feature container_registry_protected_tags is disabled' do
%i[owner maintainer developer].each do |user_role|
context "with the role of #{user_role}" do
before do
stub_feature_flags(container_registry_protected_tags: false)
project.send(:"add_#{user_role}", user)
end
it { expect_allowed(:destroy_container_image) }
end
end
it_behaves_like 'not allowing anonymous user'
end
end
context 'when the container repository does not have tags' do

View File

@ -721,18 +721,6 @@ RSpec.describe 'container repository details', feature_category: :container_regi
)
end
context 'when the feature container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it 'returns nil' do
subject
expect(tag_permissions_response).to be_nil
end
end
context 'when there is an immutable rule' do
before_all do
create(

View File

@ -131,6 +131,5 @@ RSpec.describe 'Creating the container registry tag protection rule', :aggregate
end
include_examples 'when user does not have permission'
include_examples 'when feature flag container_registry_protected_tags is disabled'
include_examples 'when the GitLab API is not supported'
end

View File

@ -65,6 +65,5 @@ RSpec.describe 'Deleting a container registry tag protection rule', :aggregate_f
end
include_examples 'when user does not have permission'
include_examples 'when feature flag container_registry_protected_tags is disabled'
include_examples 'when the GitLab API is not supported'
end

View File

@ -140,6 +140,5 @@ RSpec.describe 'Updating the container registry tag protection rule', :aggregate
end
include_examples 'when user does not have permission'
include_examples 'when feature flag container_registry_protected_tags is disabled'
include_examples 'when the GitLab API is not supported'
end

View File

@ -138,19 +138,6 @@ RSpec.describe 'Destroying a container repository', feature_category: :container
it_behaves_like 'destroying the container repository'
end
context 'when the feature container_registry_protected_tags is disabled' do
%i[owner maintainer developer].each do |user_role|
context "with the role of #{user_role}" do
before do
stub_feature_flags(container_registry_protected_tags: false)
project.send("add_#{user_role}", current_user)
end
it_behaves_like 'destroying the container repository'
end
end
end
end
end
end

View File

@ -67,20 +67,4 @@ RSpec.describe 'getting the container tag protection rules linked to a project',
expect(protection_rules).to be_empty
end
end
context "when feature flag ':container_registry_protected_tags' disabled" do
let_it_be(:tag_protection_rule) { create(:container_registry_protection_tag_rule, project: project) }
before do
stub_feature_flags(container_registry_protected_tags: false)
send_graqhql_query
end
it_behaves_like 'a working graphql query'
it 'returns no container tag protection rules' do
expect(protection_rules).to be_empty
end
end
end

View File

@ -21,8 +21,6 @@ RSpec.describe Projects::Registry::RepositoriesController, feature_category: :co
end
it { is_expected.to have_gitlab_http_status(:ok) }
it_behaves_like 'pushed feature flag', :container_registry_protected_tags
end
describe 'GET #show' do
@ -34,7 +32,5 @@ RSpec.describe Projects::Registry::RepositoriesController, feature_category: :co
end
it { is_expected.to have_gitlab_http_status(:ok) }
it_behaves_like 'pushed feature flag', :container_registry_protected_tags
end
end

View File

@ -29,7 +29,6 @@ RSpec.describe Projects::Settings::PackagesAndRegistriesController, feature_cate
it_behaves_like 'pushed feature flag', :packages_protected_packages_conan
it_behaves_like 'pushed feature flag', :packages_protected_packages_delete
it_behaves_like 'pushed feature flag', :container_registry_protected_tags
end
end

View File

@ -111,15 +111,6 @@ RSpec.describe Projects::ContainerRepository::Gitlab::CleanupTagsService, featur
delete_expectations: [%w[A], %w[Ba Bb], %w[C D], %w[17-8-stable]]
end
context 'with the container_registry_protected_tags disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it_behaves_like 'with protected rule having pattern ^\d{1,2}-\d{1,2}-stable$',
delete_expectations: [%w[A], %w[Ba Bb], %w[C D], %w[17-8-stable]]
end
context 'with a timeout' do
let(:params) do
{ 'name_regex_delete' => '.*' }
@ -206,15 +197,6 @@ RSpec.describe Projects::ContainerRepository::Gitlab::CleanupTagsService, featur
it_behaves_like 'with protected rule having pattern ^\d{1,2}-\d{1,2}-stable$',
delete_expectations: [%w[A Ba Bb C D 17-8-stable]]
end
context 'with the container_registry_protected_tags disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it_behaves_like 'with protected rule having pattern ^\d{1,2}-\d{1,2}-stable$',
delete_expectations: [%w[A Ba Bb C D 17-8-stable]]
end
end
context 'with no tags page' do

View File

@ -56,15 +56,6 @@ RSpec.describe Projects::ContainerRepository::Gitlab::DeleteTagsService, feature
stub_delete_reference_requests(tag_names)
end
context 'when container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
expect_delete_tags(tag_names)
end
it { is_expected.to include(status: :success) }
end
context 'when not all tags are protected' do
before do
expect_delete_tags(%w[Ba Bb C D])

View File

@ -538,14 +538,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
.to receive(:remove_legacy_registry_tags).and_return(true)
end
context 'when the feature container_registry_protected_tags is disabled' do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it { is_expected.to be true }
end
context 'when the current user is an admin', :enable_admin_mode do
let(:user) { build_stubbed(:admin) }

View File

@ -40,16 +40,6 @@ RSpec.shared_examples 'when user does not have permission' do
end
end
RSpec.shared_examples 'when feature flag container_registry_protected_tags is disabled' do
context "when feature flag ':container_registry_protected_tags' disabled" do
before do
stub_feature_flags(container_registry_protected_tags: false)
end
it_behaves_like 'returning a GraphQL error', /'container_registry_protected_tags' feature flag is disabled/
end
end
RSpec.shared_examples 'when the GitLab API is not supported' do
context 'when the GitLab API is not supported' do
before do