Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2020-08-31 12:10:39 +00:00
parent de0c73ffc5
commit 729eabcb41
128 changed files with 627 additions and 250 deletions

View File

@ -1,5 +1,6 @@
import { deprecatedCreateFlash as flash } from '~/flash';
import { s__, sprintf } from '~/locale';
import { differenceInMilliseconds } from '~/lib/utils/datetime_utility';
// Renders math using KaTeX in any element with the
// `js-render-math` class
@ -111,7 +112,7 @@ class SafeMathRenderer {
// Give the browser time to reflow the svg
waitForReflow(() => {
const deltaTime = Date.now() - this.startTime;
const deltaTime = differenceInMilliseconds(this.startTime);
this.totalMS += deltaTime;
this.renderElement();

View File

@ -216,8 +216,9 @@ export const timeFor = (time, expiredLabel) => {
return timeago.format(time, `${timeagoLanguageCode}-remaining`).trim();
};
export const millisecondsPerDay = 1000 * 60 * 60 * 24;
export const getDayDifference = (a, b) => {
const millisecondsPerDay = 1000 * 60 * 60 * 24;
const date1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
const date2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
@ -709,7 +710,7 @@ export const dateFromParams = (year, month, day) => {
* A utility function which computes the difference in seconds
* between 2 dates.
*
* @param {Date} startDate the start sate
* @param {Date} startDate the start date
* @param {Date} endDate the end date
*
* @return {Int} the difference in seconds
@ -717,3 +718,18 @@ export const dateFromParams = (year, month, day) => {
export const differenceInSeconds = (startDate, endDate) => {
return (endDate.getTime() - startDate.getTime()) / 1000;
};
/**
* A utility function which computes the difference in milliseconds
* between 2 dates.
*
* @param {Date|Int} startDate the start date. Can be either a date object or a unix timestamp.
* @param {Date|Int} endDate the end date. Can be either a date object or a unix timestamp. Defaults to now.
*
* @return {Int} the difference in milliseconds
*/
export const differenceInMilliseconds = (startDate, endDate = Date.now()) => {
const startDateInMS = startDate instanceof Date ? startDate.getTime() : startDate;
const endDateInMS = endDate instanceof Date ? endDate.getTime() : endDate;
return endDateInMS - startDateInMS;
};

View File

@ -1,10 +1,12 @@
import { differenceInMilliseconds } from '~/lib/utils/datetime_utility';
export default (fn, { interval = 2000, timeout = 60000 } = {}) => {
const startTime = Date.now();
return new Promise((resolve, reject) => {
const stop = arg => (arg instanceof Error ? reject(arg) : resolve(arg));
const next = () => {
if (timeout === 0 || Date.now() - startTime < timeout) {
if (timeout === 0 || differenceInMilliseconds(startTime) < timeout) {
setTimeout(fn.bind(null, next, stop), interval);
} else {
reject(new Error('SIMPLE_POLL_TIMEOUT'));

View File

@ -1,7 +1,7 @@
<script>
import { get } from 'lodash';
import { mapActions, mapState, mapGetters } from 'vuex';
import { GlCard, GlDeprecatedButton, GlLoadingIcon } from '@gitlab/ui';
import { GlCard, GlButton, GlLoadingIcon } from '@gitlab/ui';
import Tracking from '~/tracking';
import { mapComputed } from '~/vuex_shared/bindings';
import {
@ -14,7 +14,7 @@ import { SET_CLEANUP_POLICY_BUTTON, CLEANUP_POLICY_CARD_HEADER } from '../consta
export default {
components: {
GlCard,
GlDeprecatedButton,
GlButton,
GlLoadingIcon,
ExpirationPolicyFields,
},
@ -104,24 +104,25 @@ export default {
</template>
<template #footer>
<div class="gl-display-flex gl-justify-content-end">
<gl-deprecated-button
<gl-button
ref="cancel-button"
type="reset"
class="gl-mr-3 gl-display-block"
:disabled="isCancelButtonDisabled"
>
{{ __('Cancel') }}
</gl-deprecated-button>
<gl-deprecated-button
</gl-button>
<gl-button
ref="save-button"
type="submit"
:disabled="isSubmitButtonDisabled"
variant="success"
category="primary"
class="gl-display-flex gl-justify-content-center gl-align-items-center js-no-auto-disable"
>
{{ $options.i18n.SET_CLEANUP_POLICY_BUTTON }}
<gl-loading-icon v-if="isLoading" class="gl-ml-3" />
</gl-deprecated-button>
</gl-button>
</div>
</template>
</gl-card>

View File

@ -2,18 +2,20 @@
module Mutations
module Ci
class PipelineCancel < BaseMutation
class PipelineCancel < Base
graphql_name 'PipelineCancel'
authorize :update_pipeline
def resolve
result = ::Ci::CancelUserPipelinesService.new.execute(current_user)
def resolve(id:)
pipeline = authorized_find!(id: id)
{
success: result.success?,
errors: [result&.message]
}
if pipeline.cancelable?
pipeline.cancel_running
{ success: true, errors: [] }
else
{ success: false, errors: ['Pipeline is not cancelable'] }
end
end
end
end

View File

@ -11,7 +11,7 @@
= s_('AdminSettings|Try using the latest version of Integrations instead.')
.gl-alert-actions
= link_to _('Go to Integrations'), integrations_admin_application_settings_path, class: 'btn btn-info gl-alert-action gl-button'
= link_to _('Learn more'), help_page_path('user/admin_area/settings/project_integration_management'), class: 'btn gl-alert-action btn-secondary gl-button', target: '_blank', rel: 'noopener noreferrer'
= link_to _('Learn more'), help_page_path('user/admin_area/settings/project_integration_management'), class: 'btn btn-default gl-alert-action btn-secondary gl-button', target: '_blank', rel: 'noopener noreferrer'
%h3.page-title Service templates
%p.light= s_('AdminSettings|Service template allows you to set default values for integrations')

View File

@ -135,10 +135,12 @@
%img.modal-profile-crop-image{ alt: s_("Profiles|Avatar cropper") }
.crop-controls
.btn-group
%button.btn.btn-primary{ data: { method: 'zoom', option: '0.1' } }
%span.fa.fa-search-plus
%button.btn.btn-primary{ data: { method: 'zoom', option: '-0.1' } }
%span.fa.fa-search-minus
%span
= sprite_icon('search-minus')
%button.btn.btn-primary{ data: { method: 'zoom', option: '0.1' } }
%span
= sprite_icon('search-plus')
.modal-footer
%button.btn.btn-primary.js-upload-user-avatar{ type: 'button' }
= s_("Profiles|Set new profile picture")

View File

@ -0,0 +1,5 @@
---
title: Replace fa-search-* icons with GitLab SVG icons
merge_request: 40580
author:
type: changed

View File

@ -0,0 +1,5 @@
---
title: Stricter default timeouts for outgoing HTTP requests
merge_request: 39188
author:
type: other

View File

@ -0,0 +1,5 @@
---
title: Create IssueLink for Vulnerabilities that do not have them
merge_request: 40726
author:
type: fixed

View File

@ -0,0 +1,5 @@
---
title: Add Conan lock file support to Dependency Scanning
merge_request: 39811
author:
type: added

View File

@ -0,0 +1,5 @@
---
title: Add issue importers usage pings (FogBugz, Phabricator, Jira)
merge_request: 40382
author:
type: added

View File

@ -0,0 +1,5 @@
---
title: 'GraphQL: Updates PipelineCancel mutation'
merge_request: 40764
author:
type: changed

View File

@ -0,0 +1,5 @@
---
title: Migrating setup policy button in registry settings
merge_request: 40668
author:
type: changed

View File

@ -0,0 +1,5 @@
---
title: Add warning to stop Puma and Sidekiq when restoring from backup
merge_request: 40791
author:
type: other

View File

@ -0,0 +1,48 @@
# frozen_string_literal: true
class CreateMissingVulnerabilitiesIssueLinks < ActiveRecord::Migration[6.0]
class VulnerabilitiesFeedback < ActiveRecord::Base
include EachBatch
self.table_name = 'vulnerability_feedback'
end
class VulnerabilitiesIssueLink < ActiveRecord::Base
self.table_name = 'vulnerability_issue_links'
LINK_TYPE_CREATED = 2
end
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
VulnerabilitiesFeedback.where('issue_id IS NOT NULL').each_batch do |relation|
timestamp = Time.now
issue_links = relation
.joins("JOIN vulnerability_occurrences vo ON vo.project_id = vulnerability_feedback.project_id AND vo.report_type = vulnerability_feedback.category AND encode(vo.project_fingerprint, 'hex') = vulnerability_feedback.project_fingerprint")
.where('vo.vulnerability_id IS NOT NULL')
.pluck(:vulnerability_id, :issue_id)
.map do |v_id, i_id|
{
vulnerability_id: v_id,
issue_id: i_id,
link_type: VulnerabilitiesIssueLink::LINK_TYPE_CREATED,
created_at: timestamp,
updated_at: timestamp
}
end
next if issue_links.empty?
VulnerabilitiesIssueLink.insert_all(
issue_links,
returning: false
)
end
end
def down
end
end

View File

@ -0,0 +1,30 @@
# frozen_string_literal: true
class UpdateLocationFingerprintForCsFindings < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
BATCH_SIZE = 1_000
INTERVAL = 2.minutes
# 815_565 records
def up
return unless Gitlab.ee?
migration = Gitlab::BackgroundMigration::UpdateLocationFingerprintForCsFindings
migration_name = migration.to_s.demodulize
relation = migration::Finding.container_scanning
queue_background_migration_jobs_by_range_at_intervals(relation,
migration_name,
INTERVAL,
batch_size: BATCH_SIZE)
end
def down
# no-op
# intentionally blank
end
end

View File

@ -0,0 +1 @@
e8fc0809b5bd3248dc625602deeaaef16e2db6b33d8eaf51fdcc1c67dee49e17

View File

@ -0,0 +1 @@
e24f8495b7458ce57e148017ef6cae901e7f3997fca247afeff524a43e739431

View File

@ -10656,6 +10656,11 @@ input PipelineCancelInput {
A unique identifier for the client performing the mutation.
"""
clientMutationId: String
"""
The id of the pipeline to mutate
"""
id: CiPipelineID!
}
"""

View File

@ -31967,6 +31967,20 @@
"description": "Autogenerated input type of PipelineCancel",
"fields": null,
"inputFields": [
{
"name": "id",
"description": "The id of the pipeline to mutate",
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "CiPipelineID",
"ofType": null
}
},
"defaultValue": null
},
{
"name": "clientMutationId",
"description": "A unique identifier for the client performing the mutation.",

View File

@ -152,17 +152,20 @@ The CI/CD YAML configuration example above works for testing against static envi
but it can be extended to work with [review apps](../../../ci/review_apps) or
[dynamic environments](../../../ci/environments) with a few extra steps.
The best approach is to capture the dynamic URL into a custom environment variable that
is then [inherited](../../../ci/variables/README.md#inherit-environment-variables)
by the `load_performance` job. The k6 test script to be run should then be configured to
use that environment URL, such as: ``http.get(`${__ENV.ENVIRONMENT_URL`})``.
The best approach is to capture the dynamic URL in a [`.env` file](https://docs.docker.com/compose/env-file/)
as a job artifact to be shared, then use a custom environment variable we've provided named `K6_DOCKER_OPTIONS`
to configure the k6 Docker container to use the file. With this, k6 can then use any
environment variables from the `.env` file in scripts using standard JavaScript,
such as: ``http.get(`${__ENV.ENVIRONMENT_URL`})``.
For example:
1. In the `review` job:
1. Capture the dynamic URL and save it into a `.env` file, e.g. `echo "ENVIRONMENT_URL=$CI_ENVIRONMENT_URL" >> review.env`.
1. Set the `.env` file to be an [`artifacts:reports:dotenv` report](../../../ci/variables/README.md#inherit-environment-variables).
1. Set the `load_performance` job to depend on the review job, so it inherits the environment variable.
1. Capture the dynamic URL and save it into a `.env` file, e.g. `echo "ENVIRONMENT_URL=$CI_ENVIRONMENT_URL" >> review.env`.
1. Set the `.env` file to be a [job artifact](../../../ci/pipelines/job_artifacts.md#job-artifacts).
1. In the `load_performance` job:
1. Set it to depend on the review job, so it inherits the env file.
1. Set the `K6_DOCKER_OPTIONS` variable with the [Docker cli option for env files](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file), for example `--env-file review.env`.
1. Configure the k6 test script to use the environment variable in it's steps.
Your `.gitlab-ci.yml` file might be similar to:
@ -184,15 +187,16 @@ review:
- run_deploy_script
- echo "ENVIRONMENT_URL=$CI_ENVIRONMENT_URL" >> review.env
artifacts:
reports:
dotenv:
review.env
paths:
- review.env
rules:
- if: '$CI_COMMIT_BRANCH' # Modify to match your pipeline rules, or use `only/except` if needed.
load_performance:
dependencies:
- review
variables:
K6_DOCKER_OPTIONS: '--env-file review.env'
rules:
- if: '$CI_COMMIT_BRANCH' # Modify to match your pipeline rules, or use `only/except` if needed.
```

View File

@ -0,0 +1,13 @@
# frozen_string_literal: true
# rubocop:disable Style/Documentation
module Gitlab
module BackgroundMigration
class UpdateLocationFingerprintForCsFindings
def perform(start_id, stop_id)
end
end
end
end
Gitlab::BackgroundMigration::UpdateLocationFingerprintForCsFindings.prepend_if_ee('EE::Gitlab::BackgroundMigration::UpdateLocationFingerprintForCsFindings')

View File

@ -8,6 +8,7 @@ load_performance:
K6_VERSION: 0.27.0
K6_TEST_FILE: github.com/loadimpact/k6/samples/http_get.js
K6_OPTIONS: ''
K6_DOCKER_OPTIONS: ''
services:
- docker:19.03.11-dind
script:
@ -17,7 +18,7 @@ load_performance:
export DOCKER_HOST='tcp://localhost:2375'
fi
fi
- docker run --rm -v "$(pwd)":/k6 -w /k6 $K6_IMAGE:$K6_VERSION run $K6_TEST_FILE --summary-export=load-performance.json $K6_OPTIONS
- docker run --rm -v "$(pwd)":/k6 -w /k6 $K6_DOCKER_OPTIONS $K6_IMAGE:$K6_VERSION run $K6_TEST_FILE --summary-export=load-performance.json $K6_OPTIONS
artifacts:
reports:
load_performance: load-performance.json

View File

@ -114,6 +114,7 @@ gemnasium-dependency_scanning:
- '{package-lock.json,*/package-lock.json,*/*/package-lock.json}'
- '{yarn.lock,*/yarn.lock,*/*/yarn.lock}'
- '{packages.lock.json,*/packages.lock.json,*/*/packages.lock.json}'
- '{conan.lock,*/conan.lock,*/*/conan.lock}'
gemnasium-maven-dependency_scanning:
extends: .ds-analyzer

View File

@ -14,10 +14,11 @@ load_performance:
K6_VERSION: 0.27.0
K6_TEST_FILE: github.com/loadimpact/k6/samples/http_get.js
K6_OPTIONS: ''
K6_DOCKER_OPTIONS: ''
services:
- docker:stable-dind
script:
- docker run --rm -v "$(pwd)":/k6 -w /k6 $K6_IMAGE:$K6_VERSION run $K6_TEST_FILE --summary-export=load-performance.json $K6_OPTIONS
- docker run --rm -v "$(pwd)":/k6 -w /k6 $K6_DOCKER_OPTIONS $K6_IMAGE:$K6_VERSION run $K6_TEST_FILE --summary-export=load-performance.json $K6_OPTIONS
artifacts:
reports:
load_performance: load-performance.json

View File

@ -35,7 +35,7 @@ module Gitlab
def self.perform_request(http_method, path, options, &block)
log_info = options.delete(:extra_log_info)
options_with_timeouts =
if !options.has_key?(:timeout) && Feature.enabled?(:http_default_timeouts)
if !options.has_key?(:timeout)
options.with_defaults(DEFAULT_TIMEOUT_OPTIONS)
else
options

View File

@ -524,6 +524,11 @@ module Gitlab
gitea: projects_imported_count('gitea', time_period),
git: projects_imported_count('git', time_period),
manifest: projects_imported_count('manifest', time_period)
},
issues_imported: {
jira: distinct_count(::JiraImportState.where(time_period), :user_id),
fogbugz: projects_imported_count('fogbugz', time_period),
phabricator: projects_imported_count('phabricator', time_period)
}
}
end

View File

@ -16,6 +16,11 @@
category: compliance
redis_slot: compliance
aggregation: weekly
- name: i_compliance_audit_events_api
category: compliance
redis_slot: compliance
expiry: 42
aggregation: weekly
# Analytics category
- name: g_analytics_contribution
category: analytics

View File

@ -47,6 +47,11 @@ namespace :gitlab do
begin
unless ENV['force'] == 'yes'
warning = <<-MSG.strip_heredoc
Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations
Before restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be

View File

@ -18,7 +18,7 @@ module QA
attr_reader :api_resource, :api_response
attr_writer :api_client
attr_accessor :user
attr_accessor :api_user
def api_support?
respond_to?(:api_get_path) &&
@ -120,7 +120,7 @@ module QA
def api_client
@api_client ||= begin
Runtime::API::Client.new(:gitlab, is_new_session: !current_url.start_with?('http'), user: user)
Runtime::API::Client.new(:gitlab, is_new_session: !current_url.start_with?('http'), user: api_user)
end
end

View File

@ -73,7 +73,7 @@ module QA
def api_post_body
{
namespace: user.username,
namespace_path: user.username,
name: name,
path: name
}

View File

@ -9,7 +9,6 @@ module QA
attribute :sandbox do
Sandbox.fabricate_via_api! do |sandbox|
sandbox.user = user
sandbox.api_client = api_client
end
end

View File

@ -148,7 +148,7 @@ module QA
end
def fetching_own_data?
user&.username == username || Runtime::User.username == username
api_user&.username == username || Runtime::User.username == username
end
end
end

View File

@ -8,7 +8,7 @@ module QA
let(:api_client) { Runtime::API::Client.new(:gitlab, ip_limits: true) }
let(:request) { Runtime::API::Request.new(api_client, '/users') }
it 'GET /users', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/441' do
it 'GET /users', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/441' do
5.times do
get request.url
expect_status(200)

View File

@ -8,13 +8,13 @@ module QA
let(:api_client) { Runtime::API::Client.new(:gitlab) }
let(:request) { Runtime::API::Request.new(api_client, '/users') }
it 'GET /users', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/460' do
it 'GET /users', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/460' do
get request.url
expect_status(200)
end
it 'GET /users/:username with a valid username', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/480' do
it 'GET /users/:username with a valid username', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/480' do
get request.url, { params: { username: Runtime::User.username } }
expect_status(200)
@ -23,7 +23,7 @@ module QA
)
end
it 'GET /users/:username with an invalid username', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/462' do
it 'GET /users/:username with an invalid username', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/462' do
get request.url, { params: { username: SecureRandom.hex(10) } }
expect_status(200)

View File

@ -22,7 +22,7 @@ module QA
push_commit('Initial commit')
end
it 'closes via pushing a commit', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/423' do
it 'closes via pushing a commit', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/423' do
push_commit("Closes ##{issue_id}", false)
Support::Retrier.retry_until(max_duration: 10, sleep_interval: 1) do

View File

@ -28,7 +28,7 @@ module QA
praefect_manager.reset_primary_to_original
end
it 'automatically fails over', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/976' do
it 'automatically fails over', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/976' do
# Create a new project with a commit and wait for it to replicate
Resource::Repository::ProjectPush.fabricate! do |push|
push.project = project
@ -66,7 +66,7 @@ module QA
end
context 'when recovering from dataloss after failover' do
it 'allows reconciliation', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/238187', type: :stale }, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/977' do
it 'allows reconciliation', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/238187', type: :stale }, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/977' do
# Start the old primary node again
praefect_manager.start_primary_node
praefect_manager.wait_for_health_check_current_primary_node

View File

@ -22,7 +22,7 @@ module QA
praefect_manager.reset_primary_to_original
end
it 'recovers from dataloss', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/238186', type: :investigating }, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/978' do
it 'recovers from dataloss', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/238186', type: :investigating }, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/978' do
# Create a new project with a commit and wait for it to replicate
praefect_manager.wait_for_replication(project.id)

View File

@ -25,7 +25,7 @@ module QA
end
end
context 'when moving from one Gitaly storage to another', :orchestrated, :repository_storage, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/973' do
context 'when moving from one Gitaly storage to another', :orchestrated, :repository_storage, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/973' do
let(:source_storage) { { type: :gitaly, name: 'default' } }
let(:destination_storage) { { type: :gitaly, name: QA::Runtime::Env.additional_repository_storage } }
@ -43,7 +43,7 @@ module QA
# Note: This test doesn't have the :orchestrated tag because it runs in the Test::Integration::Praefect
# scenario with other tests that aren't considered orchestrated.
# It also runs on staging using nfs-file07 as non-cluster storage and nfs-file22 as cluster/praefect storage
context 'when moving from Gitaly to Gitaly Cluster', :requires_praefect, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/974' do
context 'when moving from Gitaly to Gitaly Cluster', :requires_praefect, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/974' do
let(:source_storage) { { type: :gitaly, name: QA::Runtime::Env.non_cluster_repository_storage } }
let(:destination_storage) { { type: :praefect, name: QA::Runtime::Env.praefect_repository_storage } }

View File

@ -25,7 +25,7 @@ module QA
Runtime::Feature.disable_and_verify('gitaly_distributed_reads')
end
it 'reads from each node', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/979' do
it 'reads from each node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/979' do
pre_read_data = praefect_manager.query_read_distribution
wait_for_reads_to_increase(project, number_of_reads_per_loop, pre_read_data)
@ -53,7 +53,7 @@ module QA
praefect_manager.wait_for_reliable_connection
end
it 'does not read from the unhealthy node', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/980' do
it 'does not read from the unhealthy node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/980' do
pre_read_data = praefect_manager.query_read_distribution
read_from_project(project, number_of_reads_per_loop * 10)

View File

@ -19,7 +19,7 @@ module QA
praefect_manager.clear_replication_queue
end
it 'allows replication of different repository after interruption', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/975' do
it 'allows replication of different repository after interruption', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/975' do
# We want to fill the replication queue with 10 `in_progress` jobs,
# while a lock has been acquired, which is when the problem occurred
# as reported in https://gitlab.com/gitlab-org/gitaly/-/issues/2801

View File

@ -12,7 +12,7 @@ module QA
let(:project_name) { "api-basics-#{SecureRandom.hex(8)}" }
let(:sanitized_project_path) { CGI.escape("#{Runtime::User.username}/#{project_name}") }
it 'user creates a project with a file and deletes them afterwards', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/420' do
it 'user creates a project with a file and deletes them afterwards', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/420' do
create_project_request = Runtime::API::Request.new(@api_client, '/projects')
post create_project_request.url, path: project_name, name: project_name
@ -76,7 +76,7 @@ module QA
SVG
end
it 'sets no-cache headers as expected', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/421' do
it 'sets no-cache headers as expected', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/421' do
create_project_request = Runtime::API::Request.new(@api_client, '/projects')
post create_project_request.url, path: project_name, name: project_name

View File

@ -28,7 +28,7 @@ module QA
end
end
it 'download archives of each user project then check they are different', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/427' do
it 'download archives of each user project then check they are different', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/427' do
archive_checksums = {}
users.each do |user_key, user_info|
@ -51,7 +51,6 @@ module QA
project.add_name_uuid = false
project.name = project_name
project.path_with_namespace = "#{user.username}/#{project_name}"
project.user = user
project.api_client = api_client
end

View File

@ -59,7 +59,7 @@ module QA
end
context 'when deleted via API' do
it 'is not found', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/931' do
it 'is not found', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/931' do
delete(pipeline_data_request.url)
expect(JSON.parse(get(pipeline_data_request.url))['message'].downcase).to have_content('404 not found')
end

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Configure', :orchestrated, :mattermost do
describe 'Mattermost support' do
it 'user creates a group with a mattermost team', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/665' do
it 'user creates a group with a mattermost team', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/665' do
Flow::Login.sign_in
Page::Main::Menu.perform(&:go_to_groups)

View File

@ -43,7 +43,7 @@ module QA
end
end
it 'user transfers a project between groups', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/406' do
it 'user transfers a project between groups', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/406' do
Page::File::Show.perform(&:go_to_general_settings)
Page::Project::Settings::Main.perform(&:expand_advanced_settings)

View File

@ -32,7 +32,7 @@ module QA
group.add_member(developer_user, Resource::Members::AccessLevel::DEVELOPER)
end
it 'allows using 2FA recovery code once only', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/972' do
it 'allows using 2FA recovery code once only', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/972' do
recovery_code = enable_2fa_for_user_and_fetch_recovery_code(developer_user)
Flow::Login.sign_in(as: developer_user, skip_page_validation: true)

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :smoke do
describe 'basic user login' do
it 'user logs in using basic credentials and logs out', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/424' do
it 'user logs in using basic credentials and logs out', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/424' do
Flow::Login.sign_in
Page::Main::Menu.perform do |menu|

View File

@ -34,7 +34,7 @@ module QA
group.add_member(developer_user, Resource::Members::AccessLevel::DEVELOPER)
end
it 'allows enforcing 2FA via UI and logging in with 2FA', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/898' do
it 'allows enforcing 2FA via UI and logging in with 2FA', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/898' do
enforce_two_factor_authentication_on_group(group)
enable_two_factor_authentication_for_user(developer_user)

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :orchestrated, :ldap_no_tls, :ldap_tls do
describe 'LDAP login' do
it 'user logs into GitLab using LDAP credentials', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/668' do
it 'user logs into GitLab using LDAP credentials', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/668' do
Flow::Login.sign_in
Page::Main::Menu.perform do |menu|

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :orchestrated, :mattermost do
describe 'Mattermost login' do
it 'user logs into Mattermost using GitLab OAuth', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/666' do
it 'user logs into Mattermost using GitLab OAuth', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/666' do
Flow::Login.sign_in
Support::Retrier.retry_on_exception do

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :orchestrated, :instance_saml do
describe 'Instance wide SAML SSO' do
it 'User logs in to gitlab with SAML SSO', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/671' do
it 'User logs in to gitlab with SAML SSO', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/671' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_with_saml)

View File

@ -14,7 +14,7 @@ module QA
end
RSpec.describe 'Manage', :skip_signup_disabled do
describe 'standard', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/936' do
describe 'standard', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/936' do
it_behaves_like 'registration and login'
context 'when user account is deleted', :requires_admin do
@ -36,7 +36,7 @@ module QA
end
end
it 'allows recreating with same credentials', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/937' do
it 'allows recreating with same credentials', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/937' do
expect(Page::Main::Menu.perform(&:signed_in?)).to be_falsy
Flow::Login.sign_in(as: user, skip_page_validation: true)
@ -64,7 +64,7 @@ module QA
end
RSpec.describe 'Manage', :orchestrated, :ldap_no_tls, :skip_signup_disabled do
describe 'while LDAP is enabled', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/935' do
describe 'while LDAP is enabled', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/935' do
it_behaves_like 'registration and login'
end
end

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage' do
describe 'Add project member' do
it 'user adds project member', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/482' do
it 'user adds project member', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/482' do
Flow::Login.sign_in
user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :smoke do
describe 'Project creation' do
it 'user creates a new project', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/429' do
it 'user creates a new project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/429' do
Flow::Login.sign_in
created_project = Resource::Project.fabricate_via_browser_ui! do |project|

View File

@ -41,13 +41,13 @@ module QA
end
end
context 'when logged in as a new user', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/465' do
context 'when logged in as a new user', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/465' do
it_behaves_like 'loads all images' do
let(:new_user) { @new_user }
end
end
context 'when logged in as a new admin', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/463' do
context 'when logged in as a new admin', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/463' do
it_behaves_like 'loads all images' do
let(:new_user) { @new_admin }
end

View File

@ -23,7 +23,7 @@ module QA
Page::Main::Menu.perform(&:sign_out_if_signed_in)
end
it 'user imports a GitHub repo', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/385' do
it 'user imports a GitHub repo', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/385' do
Flow::Login.sign_in
imported_project # import the project

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage' do
describe 'Project activity' do
it 'user creates an event in the activity page upon Git push', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/407' do
it 'user creates an event in the activity page upon Git push', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/407' do
Flow::Login.sign_in
Resource::Repository::ProjectPush.fabricate! do |push|

View File

@ -19,7 +19,7 @@ module QA
Flow::Login.sign_in
end
it 'is received by a user for project invitation', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/676' do
it 'is received by a user for project invitation', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/676' do
Flow::Project.add_member(project: project, username: user.username)
expect(page).to have_content(/@#{user.username}(\n| )?Given access/)

View File

@ -27,7 +27,7 @@ module QA
end.visit!
end
it 'mentions a user in a comment', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/452' do
it 'mentions a user in a comment', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/452' do
Page::Project::Issue::Show.perform do |show|
show.select_all_activities_filter
show.comment("cc-ing you here @#{user.username}")

View File

@ -17,7 +17,7 @@ module QA
end
end
it 'collapses and expands reply for comments in an issue', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/434' do
it 'collapses and expands reply for comments in an issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/434' do
Page::Project::Issue::Show.perform do |show|
one_reply = "1 reply"

View File

@ -9,7 +9,7 @@ module QA
Resource::Issue.fabricate_via_api!.visit!
end
it 'comments on an issue and edits the comment', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/450' do
it 'comments on an issue and edits the comment', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/450' do
Page::Project::Issue::Show.perform do |show|
first_version_of_comment = 'First version of the comment'
second_version_of_comment = 'Second version of the comment'

View File

@ -9,7 +9,7 @@ module QA
Flow::Login.sign_in
end
it 'creates an issue', :reliable, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/432' do
it 'creates an issue', :reliable, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/432' do
issue = Resource::Issue.fabricate_via_browser_ui!
Page::Project::Menu.perform(&:click_issues)
@ -19,7 +19,7 @@ module QA
end
end
it 'closes an issue', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/225303', type: :bug }, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/852' do
it 'closes an issue', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/225303', type: :bug }, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/852' do
closed_issue.visit!
Page::Project::Issue::Show.perform do |issue_page|
@ -48,7 +48,7 @@ module QA
Resource::Issue.fabricate_via_api!.visit!
end
it 'comments on an issue with an attachment', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/393' do
it 'comments on an issue with an attachment', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/393' do
Page::Project::Issue::Show.perform do |show|
show.comment('See attached banana for scale', attachment: file_to_attach)

View File

@ -24,7 +24,7 @@ module QA
Page::Project::Menu.perform(&:click_issues)
end
it 'successfully exports issues list as CSV', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/764' do
it 'successfully exports issues list as CSV', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/764' do
Page::Project::Issue::Index.perform do |index|
index.click_export_as_csv_button

View File

@ -9,7 +9,7 @@ module QA
Resource::Issue.fabricate_via_api!.visit!
end
it 'filters comments and activities in an issue', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/425' do
it 'filters comments and activities in an issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/425' do
Page::Project::Issue::Show.perform do |show|
my_own_comment = "My own comment"
made_the_issue_confidential = "made the issue confidential"

View File

@ -13,7 +13,7 @@ module QA
end.project.visit!
end
it 'shows issue suggestions when creating a new issue', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/412' do
it 'shows issue suggestions when creating a new issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/412' do
Page::Project::Show.perform(&:go_to_new_issue)
Page::Project::Issue::New.perform do |new_page|
new_page.fill_title("issue")

View File

@ -14,7 +14,7 @@ module QA
end
end
it 'imports issues from Jira', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/896' do
it 'imports issues from Jira', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/896' do
set_up_jira_integration
import_jira_issues

View File

@ -21,7 +21,7 @@ module QA
end.visit!
end
it 'mentions another user in an issue', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/446' do
it 'mentions another user in an issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/446' do
Page::Project::Issue::Show.perform do |show|
at_username = "@#{user.username}"

View File

@ -13,7 +13,7 @@ module QA
Flow::Login.sign_in
end
it 'focuses on issue board', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/820' do
it 'focuses on issue board', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/820' do
project.visit!
Page::Project::Menu.perform(&:go_to_boards)

View File

@ -14,7 +14,7 @@ module QA
Flow::Login.sign_in
end
it 'creates a group milestone', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/922' do
it 'creates a group milestone', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/922' do
group_milestone = Resource::GroupMilestone.fabricate_via_browser_ui! do |milestone|
milestone.title = title
milestone.description = description

View File

@ -14,7 +14,7 @@ module QA
Flow::Login.sign_in
end
it 'creates a project milestone', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/901' do
it 'creates a project milestone', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/901' do
project_milestone = Resource::ProjectMilestone.fabricate_via_browser_ui! do |milestone|
milestone.title = title
milestone.description = description

View File

@ -25,7 +25,7 @@ module QA
Flow::Login.sign_in
end
it 'relates and unrelates one issue to/from another', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/541' do
it 'relates and unrelates one issue to/from another', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/541' do
issue_1.visit!
Page::Project::Issue::Show.perform do |show|

View File

@ -12,7 +12,7 @@ module QA
Flow::Login.sign_in
end
it 'user adds a design and annotates it', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/955' do
it 'user adds a design and annotates it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/955' do
issue.visit!
Page::Project::Issue::Show.perform do |issue|

View File

@ -41,7 +41,7 @@ module QA
end
end
it 'closes an issue via pushing a commit', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/827' do
it 'closes an issue via pushing a commit', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/827' do
issue_key = Vendor::Jira::JiraAPI.perform do |jira_api|
jira_api.create_issue(jira_project_key)
end
@ -51,7 +51,7 @@ module QA
expect_issue_done(issue_key)
end
it 'closes an issue via a merge request', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/828' do
it 'closes an issue via a merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/828' do
issue_key = Vendor::Jira::JiraAPI.perform do |jira_api|
jira_api.create_issue(jira_project_key)
end

View File

@ -16,7 +16,7 @@ module QA
Flow::Login.sign_in
end
it 'creates a basic merge request', :smoke, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/409' do
it 'creates a basic merge request', :smoke, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/409' do
Resource::MergeRequest.fabricate_via_browser_ui! do |merge_request|
merge_request.project = project
merge_request.title = merge_request_title
@ -29,7 +29,7 @@ module QA
end
end
it 'creates a merge request with a milestone and label', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/514' do
it 'creates a merge request with a milestone and label', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/514' do
gitlab_account_username = "@#{Runtime::User.username}"
milestone = Resource::ProjectMilestone.fabricate_via_api! do |milestone|

View File

@ -9,7 +9,7 @@ module QA
end
end
it 'can merge feature branch fork to mainline', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/928' do
it 'can merge feature branch fork to mainline', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/928' do
Flow::Login.sign_in
merge_request.visit!

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/30226', type: :bug } do
describe 'Merge request rebasing' do
it 'user rebases source branch of merge request', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/398' do
it 'user rebases source branch of merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/398' do
Flow::Login.sign_in
project = Resource::Project.fabricate_via_api! do |project|

View File

@ -31,7 +31,7 @@ module QA
merge_request.visit!
end
it 'user squashes commits while merging', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/418' do
it 'user squashes commits while merging', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/418' do
Page::MergeRequest::Show.perform do |merge_request_page|
merge_request_page.retry_on_exception(reload: true) do
expect(merge_request_page).to have_text('to be squashed')

View File

@ -15,7 +15,7 @@ module QA
merge_request.visit!
end
it 'views the merge request email patches', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/416' do
it 'views the merge request email patches', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/416' do
Page::MergeRequest::Show.perform(&:view_email_patches)
expect(page.text).to start_with('From')
@ -23,7 +23,7 @@ module QA
expect(page).to have_content("diff --git a/#{merge_request.file_name} b/#{merge_request.file_name}")
end
it 'views the merge request plain diff', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/417' do
it 'views the merge request plain diff', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/417' do
Page::MergeRequest::Show.perform(&:view_plain_diff)
expect(page.text).to start_with("diff --git a/#{merge_request.file_name} b/#{merge_request.file_name}")

View File

@ -55,7 +55,7 @@ module QA
project.visit!
end
it 'lists branches correctly after CRUD operations', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/413' do
it 'lists branches correctly after CRUD operations', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/413' do
Page::Project::Menu.perform(&:go_to_repository_branches)
expect(page).to have_content(master_branch)

View File

@ -26,7 +26,7 @@ module QA
project.wait_for_push_new_branch
end
it 'user performs a deep clone', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/475' do
it 'user performs a deep clone', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/475' do
Git::Repository.perform do |repository|
repository.uri = project.repository_http_location.uri
repository.use_default_credentials
@ -37,7 +37,7 @@ module QA
end
end
it 'user performs a shallow clone', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/411' do
it 'user performs a shallow clone', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/411' do
Git::Repository.perform do |repository|
repository.uri = project.repository_http_location.uri
repository.use_default_credentials

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Files management' do
it 'user creates, edits and deletes a file via the Web', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/451' do
it 'user creates, edits and deletes a file via the Web', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/451' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials)

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Create', :orchestrated, :repository_storage, :requires_admin, quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/217002', type: :investigating } do
RSpec.describe 'Create', :orchestrated, :repository_storage, :requires_admin do
describe 'Gitaly repository storage' do
let(:user) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) }
let(:parent_project) do
@ -22,7 +22,7 @@ module QA
parent_project.add_member(user)
end
it 'creates a 2nd fork after moving the parent project', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/713' do
it 'creates a 2nd fork after moving the parent project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/713' do
Flow::Login.sign_in(as: user)
fork_project.visit!
@ -30,7 +30,7 @@ module QA
parent_project.change_repository_storage(QA::Runtime::Env.additional_repository_storage)
second_fork_project = Resource::Fork.fabricate_via_api! do |fork|
fork.name = "second-fork"
fork.name = "second-fork-of-#{parent_project.name}"
fork.user = user
fork.upstream = parent_project
end.project

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Push over HTTP using Git protocol version 2', :requires_git_protocol_v2 do
it 'user pushes to the repository', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/469' do
it 'user pushes to the repository', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/469' do
Flow::Login.sign_in
# Create a project to push to

View File

@ -27,7 +27,7 @@ module QA
Page::Main::Menu.perform(&:sign_out_if_signed_in)
end
it 'user pushes to the repository', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/386' do
it 'user pushes to the repository', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/386' do
project = Resource::Project.fabricate_via_api! do |project|
project.name = 'git-protocol-project'
end

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Git push over HTTP', :ldap_no_tls, :smoke do
it 'user using a personal access token pushes code to the repository', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/430' do
it 'user using a personal access token pushes code to the repository', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/430' do
Flow::Login.sign_in
access_token = Resource::PersonalAccessToken.fabricate!.access_token

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Push mirror a repository over HTTP' do
it 'configures and syncs a (push) mirrored repository', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/414' do
it 'configures and syncs a (push) mirrored repository', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/414' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials)

View File

@ -26,7 +26,7 @@ module QA
set_file_size_limit(nil)
end
it 'push successful when the file size is under the limit', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/456' do
it 'push successful when the file size is under the limit', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/456' do
set_file_size_limit(5)
retry_on_fail do
@ -36,7 +36,7 @@ module QA
end
end
it 'push fails when the file size is above the limit', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/458' do
it 'push fails when the file size is above the limit', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/458' do
set_file_size_limit(2)
retry_on_fail do

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Git push over HTTP', :ldap_no_tls do
it 'user pushes code to the repository', :smoke, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/426' do
it 'user pushes code to the repository', :smoke, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/426' do
Flow::Login.sign_in
Resource::Repository::ProjectPush.fabricate! do |push|
@ -18,7 +18,7 @@ module QA
end
end
it 'pushes to a project using a specific Praefect repository storage', :smoke, :requires_admin, :requires_praefect, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/742' do
it 'pushes to a project using a specific Praefect repository storage', :smoke, :requires_admin, :requires_praefect, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/742' do
Flow::Login.sign_in_as_admin
project = Resource::Project.fabricate_via_api! do |storage_project|

View File

@ -26,7 +26,7 @@ module QA
Flow::Login.sign_in
end
it 'pushes code to the repository via SSH', :smoke, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/969' do
it 'pushes code to the repository via SSH', :smoke, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/969' do
Resource::Repository::ProjectPush.fabricate! do |push|
push.project = project
push.ssh_key = @key
@ -41,7 +41,7 @@ module QA
end
end
it 'pushes multiple branches and tags together', :smoke, status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/970' do
it 'pushes multiple branches and tags together', :smoke, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/970' do
branches = []
tags = []
Git::Repository.perform do |repository|

View File

@ -18,7 +18,7 @@ module QA
end
context 'when developers and maintainers are allowed to push to a protected branch' do
it 'user with push rights successfully pushes to the protected branch', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/447' do
it 'user with push rights successfully pushes to the protected branch', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/447' do
create_protected_branch(allowed_to_push: {
roles: Resource::ProtectedBranch::Roles::DEVS_AND_MAINTAINERS
})
@ -30,7 +30,7 @@ module QA
end
context 'when developers and maintainers are not allowed to push to a protected branch' do
it 'user without push rights fails to push to the protected branch', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/449' do
it 'user without push rights fails to push to the protected branch', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/449' do
create_protected_branch(allowed_to_push: {
roles: Resource::ProtectedBranch::Roles::NO_ONE
})

View File

@ -9,7 +9,7 @@ module QA
Flow::Login.sign_in
end
it 'user can add an SSH key', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/929' do
it 'user can add an SSH key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/929' do
key = Resource::SSHKey.fabricate_via_browser_ui! do |resource|
resource.title = key_title
end
@ -20,7 +20,7 @@ module QA
# Note this context ensures that the example it contains is executed after the example above. Be aware of the order of execution if you add new examples in either context.
context 'after adding an ssh key' do
it 'can delete an ssh key', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/930' do
it 'can delete an ssh key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/930' do
Page::Main::Menu.perform(&:click_settings_link)
Page::Profile::Menu.perform(&:click_ssh_keys)
Page::Profile::SSHKeys.perform do |ssh_keys|

View File

@ -43,7 +43,7 @@ module QA
find('pre').text
end
it 'user views raw email patch', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/442' do
it 'user views raw email patch', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/442' do
view_commit
Page::Project::Commit::Show.perform(&:select_email_patches)
@ -53,7 +53,7 @@ module QA
expect(page).to have_content('diff --git a/second b/second')
end
it 'user views raw commit diff', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/439' do
it 'user views raw commit diff', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/439' do
view_commit
Page::Project::Commit::Show.perform(&:select_plain_diff)

View File

@ -36,7 +36,7 @@ module QA
Flow::Login.sign_in
end
it 'clones, pushes, and pulls a snippet over HTTP, edits via UI', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/826' do
it 'clones, pushes, and pulls a snippet over HTTP, edits via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/826' do
Resource::Repository::Push.fabricate! do |push|
push.repository_http_uri = repository_uri_http
push.file_name = new_file
@ -65,7 +65,7 @@ module QA
end
end
it 'clones, pushes, and pulls a snippet over SSH, deletes via UI', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/825' do
it 'clones, pushes, and pulls a snippet over SSH, deletes via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/825' do
Resource::Repository::Push.fabricate! do |push|
push.repository_ssh_uri = repository_uri_ssh
push.ssh_key = ssh_key

View File

@ -36,7 +36,7 @@ module QA
Flow::Login.sign_in
end
it 'clones, pushes, and pulls a project snippet over HTTP, edits via UI', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/833' do
it 'clones, pushes, and pulls a project snippet over HTTP, edits via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/833' do
Resource::Repository::Push.fabricate! do |push|
push.repository_http_uri = repository_uri_http
push.file_name = new_file
@ -65,7 +65,7 @@ module QA
end
end
it 'clones, pushes, and pulls a project snippet over SSH, deletes via UI', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/832' do
it 'clones, pushes, and pulls a project snippet over SSH, deletes via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/832' do
Resource::Repository::Push.fabricate! do |push|
push.repository_ssh_uri = repository_uri_ssh
push.ssh_key = ssh_key

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create', :smoke do
describe 'Personal snippet creation' do
it 'User creates a personal snippet', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/840' do
it 'User creates a personal snippet', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/840' do
Flow::Login.sign_in
Page::Main::Menu.perform do |menu|

View File

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do # to be converted to a smoke test once proved to be stable
describe 'Project snippet creation' do
it 'User creates a project snippet', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/839' do
it 'User creates a project snippet', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/839' do
Flow::Login.sign_in
Resource::ProjectSnippet.fabricate_via_browser_ui! do |snippet|

View File

@ -17,7 +17,7 @@ module QA
Flow::Login.sign_in
end
it "creates the first file in an empty project via Web IDE", status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/847' do
it "creates the first file in an empty project via Web IDE", testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/847' do
# In the first iteration, the test opens Web IDE by modifying the URL to address past regressions.
# Once the Web IDE button is introduced for empty projects, the test will be modified to go through UI.
# See https://gitlab.com/gitlab-org/gitlab/-/issues/27915 and https://gitlab.com/gitlab-org/gitlab/-/issues/27535.

View File

@ -14,7 +14,7 @@ module QA
let(:user) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) }
context 'when no fork is present' do
it 'suggests to create a fork when a user clicks Web IDE in the main project', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/959' do
it 'suggests to create a fork when a user clicks Web IDE in the main project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/959' do
Flow::Login.sign_in(as: user)
parent_project.visit!
@ -34,7 +34,7 @@ module QA
end
end
it 'opens the fork when a user clicks Web IDE in the main project', status_issue: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/960' do
it 'opens the fork when a user clicks Web IDE in the main project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/960' do
Flow::Login.sign_in(as: user)
fork_project.upstream.visit!
Page::Project::Show.perform do |project_page|

Some files were not shown because too many files have changed in this diff Show More