Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
de0c73ffc5
commit
729eabcb41
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Replace fa-search-* icons with GitLab SVG icons
|
||||
merge_request: 40580
|
||||
author:
|
||||
type: changed
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Stricter default timeouts for outgoing HTTP requests
|
||||
merge_request: 39188
|
||||
author:
|
||||
type: other
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Create IssueLink for Vulnerabilities that do not have them
|
||||
merge_request: 40726
|
||||
author:
|
||||
type: fixed
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add Conan lock file support to Dependency Scanning
|
||||
merge_request: 39811
|
||||
author:
|
||||
type: added
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add issue importers usage pings (FogBugz, Phabricator, Jira)
|
||||
merge_request: 40382
|
||||
author:
|
||||
type: added
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: 'GraphQL: Updates PipelineCancel mutation'
|
||||
merge_request: 40764
|
||||
author:
|
||||
type: changed
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Migrating setup policy button in registry settings
|
||||
merge_request: 40668
|
||||
author:
|
||||
type: changed
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add warning to stop Puma and Sidekiq when restoring from backup
|
||||
merge_request: 40791
|
||||
author:
|
||||
type: other
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
e8fc0809b5bd3248dc625602deeaaef16e2db6b33d8eaf51fdcc1c67dee49e17
|
|
@ -0,0 +1 @@
|
|||
e24f8495b7458ce57e148017ef6cae901e7f3997fca247afeff524a43e739431
|
|
@ -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!
|
||||
}
|
||||
|
||||
"""
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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.
|
||||
```
|
||||
|
|
|
@ -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')
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ module QA
|
|||
|
||||
def api_post_body
|
||||
{
|
||||
namespace: user.username,
|
||||
namespace_path: user.username,
|
||||
name: name,
|
||||
path: name
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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 } }
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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/)
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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}"
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue