Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
531cba7aff
commit
da10347975
|
|
@ -1 +1 @@
|
|||
02ff05833da52a69f4c16fa94e539c6f3ab306ea
|
||||
e8c0552b8152cf9363ccd1d9e9002225904d5202
|
||||
|
|
|
|||
|
|
@ -76,6 +76,14 @@ export const TOKENS = [
|
|||
unique: true,
|
||||
options: [{ value: 'placeholder', title: s__('UserMapping|Placeholder') }],
|
||||
},
|
||||
{
|
||||
title: s__('AdminUsers|LDAP sync'),
|
||||
type: 'ldap_sync',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: [{ value: 'ldap_sync', title: __('True') }],
|
||||
},
|
||||
];
|
||||
|
||||
export const SOLO_OWNED_ORGANIZATIONS_REQUESTED_COUNT = 10;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ export default class GlFieldErrors {
|
|||
'input[type=email]',
|
||||
'input[type=url]',
|
||||
'input[type=number]',
|
||||
'input[type=tel]',
|
||||
'textarea',
|
||||
'select',
|
||||
].join(',');
|
||||
|
|
|
|||
|
|
@ -71,15 +71,13 @@ export default {
|
|||
<div v-if="user.note" class="gl-p-1 gl-text-subtle">
|
||||
<gl-icon v-gl-tooltip="userNoteShort" name="document" />
|
||||
</div>
|
||||
<div
|
||||
v-for="(badge, idx) in user.badges"
|
||||
:key="idx"
|
||||
class="gl-p-1"
|
||||
:class="{ 'gl-pb-0': glFeatures.simplifiedBadges }"
|
||||
>
|
||||
<gl-badge class="!gl-flex" :variant="badge.variant">{{ badge.text }}</gl-badge>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div class="gl-flex gl-flex-wrap gl-pt-2">
|
||||
<div v-for="badge in user.badges" :key="badge.text" class="gl-pr-2">
|
||||
<gl-badge :variant="badge.variant">{{ badge.text }}</gl-badge>
|
||||
</div>
|
||||
</div>
|
||||
</gl-avatar-labeled>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ class Admin::UsersController < Admin::ApplicationController
|
|||
end
|
||||
|
||||
def users_with_included_associations(users)
|
||||
users.includes(:authorized_projects, :trusted_with_spam_attribute) # rubocop: disable CodeReuse/ActiveRecord
|
||||
users.includes(:authorized_projects, :trusted_with_spam_attribute, :identities) # rubocop: disable CodeReuse/ActiveRecord
|
||||
end
|
||||
|
||||
def admin_making_changes_for_another_user?
|
||||
|
|
|
|||
|
|
@ -10,6 +10,13 @@ module UploadsActions
|
|||
|
||||
UPLOAD_MOUNTS = %w[avatar attachment file logo pwa_icon header_logo favicon screenshot].freeze
|
||||
|
||||
# We need to avoid setting certain formats. For example, using the :js format
|
||||
# would trigger Rails' cross-origin JavaScript protection. To avoid this, we use
|
||||
# the :text format for JS files instead.
|
||||
CUSTOM_REQUEST_FORMAT_MAPPING = {
|
||||
js: :text
|
||||
}.freeze
|
||||
|
||||
included do
|
||||
prepend_before_action :set_request_format_from_path_extension
|
||||
rescue_from FileUploader::InvalidSecret, with: :render_404
|
||||
|
|
@ -85,7 +92,9 @@ module UploadsActions
|
|||
|
||||
format = Mime[match.captures.first]
|
||||
|
||||
request.format = format.symbol if format
|
||||
return if format.blank?
|
||||
|
||||
request.format = CUSTOM_REQUEST_FORMAT_MAPPING[format.symbol] || format.symbol
|
||||
end
|
||||
|
||||
def content_disposition
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ module Resolvers
|
|||
|
||||
def preloads
|
||||
{
|
||||
user: [:user]
|
||||
user: [{ user: [:identities] }]
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ module UsersHelper
|
|||
badges << { text: s_("AdminUsers|It's you!"), variant: 'muted' } if current_user == user
|
||||
badges << { text: s_("AdminUsers|Locked"), variant: 'warning' } if user.access_locked?
|
||||
badges << { text: s_("UserMapping|Placeholder"), variant: 'muted' } if user.placeholder?
|
||||
badges << { text: s_('AdminUsers|LDAP'), variant: 'info' } if user.ldap_user?
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -682,6 +682,7 @@ class User < ApplicationRecord
|
|||
scope :dormant, -> { with_state(:active).human_or_service_user.where('last_activity_on <= ?', Gitlab::CurrentSettings.deactivate_dormant_users_period.day.ago.to_date) }
|
||||
scope :with_no_activity, -> { with_state(:active).human_or_service_user.where(last_activity_on: nil).where('created_at <= ?', MINIMUM_DAYS_CREATED.day.ago.to_date) }
|
||||
scope :by_provider_and_extern_uid, ->(provider, extern_uid) { joins(:identities).merge(Identity.with_extern_uid(provider, extern_uid)) }
|
||||
scope :ldap, -> { joins(:identities).where('identities.provider LIKE ?', 'ldap%') }
|
||||
scope :by_ids, ->(ids) { where(id: ids) }
|
||||
scope :by_ids_or_usernames, ->(ids, usernames) { where(username: usernames).or(where(id: ids)) }
|
||||
scope :without_forbidden_states, -> { where.not(state: FORBIDDEN_SEARCH_STATES) }
|
||||
|
|
@ -886,12 +887,14 @@ class User < ApplicationRecord
|
|||
without_projects
|
||||
when 'external'
|
||||
external
|
||||
when "trusted"
|
||||
when 'trusted'
|
||||
trusted
|
||||
when "placeholder"
|
||||
when 'placeholder'
|
||||
placeholder
|
||||
when "without_placeholders"
|
||||
when 'without_placeholders'
|
||||
without_placeholders
|
||||
when 'ldap_sync'
|
||||
ldap
|
||||
else
|
||||
all_without_ghosts
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
name: duo_code_review_full_file
|
||||
description:
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/510266
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189314
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/537556
|
||||
milestone: '18.0'
|
||||
group: group::code review
|
||||
type: beta
|
||||
default_enabled: false
|
||||
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92218
|
|||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367666
|
||||
milestone: '15.4'
|
||||
type: development
|
||||
group: group::organizations
|
||||
group: group::authorization
|
||||
default_enabled: false
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
migration_job_name: BackfillResourceIterationEventsNamespaceId
|
||||
description: Backfills sharding key for resource_iteration_events.namespace_id
|
||||
feature_category: team_planning
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/187487
|
||||
milestone: '17.11'
|
||||
queued_migration_version: 20250409172701
|
||||
finalized_by: # version of the migration that finalized this BBM
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class QueueBackfillResourceIterationEventsNamespaceId < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.11'
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
MIGRATION = "BackfillResourceIterationEventsNamespaceId"
|
||||
DELAY_INTERVAL = 2.minutes
|
||||
BATCH_SIZE = 10000
|
||||
SUB_BATCH_SIZE = 100
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:resource_iteration_events,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :resource_iteration_events, :id, [])
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
9b9e08f01422c89998b6dcd36552eda1219bd2aec90d6da4e6eb763aeae546f6
|
||||
|
|
@ -10,7 +10,7 @@ title: CI mirrored tables
|
|||
As part of the database [decomposition work](https://gitlab.com/groups/gitlab-org/-/epics/6168),
|
||||
which had the goal of splitting the single database GitLab is using, into two databases: `main` and
|
||||
`ci`, came the big challenge of
|
||||
[removing all joins between the `main` and the `ci` tables](multiple_databases.md#removing-joins-between-ci-and-non-ci-tables).
|
||||
[removing all joins between the `main` and the `ci` tables](multiple_databases.md#removing-joins-between-main-and-non-main-tables).
|
||||
That is because PostgreSQL doesn't support joins between tables that belong to different databases.
|
||||
However, some core application models in the main database are queried very often by the CI side.
|
||||
For example:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ title: Multiple Databases
|
|||
|
||||
To allow GitLab to scale further we
|
||||
[decomposed the GitLab application database into multiple databases](https://gitlab.com/groups/gitlab-org/-/epics/6168).
|
||||
The main databases are `main`, `ci`, and (optionally) `sec`. GitLab supports being run with one, two, or three databases.
|
||||
The main databases are `main`, `ci`, and `sec`. GitLab supports being run with one, two, or three databases.
|
||||
On GitLab.com we are using separate `main` `ci`, and `sec` databases.
|
||||
|
||||
For the purpose of building the [Cells](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/) architecture, we are decomposing
|
||||
|
|
@ -68,7 +68,7 @@ The `gitlab_schema` primary purpose is to introduce a barrier between different
|
|||
|
||||
This is used as a primary source of classification for:
|
||||
|
||||
- [Discovering cross-joins across tables from different schemas](#removing-joins-between-ci-and-non-ci-tables)
|
||||
- [Discovering cross-joins across tables from different schemas](#removing-joins-between-main-and-non-main-tables)
|
||||
- [Discovering cross-database transactions across tables from different schemas](#removing-cross-database-transactions)
|
||||
|
||||
### The special purpose of `gitlab_shared`
|
||||
|
|
@ -102,7 +102,7 @@ might be missing some of those application-defined `gitlab_shared` tables (like
|
|||
|
||||
Read [Migrations for Multiple Databases](migrations_for_multiple_databases.md).
|
||||
|
||||
## CI/CD Database
|
||||
## CI and Sec Databases
|
||||
|
||||
### Configure single database
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ By default, GDK is configured to run with multiple databases.
|
|||
{{< alert type="warning" >}}
|
||||
|
||||
Switching back-and-forth between single and multiple databases in
|
||||
the same development instance is discouraged. Any data in the `ci`
|
||||
the same development instance is discouraged. Any data in the `ci` or `sec`
|
||||
database will not be accessible in single database mode. For single database, you should use a separate development instance.
|
||||
|
||||
{{< /alert >}}
|
||||
|
|
@ -122,6 +122,7 @@ To configure GDK to use a single database:
|
|||
|
||||
```shell
|
||||
gdk config set gitlab.rails.databases.ci.enabled false
|
||||
gdk config set gitlab.rails.databases.sec.enabled false
|
||||
```
|
||||
|
||||
1. Reconfigure GDK:
|
||||
|
|
@ -130,7 +131,7 @@ To configure GDK to use a single database:
|
|||
gdk reconfigure
|
||||
```
|
||||
|
||||
To switch back to using multiple databases, set `gitlab.rails.databases.ci.enabled` to `true` and run `gdk reconfigure`.
|
||||
To switch back to using multiple databases, set `gitlab.rails.databases.<db_name>.enabled` to `true` and run `gdk reconfigure`.
|
||||
|
||||
<!--
|
||||
The `validate_cross_joins!` method in `spec/support/database/prevent_cross_joins.rb` references
|
||||
|
|
@ -138,13 +139,13 @@ the following heading in the code, so if you make a change to this heading, make
|
|||
the corresponding documentation URL used in `spec/support/database/prevent_cross_joins.rb`.
|
||||
-->
|
||||
|
||||
### Removing joins between `ci` and non `ci` tables
|
||||
### Removing joins between `main` and non `main` tables
|
||||
|
||||
Queries that join across databases raise an error. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68620)
|
||||
in GitLab 14.3, for new queries only. Pre-existing queries do not raise an error.
|
||||
|
||||
Because GitLab can be run with multiple separate databases, referencing `ci`
|
||||
tables with non `ci` tables in a single query is not possible. Therefore,
|
||||
Because GitLab can be run with multiple separate databases, referencing `main`
|
||||
tables with non `main` tables in a single query is not possible. Therefore,
|
||||
using any kind of `JOIN` in SQL queries will not work.
|
||||
|
||||
#### Suggestions for removing cross-database joins
|
||||
|
|
@ -296,13 +297,13 @@ met:
|
|||
1. The data does not update often (for example, the `project_id` column is almost
|
||||
never updated for most tables).
|
||||
|
||||
One example we found was the `security_scans` table. This table has a foreign
|
||||
key `security_scans.build_id` which allows you to join to the build. Therefore
|
||||
One example we found was the `terraform_state_versions` table. This table has a foreign
|
||||
key `terraform_state_versions.ci_build_id` which allows you to join to the build. Therefore
|
||||
you could join to the project like so:
|
||||
|
||||
```sql
|
||||
select projects.* from security_scans
|
||||
inner join ci_builds on security_scans.build_id = ci_builds.id
|
||||
select projects.* from terraform_state_versions
|
||||
inner join ci_builds on terraform_state_versions.ci_build_id = ci_builds.id
|
||||
inner join projects on ci_builds.project_id = projects.id
|
||||
```
|
||||
|
||||
|
|
@ -310,14 +311,14 @@ The problem with this query is that `ci_builds` is in a different database
|
|||
from the other two tables.
|
||||
|
||||
The solution in this case is to add the `project_id` column to
|
||||
`security_scans`. This doesn't use much extra storage, and due to the way
|
||||
`terraform_state_versions`. This doesn't use much extra storage, and due to the way
|
||||
these features work, it's never updated (a build never moves projects).
|
||||
|
||||
This simplified the query to:
|
||||
|
||||
```sql
|
||||
select projects.* from security_scans
|
||||
inner join projects on security_scans.project_id = projects.id
|
||||
select projects.* from terraform_state_versions
|
||||
inner join projects on terraform_state_versions.project_id = projects.id
|
||||
```
|
||||
|
||||
This also improves performance because you don't need to join through an extra
|
||||
|
|
@ -754,12 +755,13 @@ to limit the modes where tests can run, and skip them on any other modes.
|
|||
|
||||
## Locking writes on the tables that don't belong to the database schemas
|
||||
|
||||
When the CI database is promoted and the two databases are fully split,
|
||||
When a separate database is promoted and the split from main,
|
||||
as an extra safeguard against creating a split brain situation,
|
||||
run the Rake task `gitlab:db:lock_writes`. This command locks writes on:
|
||||
|
||||
- The `gitlab_main` tables on the CI Database.
|
||||
- The `gitlab_ci` tables on the Main Database.
|
||||
- Legacy tables on `gitlab_ci` belonging to the Main or Sec Databases.
|
||||
- Legacy tables on `gitlab_main` belonging to the CI or Sec Databases.
|
||||
- Legacy tables on `gitlab_sec` belonging to the CI or Main Databases.
|
||||
|
||||
This Rake task adds triggers to all the tables, to prevent any
|
||||
`INSERT`, `UPDATE`, `DELETE`, or `TRUNCATE` statements from running
|
||||
|
|
@ -832,7 +834,7 @@ end
|
|||
|
||||
## Truncating tables
|
||||
|
||||
When the databases `main` and `ci` are fully split, we can free up disk
|
||||
When separate databases from `main` are fully split, we can free up disk
|
||||
space by truncating tables. This results in a smaller data set: For example,
|
||||
the data in `users` table on CI database is no longer read and also no
|
||||
longer updated. So this data can be removed by truncating the tables.
|
||||
|
|
|
|||
|
|
@ -198,29 +198,29 @@ behavior of projects that are assigned to a compliance framework.
|
|||
|
||||
| Control name | Control ID | Description |
|
||||
|:---------------------------------------------------------|:-----------------------------------------------------------|:------------|
|
||||
| API Security Running | `scanner_api_security_running` | Ensures that [API security scanning](../application_security/api_security/_index.md) is configured and running in the project pipelines. |
|
||||
| API security running | `scanner_api_security_running` | Ensures that [API security scanning](../application_security/api_security/_index.md) is configured and running in the project pipelines. |
|
||||
| At least two approvals | `minimum_approvals_required_2` | Ensures that merge requests [require at least two approvals](../project/merge_requests/approvals/_index.md) before merging. |
|
||||
| Auth SSO Enabled | `auth_sso_enabled` | Ensures that [Single Sign-On (SSO) authentication](../group/saml_sso/_index.md) is enabled for the project. |
|
||||
| Auth SSO enabled | `auth_sso_enabled` | Ensures that [Single Sign-On (SSO) authentication](../group/saml_sso/_index.md) is enabled for the project. |
|
||||
| Author approved merge request | `merge_request_prevent_author_approval` | Ensures that the author of a merge request [cannot approve their own changes](../project/merge_requests/approvals/_index.md). |
|
||||
| Branch Deletion Disabled | `branch_deletion_disabled` | Ensures that [branches can't be deleted](../project/repository/branches/protected.md). |
|
||||
| CICD Job Token Scope Enabled | `cicd_job_token_scope_enabled` | Ensures that [CI/CD job token](../../ci/jobs/ci_job_token.md) scope restrictions are enabled. |
|
||||
| Code Changes Requires Code Owners | `code_changes_requires_code_owners` | Ensures that code changes require approval from [code owners](../project/codeowners/_index.md). |
|
||||
| Code Quality Running | `scanner_code_quality_running` | Ensures that [code quality scanning](../../ci/testing/code_quality.md) is configured and running in the project pipelines. |
|
||||
| Branch deletion disabled | `branch_deletion_disabled` | Ensures that [branches can't be deleted](../project/repository/branches/protected.md). |
|
||||
| CI/CD job token scope enabled | `cicd_job_token_scope_enabled` | Ensures that [CI/CD job token](../../ci/jobs/ci_job_token.md) scope restrictions are enabled. |
|
||||
| Code changes requires code owners | `code_changes_requires_code_owners` | Ensures that code changes require approval from [code owners](../project/codeowners/_index.md). |
|
||||
| Code quality running | `scanner_code_quality_running` | Ensures that [code quality scanning](../../ci/testing/code_quality.md) is configured and running in the project pipelines. |
|
||||
| Committers approved merge request | `merge_request_prevent_committers_approval` | Ensures that users who have [committed to a merge request cannot approve it](../project/merge_requests/approvals/_index.md). |
|
||||
| Container Scanning Running | `scanner_container_scanning_running` | Ensures that [container scanning](../application_security/container_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| DAST Running | `scanner_dast_running` | Ensures that [Dynamic Application Security Testing](../application_security/dast/_index.md) (DAST) is configured and running in the project pipelines. |
|
||||
| Container scanning running | `scanner_container_scanning_running` | Ensures that [container scanning](../application_security/container_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| DAST running | `scanner_dast_running` | Ensures that [Dynamic Application Security Testing](../application_security/dast/_index.md) (DAST) is configured and running in the project pipelines. |
|
||||
| Default branch protected | `default_branch_protected` | Ensures that the default branch has [protection rules](../project/repository/branches/protected.md) enabled. |
|
||||
| Default branch Protected From Direct Push | `default_branch_protected_from_direct_push` | [Prevents direct pushes to the default branch](../project/repository/branches/protected.md). |
|
||||
| Default branch Users Can Merge | `default_branch_users_can_merge` | Controls [whether users can merge changes to the default branch](../project/repository/branches/protected.md). |
|
||||
| Default branch Users Can Push | `default_branch_users_can_push` | Controls [whether users can push directly to the default branch](../project/repository/branches/protected.md). |
|
||||
| Dependency Scanning Running | `scanner_dep_scanning_running` | Ensures that [dependency scanning](../application_security/dependency_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| Ensure 2 Admins per Repository | `ensure_2_admins_per_repo` | Ensures that [at least two administrators](../project/members/_index.md) are assigned to each repository. |
|
||||
| Error Tracking Enabled | `error_tracking_enabled` | Ensures that [error tracking](../../operations/error_tracking.md) is enabled for the project. |
|
||||
| Force Push Disabled | `force_push_disabled` | Prevents [force pushing](../project/repository/branches/protected.md) to repositories. |
|
||||
| Fuzz Testing Running | `scanner_fuzz_testing_running` | Ensures that [fuzz testing](../application_security/coverage_fuzzing/_index.md) is configured and running in the project pipelines. |
|
||||
| GitLab License Level Ultimate | `gitlab_license_level_ultimate` | Ensures that the GitLab instance is using an [Ultimate license](https://about.gitlab.com/pricing/feature-comparison/). |
|
||||
| Has valid Ci Config | `has_valid_ci_config` | Ensures that the project has a [valid CI/CD configuration](../../ci/yaml/_index.md). |
|
||||
| IaC Scanning Running | `scanner_iac_running` | Ensures [Infrastructure as Code (IaC) scanning](../application_security/iac_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| Default branch protected from direct push | `default_branch_protected_from_direct_push` | [Prevents direct pushes to the default branch](../project/repository/branches/protected.md). |
|
||||
| Default branch users can merge | `default_branch_users_can_merge` | Controls [whether users can merge changes to the default branch](../project/repository/branches/protected.md). |
|
||||
| Default branch users can push | `default_branch_users_can_push` | Controls [whether users can push directly to the default branch](../project/repository/branches/protected.md). |
|
||||
| Dependency scanning running | `scanner_dep_scanning_running` | Ensures that [dependency scanning](../application_security/dependency_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| Ensure two administrators per repository | `ensure_2_admins_per_repo` | Ensures that [at least two administrators](../project/members/_index.md) are assigned to each repository. |
|
||||
| Error tracking enabled | `error_tracking_enabled` | Ensures that [error tracking](../../operations/error_tracking.md) is enabled for the project. |
|
||||
| Force push disabled | `force_push_disabled` | Prevents [force pushing](../project/repository/branches/protected.md) to repositories. |
|
||||
| Fuzz testing running | `scanner_fuzz_testing_running` | Ensures that [fuzz testing](../application_security/coverage_fuzzing/_index.md) is configured and running in the project pipelines. |
|
||||
| GitLab license level Ultimate | `gitlab_license_level_ultimate` | Ensures that the GitLab instance is using an [Ultimate license](https://about.gitlab.com/pricing/feature-comparison/). |
|
||||
| Has valid CI/CD configuration | `has_valid_ci_config` | Ensures that the project has a [valid CI/CD configuration](../../ci/yaml/_index.md). |
|
||||
| IaC scanning running | `scanner_iac_running` | Ensures [Infrastructure as Code (IaC) scanning](../application_security/iac_scanning/_index.md) is configured and running in the project pipelines. |
|
||||
| Internal visibility is forbidden | `project_visibility_not_internal` | Ensures that projects are not set to [internal visibility](../public_access.md). |
|
||||
| Issue Tracking Enabled | `issue_tracking_enabled` | Ensures that [issue tracking](../project/issues/_index.md) is enabled for the project. |
|
||||
| License Compliance Running | `scanner_license_compliance_running` | Ensures that [license compliance scanning](license_approval_policies.md) is configured and running in the project pipelines. |
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,29 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Gitlab
|
||||
module BackgroundMigration
|
||||
class BackfillResourceIterationEventsNamespaceId < BatchedMigrationJob
|
||||
operation_name :update_namespace_id
|
||||
feature_category :team_planning
|
||||
|
||||
def perform
|
||||
each_sub_batch do |sub_batch|
|
||||
connection.execute(
|
||||
<<~SQL
|
||||
WITH sub_batch AS MATERIALIZED (#{sub_batch.select(:id, :iteration_id).limit(sub_batch_size).to_sql})
|
||||
UPDATE
|
||||
"resource_iteration_events"
|
||||
SET
|
||||
"namespace_id" = "sprints"."group_id"
|
||||
FROM
|
||||
"sub_batch"
|
||||
INNER JOIN "sprints" ON "sprints"."id" = "sub_batch"."iteration_id"
|
||||
WHERE
|
||||
"resource_iteration_events"."id" = "sub_batch"."id"
|
||||
SQL
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -11,7 +11,6 @@ module Gitlab
|
|||
|
||||
def perform!
|
||||
if pipeline_config&.exists?
|
||||
build_pipeline_config
|
||||
@command.config_content = pipeline_config.content
|
||||
@pipeline.config_source = pipeline_config.source
|
||||
@command.pipeline_config = pipeline_config
|
||||
|
|
@ -40,16 +39,6 @@ module Gitlab
|
|||
)
|
||||
end
|
||||
end
|
||||
|
||||
def build_pipeline_config
|
||||
# Inputs may contain secrets, so we don't want to save them in the DB as plain text.
|
||||
# It's safe to not save a pipeline-config because we are currently considering
|
||||
# dropping the `p_ci_pipelines_config` table because it's not used anywhere.
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/520828#note_2364398251
|
||||
return if @command.inputs.present?
|
||||
|
||||
@pipeline.build_pipeline_config(content: pipeline_config.content, project_id: @pipeline.project_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2644,9 +2644,6 @@ msgstr ""
|
|||
msgid "About this feature"
|
||||
msgstr ""
|
||||
|
||||
msgid "About your company"
|
||||
msgstr ""
|
||||
|
||||
msgid "Abuse reports"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5171,9 +5168,15 @@ msgstr ""
|
|||
msgid "AdminUsers|It's you!"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminUsers|LDAP"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminUsers|LDAP Blocked"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminUsers|LDAP sync"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminUsers|Learn more about %{link_start}banned users.%{link_end}"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -31788,10 +31791,13 @@ msgstr ""
|
|||
msgid "InProductMarketing|%{upper_start}Free 60-day trial%{upper_end} %{lower_start}GitLab Ultimate & GitLab Duo Enterprise%{lower_end} %{last_start}Sign up for a free trial of the most comprehensive AI-powered DevSecOps Platform%{last_end}"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|60-day trial period"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Boost efficiency and collaboration"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Built-in security"
|
||||
msgid "InProductMarketing|Build in security"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|End-to-end security and compliance"
|
||||
|
|
@ -31800,6 +31806,9 @@ msgstr ""
|
|||
msgid "InProductMarketing|Ensure compliance"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Experience the power of Ultimate + GitLab Duo Enterprise"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Free guest users"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -31824,9 +31833,6 @@ msgstr ""
|
|||
msgid "InProductMarketing|Start a Self-Managed trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Start your 60-day free trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "InProductMarketing|Team members collaborating"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -59976,6 +59982,9 @@ msgstr ""
|
|||
msgid "Telephone number"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tell us about your company"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tell us what you think"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -63685,9 +63694,6 @@ msgstr ""
|
|||
msgid "TrialDiscover|Why Ultimate & GitLab Duo Enterprise?"
|
||||
msgstr ""
|
||||
|
||||
msgid "TrialRegistration|To complete registration, we need additional details from you."
|
||||
msgstr ""
|
||||
|
||||
msgid "TrialWidget|%{daysLeft} days left in trial"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -63763,6 +63769,9 @@ msgstr ""
|
|||
msgid "Trial|Continue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Continue with trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Cookie Policy."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -63781,9 +63790,6 @@ msgstr ""
|
|||
msgid "Trial|Select state or province"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Start free Ultimate + GitLab Duo Enterprise trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Start your free Ultimate and GitLab Duo Enterprise trial"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -63793,7 +63799,7 @@ msgstr ""
|
|||
msgid "Trial|State or province"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|To activate your trial, we need additional details from you."
|
||||
msgid "Trial|We need a few more details from you to activate your trial."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Your free Ultimate & GitLab Duo Enterprise Trial lasts for 60 days. After this period, you can maintain a GitLab Free account forever, or upgrade to a paid plan."
|
||||
|
|
@ -67715,9 +67721,6 @@ msgstr ""
|
|||
msgid "Webhooks|You've reached the maximum number of custom headers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
msgid "Website:"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,273 +1,293 @@
|
|||
{
|
||||
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 41.89152790999999,
|
||||
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 70.851877031,
|
||||
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 95.432449593,
|
||||
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 99.391011406,
|
||||
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 109.46771509,
|
||||
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 17.343291911,
|
||||
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 129.164534484,
|
||||
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 65.229723744,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 48.070470498,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 207.126358293,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 93.817009078,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb": 88.488855084,
|
||||
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 10.817814349,
|
||||
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 25.181362408,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 21.039227909,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 14.02142123,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 37.865117153999996,
|
||||
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 0.626406801,
|
||||
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 17.916767084,
|
||||
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 20.598149251,
|
||||
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 14.032271367,
|
||||
"qa/specs/features/api/3_create/repository/files_spec.rb": 13.535752991,
|
||||
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 15.889818879,
|
||||
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 21.785407327,
|
||||
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 28.971710849,
|
||||
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 6.921551015,
|
||||
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 71.715082498,
|
||||
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 17.328745451,
|
||||
"qa/specs/features/api/4_verify/file_variable_spec.rb": 64.614498647,
|
||||
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 30.637977485,
|
||||
"qa/specs/features/api/8_monitor/metrics_spec.rb": 4.9947513059999995,
|
||||
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 99.27348326900001,
|
||||
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 7.4314368129999995,
|
||||
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 19.842973029,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 54.068209482,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 50.374047094,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 13.416315795,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb": 99.725940112,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb": 2.246884586,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb": 30.622130294,
|
||||
"qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb": 16.142231526,
|
||||
"qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb": 41.299020436,
|
||||
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 84.45297341,
|
||||
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 23.872107364,
|
||||
"qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb": 28.468018175,
|
||||
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 37.641448239,
|
||||
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 40.632777364,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 12.320565322,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 13.042966732,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 56.880689742,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 57.073159272,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 50.263795869,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 61.991930411,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 59.967414554,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 178.914027498,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 20.491100126,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 26.178544114,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 20.094203457,
|
||||
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 22.630998895,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 23.429482699,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 23.141392028,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 210.43566028199996,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 22.576892653,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 38.055066272,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 22.468371256,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 24.090504464,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 28.753010077,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 22.667435895,
|
||||
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 11.468357899,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 107.468536777,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 15.670750371,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 26.489814779,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 70.59044387700001,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 47.661285024,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 13.196745475,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 33.939516299,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 64.986832706,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 38.596370586999996,
|
||||
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 23.637905719,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 94.804965046,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 61.876072121,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 38.641931169,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 99.27304443099999,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 32.097362975,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 98.399291819,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 78.358625484,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 29.099789056,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 63.884452512,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 73.312219981,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 59.663104611,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 48.528793085000004,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 23.227132854,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 20.079322063,
|
||||
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 11.048957115,
|
||||
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 36.377727971,
|
||||
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 35.583181482,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 92.027908827,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 11.203736041,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 28.745375984,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 25.42428777,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 61.079432326,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 74.21166571,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 43.247076832000005,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 29.612369532,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 53.361605086000004,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 66.632248425,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 8.917192596,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 21.862953077,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 21.292720569,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 24.869882249,
|
||||
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 32.124700605,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 24.469544398,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 24.404964006,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 49.104983997999994,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 48.835432894,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 10.025282312,
|
||||
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 32.98999308,
|
||||
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 75.62535221,
|
||||
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 97.971406904,
|
||||
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 99.394917952,
|
||||
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 111.202909403,
|
||||
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 23.128792633,
|
||||
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 98.601690677,
|
||||
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 63.884309438,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 60.555716827,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 185.120150591,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 97.451122042,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb": 101.663654195,
|
||||
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 14.907381728,
|
||||
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 25.755076546,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 16.82332341,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 22.433046338,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 39.80516242,
|
||||
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 1.38181908,
|
||||
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 25.431371545,
|
||||
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 22.631262867,
|
||||
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 26.793694843000004,
|
||||
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 16.670677201,
|
||||
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 25.454150535,
|
||||
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 28.961005929,
|
||||
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 10.547959073,
|
||||
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 95.84142065,
|
||||
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 26.575834034,
|
||||
"qa/specs/features/api/4_verify/file_variable_spec.rb": 60.79006248,
|
||||
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 39.828565691,
|
||||
"qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 69.770433031,
|
||||
"qa/specs/features/api/8_monitor/metrics_spec.rb": 5.996862642,
|
||||
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 145.832127287,
|
||||
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 3.88771732,
|
||||
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 18.955245548,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 51.379482902,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 63.15838517,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 13.427990734,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb": 94.549567111,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb": 4.26200593,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb": 30.355360322,
|
||||
"qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb": 16.78395848,
|
||||
"qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb": 41.820836674,
|
||||
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 101.892100194,
|
||||
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 25.906346348,
|
||||
"qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb": 30.138602861,
|
||||
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 44.138226734999996,
|
||||
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 60.04423653,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 18.762676849,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 13.578009866,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 61.994387357,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 65.227220864,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 46.776170762,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 73.78475297,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 57.03791635,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 181.520241604,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 23.031130269,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 29.780177896,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 30.636613756,
|
||||
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 16.470446876,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 23.402340109,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 26.608420993,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 226.30203992999998,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 30.203090855,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 40.13231434,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 24.860881753,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 24.575106282,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 33.018544554,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 26.291870234,
|
||||
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 17.561810633,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 106.336658382,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 22.587552274,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 28.049283666,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 108.875066367,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 69.419140123,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 25.037219196,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 38.413254353,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 70.598098006,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 59.092698467000005,
|
||||
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 24.049024633,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 83.35424972999999,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 65.769218013,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 30.017509364,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 92.452005772,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 46.535589667,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 85.059614424,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 58.678788745,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 38.031947034,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 107.744959716,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 64.079688598,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 60.464588091,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 47.575329799,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 27.119274477,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 30.340932638,
|
||||
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 24.416460797,
|
||||
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 26.239438601,
|
||||
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 37.20657738,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 142.734936736,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 24.264817229,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 27.222468229,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 49.703005927,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 84.31200969,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 77.096792386,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 54.592720064000005,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 43.343972126,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 100.70291134499999,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 57.116473049999996,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 22.332861645,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 21.55505836,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 29.287778902,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 26.294830596,
|
||||
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 65.051120837,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 31.803789523,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 51.590373962,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 83.905883157,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 73.04176784399999,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 20.481249541,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 8.514641421,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 9.570704381,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 23.238740797,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 23.457603789,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 25.280216447,
|
||||
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 17.545476927,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 34.662669595,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 66.200562963,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 15.322529505,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 166.47355206,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 66.619502943,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 82.42868249,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 133.642486192,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 113.834911288,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 57.249749289,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 58.427087267,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 249.439823524,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 312.44583669,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 54.950096164,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 122.875642881,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 35.246744232,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 94.619528505,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 13.837831845,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 60.85158251,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 45.45791998,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 90.84630595499999,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 46.28532263,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 73.642136838,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 77.531970216,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 48.58576106,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 31.212123043,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 17.247276666,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 30.996238731,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 23.910167087,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 8.92125161,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 17.1114281,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 34.284755192,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 21.522259966,
|
||||
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 52.162786658,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 373.500013924,
|
||||
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 180.723964984,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 59.730133437,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 68.298383306,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 75.839250653,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 247.22047817600003,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 484.390195019,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 269.336205395,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 259.698535986,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 297.910586706,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 301.29194994,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 96.771360244,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 28.190565917,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 151.863373456,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 12.316922408,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb": 45.776404371,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb": 51.078624882,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb": 45.418273453,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 63.056196486,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb": 16.929797753,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 11.556969526,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 56.76733375800001,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 25.786212519,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 26.637145377,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 24.693772213,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 59.179694752,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 10.907782001000001,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 49.103437086,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 173.02086177,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 30.567224495,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 22.821764772,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 30.262389539,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 22.910057593,
|
||||
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 50.816734194,
|
||||
"qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb": 49.073527357,
|
||||
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 66.002169944,
|
||||
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 67.681438798,
|
||||
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 7.522709878,
|
||||
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 73.01876149,
|
||||
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 59.090955218000005,
|
||||
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 45.086595003999996,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 103.38601722499999,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 68.657010137,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 91.386168894,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb": 20.804818843,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 141.324680587,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb": 66.040902286,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 108.451956255,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb": 128.68466909900002,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 116.897048713,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb": 180.46779755,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 97.280846308,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 142.568276085,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 57.657883554,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 165.518080902,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 123.75335889000002,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 84.16228416199999,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 363.622779702,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb": 12.783057761,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb": 41.254110492,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 358.3432609,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 14.016590081,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 5.39033329,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 16.506609457,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 27.190837332,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 129.57212996,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 16.736182891,
|
||||
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 55.17808449899999,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 73.532939838,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 48.521325192,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 30.000179338,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 21.527917249,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 13.979232287,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 199.27937587600002,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 46.375081679,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 8.06298025,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 22.378114707,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 16.458226292,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 27.464608761,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 26.454088007,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 30.080699217,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 17.376470062,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 24.665774586,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 22.804704234,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 15.620382211,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 47.242724384,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 21.419591115,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 14.38292385,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 18.465045738,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 27.18952343,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 17.28927439,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 36.317261154,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 43.217480413,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 55.06851288599999,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 15.888986762,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 81.516824255,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 19.924696388,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 42.055998775,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 28.884191453,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 149.098831152,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 30.036853988,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 123.885874959,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 182.74925166600002,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 44.803314304,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 71.093189651,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 26.408467189,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 55.784349268,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 298.09492799300006,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 177.829345208,
|
||||
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 128.765366845,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 34.817199201,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 79.786370246,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 48.548480024,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 58.251654546,
|
||||
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 20.689093678,
|
||||
"qa/specs/features/ee/browser_ui/9_tenant_scale/group/share_group_with_group_spec.rb": 23.810004361
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 14.67105945,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 28.514565884,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 47.298550792,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 34.434016889,
|
||||
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 25.014898858,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 42.752924537,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 84.502238036,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 24.250358427,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 180.07976596700001,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 96.65252819099999,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 86.128659366,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 121.634773435,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 116.303910391,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 55.741715074,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 66.436168654,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 260.885521371,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 319.85414603000004,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 73.521802689,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 134.719012043,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 33.577634151,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 84.286087112,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 18.525020519,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 54.886224503,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 64.229339559,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 112.862791923,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 66.298914071,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 66.049358924,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 65.493875232,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 50.079680864,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 31.110243067,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 23.618801349,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 39.029569115,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 25.616882657,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 17.609245948,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 20.499690898,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 45.242119367,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 26.076009522,
|
||||
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 54.246992046,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 165.693115559,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 345.187678671,
|
||||
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 172.648268037,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 67.483790802,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 97.870222592,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 133.504862177,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 382.312482672,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 591.8489436350001,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 285.250109461,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 304.329392175,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 335.093454552,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 285.115592965,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 107.899088585,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 29.988003167,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 187.45400691700002,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 15.694988036,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb": 56.424444699,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb": 69.98793122000001,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb": 47.768660694,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 69.965951869,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb": 29.011678497,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 9.344660726,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 65.26559089599999,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 27.244025476,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 32.014529209,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 20.068110387,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 67.337069478,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 22.587608685,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 53.449546747,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 171.14910748399998,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 35.743874052,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 31.223309247,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 27.375015555,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 66.960839159,
|
||||
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 38.562984764,
|
||||
"qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb": 37.026030479,
|
||||
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 80.57801924500001,
|
||||
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 131.481349437,
|
||||
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 13.047155732,
|
||||
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 62.834426385,
|
||||
"qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 2.3438559850000003,
|
||||
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 82.006404714,
|
||||
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 39.562657235,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 105.411032861,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/elasticsearch_api_spec.rb": 95.84806871400001,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/commit_index/commit_index_spec.rb": 31.44747142,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/issues_index/issue_index_spec.rb": 72.872250958,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/main_index/blob_index_spec.rb": 40.252409182,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb": 63.477970837,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/notes_index/note_index_spec.rb": 62.85925672,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 133.854524265,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 71.378891385,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 106.310033633,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/explain_this_vulnerability_spec.rb": 48.656577734,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb": 15.908063331,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 144.069410289,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb": 58.155441685,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 115.65698714400001,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb": 122.51110615500002,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 123.506448268,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb": 244.91917489399998,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 167.819808879,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 231.473886222,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 62.095760528,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 158.81351263,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_license_finding_spec.rb": 49.199501503,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 210.54865648499998,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 81.540982641,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 363.572918207,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb": 24.151715831,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb": 42.562710221,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 342.169147882,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 19.519817991,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 7.57460835,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 184.78561392999998,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 341.009588447,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 44.723411659,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 23.297850153,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 75.638407947,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 116.30680739,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 110.920330885,
|
||||
"qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 68.967794595,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 43.075428703,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/root_cause_analysis_with_duo_chat_spec.rb": 37.931425691,
|
||||
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 58.653198608000004,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 211.292243553,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 74.28075828,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 75.671017318,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 22.641035335,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 16.821151717,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 375.506600713,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 63.20070909,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 14.576608489,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 41.373198799,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 17.600620542,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 35.702110881,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 34.127026174,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 30.402700367,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 19.263109267,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 26.399046988,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 44.058644116,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 42.505086799,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 66.01471323000001,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 32.519977572,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 22.535067519,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 31.517568487,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 34.898537993,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 22.289509862,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 45.105684972999995,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.05453727,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 82.65206438300001,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 24.677114242,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 106.008473686,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 48.185280618,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 40.390914617,
|
||||
"qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 656.975314259,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 77.835283702,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 29.858441116,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/duo_chat_explain_code_spec.rb": 28.16854103,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 255.24311795800003,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 43.29283679,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 133.52674356,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 314.069409969,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 49.551448328,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 195.161257407,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 54.098731282,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 54.379182606,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 434.95902557700003,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 259.66672728500004,
|
||||
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 106.25856156900001,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 89.697462894,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 110.677573526,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 53.854234828,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 61.396500039,
|
||||
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 16.936613385,
|
||||
"qa/specs/features/ee/browser_ui/9_tenant_scale/group/share_group_with_group_spec.rb": 33.98725241
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ RSpec.describe 'Admin::Users::User', feature_category: :user_management, quarant
|
|||
end
|
||||
|
||||
it "displays `Locked` next to user's name" do
|
||||
expect(page).to have_content("#{locked_user.name} Locked")
|
||||
expect(page).to have_content("#{locked_user.name} #{locked_user.email} Locked")
|
||||
end
|
||||
|
||||
it 'allows a user to be unlocked from the `User administration dropdown', :js do
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ RSpec.describe 'Admin::Users', :with_current_organization, feature_category: :us
|
|||
let_it_be(:locked_user) { create(:user, locked_at: DateTime.parse('2020-02-25 10:30:00 -0700')) }
|
||||
|
||||
it "displays `Locked` badge next to user" do
|
||||
expect(page).to have_content("#{locked_user.name} Locked")
|
||||
expect(page).to have_content("#{locked_user.name} #{locked_user.email} Locked")
|
||||
end
|
||||
|
||||
it 'allows a user to be unlocked from the `User administration dropdown', :js do
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { shallowMount } from '@vue/test-utils';
|
|||
import { nextTick } from 'vue';
|
||||
import { visitUrl, getBaseURL } from '~/lib/utils/url_utility';
|
||||
import AdminUsersFilterApp from '~/admin/users/components/admin_users_filter_app.vue';
|
||||
import { TOKENS } from 'ee_else_ce/admin/users/constants';
|
||||
import { expectedTokens, expectedAccessLevelToken } from '../mock_data';
|
||||
|
||||
const mockToken = [
|
||||
{
|
||||
|
|
@ -12,8 +12,6 @@ const mockToken = [
|
|||
},
|
||||
];
|
||||
|
||||
const accessLevelToken = TOKENS.filter(({ type }) => type === 'access_level');
|
||||
|
||||
jest.mock('~/lib/utils/url_utility', () => {
|
||||
return {
|
||||
...jest.requireActual('~/lib/utils/url_utility'),
|
||||
|
|
@ -33,14 +31,8 @@ describe('AdminUsersFilterApp', () => {
|
|||
|
||||
it('includes all the tokens', () => {
|
||||
createComponent();
|
||||
const actualOptions = findAvailableTokens()
|
||||
.flatMap(({ options }) => options.map(({ value }) => value))
|
||||
.sort();
|
||||
const expectedOptions = TOKENS.flatMap(({ options }) =>
|
||||
options.map(({ value }) => value),
|
||||
).sort();
|
||||
|
||||
expect(actualOptions).toMatchObject(expectedOptions);
|
||||
expect(findAvailableTokens()).toMatchObject(expectedTokens);
|
||||
});
|
||||
|
||||
describe('when a token is selected', () => {
|
||||
|
|
@ -53,7 +45,7 @@ describe('AdminUsersFilterApp', () => {
|
|||
findFilteredSearch().vm.$emit('input', mockToken);
|
||||
await nextTick();
|
||||
|
||||
expect(findAvailableTokens()).toEqual(accessLevelToken);
|
||||
expect(findAvailableTokens()).toEqual([expectedAccessLevelToken]);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -68,7 +60,7 @@ describe('AdminUsersFilterApp', () => {
|
|||
]);
|
||||
await nextTick();
|
||||
|
||||
expect(findAvailableTokens()).toEqual(TOKENS);
|
||||
expect(findAvailableTokens()).toEqual(expectedTokens);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -81,7 +73,7 @@ describe('AdminUsersFilterApp', () => {
|
|||
window.history.replaceState({}, '', '/?filter=admins');
|
||||
createComponent();
|
||||
|
||||
expect(findAvailableTokens()).toEqual(accessLevelToken);
|
||||
expect(findAvailableTokens()).toEqual([expectedAccessLevelToken]);
|
||||
});
|
||||
|
||||
it('replace the initial token when another token is selected', async () => {
|
||||
|
|
@ -90,7 +82,7 @@ describe('AdminUsersFilterApp', () => {
|
|||
findFilteredSearch().vm.$emit('input', mockToken);
|
||||
await nextTick();
|
||||
|
||||
expect(findAvailableTokens()).toEqual(accessLevelToken);
|
||||
expect(findAvailableTokens()).toEqual([expectedAccessLevelToken]);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import { GlFilteredSearchToken } from '@gitlab/ui';
|
||||
import { range } from 'lodash';
|
||||
import { OPERATORS_IS } from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import { OBSTACLE_TYPES } from '~/vue_shared/components/user_deletion_obstacles/constants';
|
||||
import { SOLO_OWNED_ORGANIZATIONS_REQUESTED_COUNT } from '~/admin/users/constants';
|
||||
|
||||
|
|
@ -103,3 +105,68 @@ export const multipleWithExtrasSoloOwnedOrganizations = {
|
|||
count: 12,
|
||||
nodes: range(SOLO_OWNED_ORGANIZATIONS_REQUESTED_COUNT).map((index) => organization(index)),
|
||||
};
|
||||
|
||||
export const expectedAccessLevelToken = {
|
||||
title: 'Access level',
|
||||
type: 'access_level',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: IS_EE
|
||||
? [
|
||||
{ value: 'admins', title: 'Administrator' },
|
||||
{ value: 'auditors', title: 'Auditor' },
|
||||
{ value: 'external', title: 'External' },
|
||||
]
|
||||
: [
|
||||
{ value: 'admins', title: 'Administrator' },
|
||||
{ value: 'external', title: 'External' },
|
||||
],
|
||||
};
|
||||
|
||||
export const expectedTokens = [
|
||||
expectedAccessLevelToken,
|
||||
{
|
||||
title: 'State',
|
||||
type: 'state',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: [
|
||||
{ value: 'active', title: 'Active' },
|
||||
{ value: 'banned', title: 'Banned' },
|
||||
{ value: 'blocked', title: 'Blocked' },
|
||||
{ value: 'deactivated', title: 'Deactivated' },
|
||||
{ value: 'blocked_pending_approval', title: 'Pending approval' },
|
||||
{ value: 'trusted', title: 'Trusted' },
|
||||
{ value: 'wop', title: 'Without projects' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Two-factor authentication',
|
||||
type: '2fa',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: [
|
||||
{ value: 'two_factor_enabled', title: 'On' },
|
||||
{ value: 'two_factor_disabled', title: 'Off' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Type',
|
||||
type: 'type',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: [{ value: 'placeholder', title: 'Placeholder' }],
|
||||
},
|
||||
{
|
||||
title: 'LDAP sync',
|
||||
type: 'ldap_sync',
|
||||
token: GlFilteredSearchToken,
|
||||
operators: OPERATORS_IS,
|
||||
unique: true,
|
||||
options: [{ value: 'ldap_sync', title: 'True' }],
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ RSpec.describe UsersHelper, feature_category: :user_management do
|
|||
include TermsHelper
|
||||
|
||||
let_it_be(:user) { create(:user, timezone: ActiveSupport::TimeZone::MAPPING['UTC']) }
|
||||
let_it_be(:admin) { create(:admin) }
|
||||
|
||||
def filter_ee_badges(badges)
|
||||
badges.reject { |badge| badge[:text] == 'Is using seat' }
|
||||
|
|
@ -271,94 +272,70 @@ RSpec.describe UsersHelper, feature_category: :user_management do
|
|||
|
||||
describe '#user_badges_in_admin_section' do
|
||||
before do
|
||||
allow(helper).to receive(:current_user).and_return(user)
|
||||
allow(helper).to receive(:current_user).and_return(admin)
|
||||
end
|
||||
|
||||
subject(:badges) { filter_ee_badges(helper.user_badges_in_admin_section(user)) }
|
||||
|
||||
context 'with a blocked user' do
|
||||
it "returns the blocked badge" do
|
||||
blocked_user = create(:user, state: 'blocked')
|
||||
let(:user) { create(:user, state: 'blocked') }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(blocked_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("AdminUsers|Blocked"), variant: "danger"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_("AdminUsers|Blocked"), variant: "danger" }]) }
|
||||
end
|
||||
|
||||
context 'with a pending approval user' do
|
||||
it 'returns the pending approval badge' do
|
||||
blocked_pending_approval_user = create(:user, :blocked_pending_approval)
|
||||
let(:user) { create(:user, :blocked_pending_approval) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(blocked_pending_approval_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_('AdminUsers|Pending approval'), variant: 'info'])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_('AdminUsers|Pending approval'), variant: 'info' }]) }
|
||||
end
|
||||
|
||||
context 'with a banned user' do
|
||||
it 'returns the banned badge' do
|
||||
banned_user = create(:user, :banned)
|
||||
let(:user) { create(:user, :banned) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(banned_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_('AdminUsers|Banned'), variant: 'danger'])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_('AdminUsers|Banned'), variant: 'danger' }]) }
|
||||
end
|
||||
|
||||
context 'with an admin user' do
|
||||
it "returns the admin badge" do
|
||||
admin_user = create(:admin)
|
||||
let(:user) { create(:admin) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(admin_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("AdminUsers|Admin"), variant: "success"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_("AdminUsers|Admin"), variant: "success" }]) }
|
||||
end
|
||||
|
||||
context 'with a bot' do
|
||||
it "returns the bot badge" do
|
||||
bot = create(:user, :bot)
|
||||
let(:user) { create(:user, :bot) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(bot)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_('AdminUsers|Bot'), variant: "muted"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_('AdminUsers|Bot'), variant: "muted" }]) }
|
||||
end
|
||||
|
||||
context 'with a deactivated user' do
|
||||
it "returns the deactivated badge" do
|
||||
deactivated = create(:user, :deactivated)
|
||||
let(:user) { create(:user, :deactivated) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(deactivated)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_('AdminUsers|Deactivated'), variant: "danger"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_('AdminUsers|Deactivated'), variant: "danger" }]) }
|
||||
end
|
||||
|
||||
context 'with an external user' do
|
||||
it 'returns the external badge' do
|
||||
external_user = create(:user, external: true)
|
||||
let(:user) { create(:user, external: true) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(external_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("AdminUsers|External"), variant: "secondary"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_("AdminUsers|External"), variant: "secondary" }]) }
|
||||
end
|
||||
|
||||
context 'with the current user' do
|
||||
it 'returns the "It\'s You" badge' do
|
||||
badges = helper.user_badges_in_admin_section(user)
|
||||
let(:user) { admin }
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("AdminUsers|It's you!"), variant: "muted"])
|
||||
it "returns admin and it's you badges" do
|
||||
is_expected.to match_array(
|
||||
[
|
||||
{ text: s_("AdminUsers|Admin"), variant: "success" },
|
||||
{ text: s_("AdminUsers|It's you!"), variant: "muted" }
|
||||
])
|
||||
end
|
||||
end
|
||||
|
||||
context 'with an external blocked admin' do
|
||||
let(:user) { create(:admin, state: 'blocked', external: true) }
|
||||
|
||||
it 'returns the blocked, admin and external badges' do
|
||||
user = create(:admin, state: 'blocked', external: true)
|
||||
|
||||
badges = helper.user_badges_in_admin_section(user)
|
||||
|
||||
expect(badges).to match_array(
|
||||
is_expected.to match_array(
|
||||
[
|
||||
{ text: s_("AdminUsers|Blocked"), variant: "danger" },
|
||||
{ text: s_("AdminUsers|Admin"), variant: "success" },
|
||||
|
|
@ -368,33 +345,27 @@ RSpec.describe UsersHelper, feature_category: :user_management do
|
|||
end
|
||||
|
||||
context 'with a locked user', time_travel_to: '2020-02-25 10:30:45 -0700' do
|
||||
it 'returns the "Locked" badge' do
|
||||
locked_user = create(:user, locked_at: DateTime.parse('2020-02-25 10:30:00 -0700'))
|
||||
let(:user) { create(:user, locked_at: DateTime.parse('2020-02-25 10:30:00 -0700')) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(locked_user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("AdminUsers|Locked"), variant: "warning"])
|
||||
end
|
||||
it { is_expected.to match_array([{ text: s_("AdminUsers|Locked"), variant: "warning" }]) }
|
||||
end
|
||||
|
||||
context 'with a placeholder user' do
|
||||
it 'returns the "Placeholder" badge' do
|
||||
placeholder_user = create(:user, :placeholder)
|
||||
let(:user) { create(:user, :placeholder) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(placeholder_user)
|
||||
it { is_expected.to match_array([{ text: s_("UserMapping|Placeholder"), variant: "muted" }]) }
|
||||
end
|
||||
|
||||
expect(filter_ee_badges(badges)).to match_array([text: s_("UserMapping|Placeholder"), variant: "muted"])
|
||||
end
|
||||
context 'with an LDAP user' do
|
||||
let(:user) { create(:omniauth_user, provider: "ldapmain") }
|
||||
|
||||
it { is_expected.to match_array([{ text: 'LDAP', variant: 'info' }]) }
|
||||
end
|
||||
|
||||
context 'get badges for normal user' do
|
||||
it 'returns no badges' do
|
||||
user = create(:user)
|
||||
let(:user) { create(:user) }
|
||||
|
||||
badges = helper.user_badges_in_admin_section(user)
|
||||
|
||||
expect(filter_ee_badges(badges)).to be_empty
|
||||
end
|
||||
it { is_expected.to be_empty }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillResourceIterationEventsNamespaceId, feature_category: :team_planning do
|
||||
let(:resource_iteration_events) { table(:resource_iteration_events) }
|
||||
let(:iterations) { table(:sprints) }
|
||||
let(:organization) { table(:organizations).create!(name: 'organization', path: 'organization') }
|
||||
let(:namespace1) do
|
||||
table(:namespaces).create!(name: "group1", path: "group1", organization_id: organization.id)
|
||||
end
|
||||
|
||||
let(:namespace2) do
|
||||
table(:namespaces).create!(name: "group2", path: "group2", organization_id: organization.id)
|
||||
end
|
||||
|
||||
let(:fake_namespace) do
|
||||
# Can't create description_versions without a namespace in specs due to the invalid FK already created
|
||||
table(:namespaces).create!(id: 0, name: "fake", path: "fake", organization_id: organization.id)
|
||||
end
|
||||
|
||||
let(:iteration1) do
|
||||
iterations.create!(
|
||||
title: 'iteration1',
|
||||
group_id: namespace1.id, iid: 1,
|
||||
start_date: 1.day.ago,
|
||||
due_date: 1.day.from_now
|
||||
)
|
||||
end
|
||||
|
||||
let(:iteration2) do
|
||||
iterations.create!(
|
||||
title: 'iteration2',
|
||||
group_id: namespace2.id, iid: 1,
|
||||
start_date: 1.day.ago,
|
||||
due_date: 1.day.from_now
|
||||
)
|
||||
end
|
||||
|
||||
let(:issue_work_item_type_id) { table(:work_item_types).find_by(name: 'Issue').id }
|
||||
let(:issue) do
|
||||
table(:issues).create!(
|
||||
title: 'First issue',
|
||||
iid: 1,
|
||||
namespace_id: namespace1.id,
|
||||
work_item_type_id: issue_work_item_type_id
|
||||
)
|
||||
end
|
||||
|
||||
let(:user) { table(:users).create!(username: 'john_doe', email: 'johndoe@gitlab.com', projects_limit: 2) }
|
||||
|
||||
let!(:issue_resource_event1) do
|
||||
resource_iteration_events.create!(
|
||||
issue_id: issue.id,
|
||||
user_id: user.id,
|
||||
action: 1,
|
||||
iteration_id: iteration1.id,
|
||||
namespace_id: fake_namespace.id
|
||||
)
|
||||
end
|
||||
|
||||
let!(:issue_resource_event2) do
|
||||
resource_iteration_events.create!(
|
||||
issue_id: issue.id,
|
||||
user_id: user.id,
|
||||
action: 1,
|
||||
iteration_id: iteration1.id,
|
||||
namespace_id: fake_namespace.id
|
||||
)
|
||||
end
|
||||
|
||||
let!(:issue_resource_event3) do
|
||||
resource_iteration_events.create!(
|
||||
issue_id: issue.id,
|
||||
user_id: user.id,
|
||||
action: 1,
|
||||
iteration_id: iteration2.id,
|
||||
namespace_id: fake_namespace.id
|
||||
)
|
||||
end
|
||||
|
||||
let!(:issue_resource_event4) do
|
||||
resource_iteration_events.create!(
|
||||
issue_id: issue.id,
|
||||
user_id: user.id,
|
||||
action: 1,
|
||||
iteration_id: iteration2.id,
|
||||
namespace_id: fake_namespace.id
|
||||
)
|
||||
end
|
||||
|
||||
let(:migration) do
|
||||
start_id, end_id = resource_iteration_events.pick('MIN(id), MAX(id)')
|
||||
|
||||
described_class.new(
|
||||
start_id: start_id,
|
||||
end_id: end_id,
|
||||
batch_table: :resource_iteration_events,
|
||||
batch_column: :id,
|
||||
sub_batch_size: 2,
|
||||
pause_ms: 0,
|
||||
job_arguments: [],
|
||||
connection: ApplicationRecord.connection
|
||||
)
|
||||
end
|
||||
|
||||
subject(:migrate) { migration.perform }
|
||||
|
||||
describe '#up' do
|
||||
it 'updates records in batches' do
|
||||
expect do
|
||||
migrate
|
||||
end.to make_queries_matching(/UPDATE\s+"resource_iteration_events"/, 2)
|
||||
end
|
||||
|
||||
it 'sets correct namespace_id in every record' do
|
||||
expect { migrate }.to change { issue_resource_event1.reload.namespace_id }.from(0).to(namespace1.id).and(
|
||||
change { issue_resource_event2.reload.namespace_id }.from(0).to(namespace1.id)
|
||||
).and(
|
||||
change { issue_resource_event3.reload.namespace_id }.from(0).to(namespace2.id)
|
||||
).and(
|
||||
change { issue_resource_event4.reload.namespace_id }.from(0).to(namespace2.id)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -54,7 +54,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'repository_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -74,7 +73,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'remote_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -95,7 +93,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'external_project_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -116,7 +113,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'external_project_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -144,7 +140,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'repository_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -177,7 +172,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'repository_source'
|
||||
expect(pipeline.pipeline_config).to be_nil
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
expect(command.pipeline_config.inputs_for_pipeline_creation).to eq({})
|
||||
|
|
@ -203,7 +197,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'auto_devops_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(config_content_result)
|
||||
expect(command.config_content).to eq(config_content_result)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(true)
|
||||
end
|
||||
|
|
@ -224,7 +217,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'parameter_source'
|
||||
expect(pipeline.pipeline_config.content).to eq(content)
|
||||
expect(command.config_content).to eq(content)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(false)
|
||||
end
|
||||
|
|
@ -244,7 +236,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq 'parameter_source'
|
||||
expect(pipeline.pipeline_config).to be_nil
|
||||
expect(command.config_content).to eq(content)
|
||||
expect(command.pipeline_config.internal_include_prepended?).to eq(false)
|
||||
expect(command.pipeline_config.inputs_for_pipeline_creation).to eq(inputs)
|
||||
|
|
@ -263,7 +254,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: :
|
|||
subject.perform!
|
||||
|
||||
expect(pipeline.config_source).to eq('unknown_source')
|
||||
expect(pipeline.pipeline_config).to be_nil
|
||||
expect(command.config_content).to be_nil
|
||||
expect(command.pipeline_config).to be_nil
|
||||
expect(pipeline.errors.full_messages).to include('Missing CI config file')
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do
|
|||
"ai_duo_chat_events" => "https://gitlab.com/gitlab-org/gitlab/-/issues/516140",
|
||||
"fork_networks" => "https://gitlab.com/gitlab-org/gitlab/-/issues/522958",
|
||||
"merge_request_diff_commit_users" => "https://gitlab.com/gitlab-org/gitlab/-/issues/526725",
|
||||
"bulk_import_configurations" => "https://gitlab.com/gitlab-org/gitlab/-/issues/536521",
|
||||
# All the tables below related to uploads are part of the same work to
|
||||
# add sharding key to the table
|
||||
"uploads" => "https://gitlab.com/gitlab-org/gitlab/-/issues/398199",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe QueueBackfillResourceIterationEventsNamespaceId, migration: :gitlab_main, feature_category: :team_planning do
|
||||
let!(:batched_migration) { described_class::MIGRATION }
|
||||
|
||||
it 'schedules a new batched migration' do
|
||||
reversible_migration do |migration|
|
||||
migration.before -> {
|
||||
expect(batched_migration).not_to have_scheduled_batched_migration
|
||||
}
|
||||
|
||||
migration.after -> {
|
||||
expect(batched_migration).to have_scheduled_batched_migration(
|
||||
gitlab_schema: :gitlab_main,
|
||||
table_name: :resource_iteration_events,
|
||||
column_name: :id,
|
||||
interval: described_class::DELAY_INTERVAL,
|
||||
batch_size: described_class::BATCH_SIZE,
|
||||
sub_batch_size: described_class::SUB_BATCH_SIZE
|
||||
)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -3292,6 +3292,7 @@ RSpec.describe User, feature_category: :user_profile do
|
|||
:without_projects | 'wop'
|
||||
:trusted | 'trusted'
|
||||
:external | 'external'
|
||||
:ldap | 'ldap_sync'
|
||||
end
|
||||
|
||||
with_them do
|
||||
|
|
@ -8803,6 +8804,19 @@ RSpec.describe User, feature_category: :user_profile do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.ldap' do
|
||||
subject(:ldap) { described_class.ldap }
|
||||
|
||||
let_it_be(:ldap_user) { create(:omniauth_user, provider: "ldapmain") }
|
||||
let_it_be(:gitlab_user) { create(:omniauth_user, provider: "gitlab") }
|
||||
let_it_be(:regular_user) { create(:user) }
|
||||
|
||||
it 'returns LDAP users' do
|
||||
expect(ldap).to include(ldap_user)
|
||||
expect(ldap).not_to include(gitlab_user, regular_user)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#unset_secondary_emails_matching_deleted_email!' do
|
||||
let(:deleted_email) { 'kermit@muppets.com' }
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ RSpec.describe Admin::UsersController, :enable_admin_mode, feature_category: :us
|
|||
sign_in(admin)
|
||||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
it 'avoids N+1 query', :use_sql_query_cache do
|
||||
base_query_count = ActiveRecord::QueryRecorder.new(skip_cached: false) { get admin_users_path }
|
||||
|
||||
create_list(:user, 3)
|
||||
|
||||
expect { get admin_users_path }.not_to exceed_query_limit(base_query_count)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #update' do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
|
|
|
|||
|
|
@ -158,11 +158,6 @@ RSpec.describe Ci::CreatePipelineService, :clean_gitlab_redis_cache, feature_cat
|
|||
execute_service
|
||||
end
|
||||
|
||||
it 'creates pipeline_config' do
|
||||
expect { execute_service }
|
||||
.to change { Ci::PipelineConfig.count }.by(1)
|
||||
end
|
||||
|
||||
context 'when merge requests already exist for this source branch' do
|
||||
let!(:merge_request_1) do
|
||||
create(:merge_request, source_branch: 'feature', target_branch: "master", source_project: project)
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ module Database
|
|||
Thread.current[:has_cross_join_exception] = true
|
||||
raise CrossJoinAcrossUnsupportedTablesError,
|
||||
"Unsupported cross-join across '#{tables.join(', ')}' querying '#{schemas.to_a.join(', ')}' discovered " \
|
||||
"when executing query '#{sql}'. Please refer to https://docs.gitlab.com/ee/development/database/multiple_databases.html#removing-joins-between-ci_-and-non-ci_-tables for details on how to resolve this exception."
|
||||
"when executing query '#{sql}'. Please refer to https://docs.gitlab.com/ee/development/database/multiple_databases.html#removing-joins-between-main_-and-non-main_-tables for details on how to resolve this exception."
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -112,6 +112,32 @@ RSpec.shared_examples 'handle uploads' do
|
|||
|
||||
expect(response.headers['Content-Type']).to eq('application/octet-stream')
|
||||
end
|
||||
|
||||
it 'sets the :html request format' do
|
||||
get :show, params: params.merge(secret: secret, filename: filename)
|
||||
|
||||
expect(response.request.format.symbol).to eq(:html)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the upload has a MIME type that Rails knows' do
|
||||
let(:filename) { 'image.png' }
|
||||
|
||||
it 'sets the correct request format' do
|
||||
get :show, params: params.merge(secret: secret, filename: filename)
|
||||
|
||||
expect(response.request.format.symbol).to eq(:png)
|
||||
end
|
||||
|
||||
context 'when the upload is a JS file' do
|
||||
let(:filename) { 'axios.min.js' }
|
||||
|
||||
it 'sets the :text request format' do
|
||||
get :show, params: params.merge(secret: secret, filename: filename)
|
||||
|
||||
expect(response.request.format.symbol).to eq(:text)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when the model is public" do
|
||||
|
|
|
|||
Loading…
Reference in New Issue