Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/specs/features')
-rw-r--r--qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb28
-rw-r--r--qa/qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb9
-rw-r--r--qa/qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb17
-rw-r--r--qa/qa/specs/features/api/1_manage/project_access_token_spec.rb4
-rw-r--r--qa/qa/specs/features/api/1_manage/user_access_termination_spec.rb16
-rw-r--r--qa/qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb8
-rw-r--r--qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb16
-rw-r--r--qa/qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb10
-rw-r--r--qa/qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb9
-rw-r--r--qa/qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb9
-rw-r--r--qa/qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb7
-rw-r--r--qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb7
-rw-r--r--qa/qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb7
-rw-r--r--qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb7
-rw-r--r--qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb7
-rw-r--r--qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb4
-rw-r--r--qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb6
-rw-r--r--qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb6
-rw-r--r--qa/qa/specs/features/api/4_verify/file_variable_downstream_pipeline_spec.rb231
-rw-r--r--qa/qa/specs/features/api/4_verify/file_variable_spec.rb7
-rw-r--r--qa/qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb6
-rw-r--r--qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb23
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb15
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb5
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb13
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/pages/new_static_page_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb10
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_from_push_notification_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb10
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/move_project_create_fork_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb4
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb4
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb4
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb4
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb5
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/add_file_template_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/create_first_file_in_web_ide_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/link_to_line_in_web_ide_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/open_web_ide_from_diff_tab_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/review_merge_request_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/server_hooks_custom_error_message_spec.rb10
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide_old/upload_new_file_in_web_ide_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb28
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_variable/custom_variable_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb13
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb22
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb18
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_editor_can_create_merge_request_spec.rb14
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb5
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb89
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/container_registry/saas/pull_container_registry_image_spec.rb14
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb57
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb26
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb15
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb12
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb20
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb17
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb258
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb254
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb225
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_group_level_spec.rb22
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb14
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb26
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb13
-rw-r--r--qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb12
-rw-r--r--qa/qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb8
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_group_spec.rb17
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_project_spec.rb24
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/create_project_badge_spec.rb11
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb33
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/project_owner_permissions_spec.rb16
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb28
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/user/parent_group_access_termination_spec.rb10
-rw-r--r--qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb9
-rw-r--r--qa/qa/specs/features/shared_contexts/import/github_import_shared_context.rb5
-rw-r--r--qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb3
-rw-r--r--qa/qa/specs/features/shared_contexts/variable_inheritance_shared_context.rb7
-rw-r--r--qa/qa/specs/features/shared_examples/create_and_terminate_workspace_shared_examples.rb38
142 files changed, 998 insertions, 1440 deletions
diff --git a/qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb b/qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb
index 425ab0fa162..6990aa0e08e 100644
--- a/qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb
+++ b/qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb
@@ -34,11 +34,7 @@ module QA
let(:source_storage) { { type: :gitaly, name: 'default' } }
let(:destination_storage) { { type: :gitaly, name: QA::Runtime::Env.additional_repository_storage } }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'repo-storage-move-status'
- project.initialize_with_readme = true
- project.api_client = Runtime::API::Client.as_admin
- end
+ create(:project, :with_readme, name: 'repo-storage-move-status', api_client: Runtime::API::Client.as_admin)
end
before do
@@ -56,12 +52,11 @@ module QA
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 } }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'repo-storage-move'
- project.initialize_with_readme = true
- project.repository_storage = source_storage[:name]
- project.api_client = Runtime::API::Client.as_admin
- end
+ create(:project,
+ :with_readme,
+ name: 'repo-storage-move',
+ repository_storage: source_storage[:name],
+ api_client: Runtime::API::Client.as_admin)
end
before do
@@ -79,12 +74,11 @@ module QA
let(:source_storage) { { type: :praefect, name: QA::Runtime::Env.praefect_repository_storage } }
let(:destination_storage) { { type: :gitaly, name: QA::Runtime::Env.non_cluster_repository_storage } }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'repo-storage-move'
- project.initialize_with_readme = true
- project.repository_storage = source_storage[:name]
- project.api_client = Runtime::API::Client.as_admin
- end
+ create(:project,
+ :with_readme,
+ name: 'repo-storage-move',
+ repository_storage: source_storage[:name],
+ api_client: Runtime::API::Client.as_admin)
end
before do
diff --git a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb
index ac85795b2bb..75203584edd 100644
--- a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb
@@ -7,11 +7,10 @@ module QA
describe "Gitlab migration" do
context 'with subgroups and labels' do
let(:subgroup) do
- Resource::Group.fabricate_via_api! do |group|
- group.api_client = source_admin_api_client
- group.sandbox = source_group
- group.path = "subgroup-for-import-#{SecureRandom.hex(4)}"
- end
+ create(:group,
+ path: "subgroup-for-import-#{SecureRandom.hex(4)}",
+ sandbox: source_group,
+ api_client: source_admin_api_client)
end
let(:imported_subgroup) do
diff --git a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb
index 7cbccf9be44..100b50abfdb 100644
--- a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb
@@ -13,19 +13,14 @@ module QA
# do not use top level group (sandbox) to avoid issues when applying permissions etc. because it will contain
# a lot subgroups and projects on live envs
- let!(:source_sandbox) do
- Resource::Group.fabricate_via_api! do |group|
- group.api_client = admin_api_client
- end
- end
+ let!(:source_sandbox) { create(:group, api_client: admin_api_client) }
let!(:source_group) do
- Resource::Group.fabricate_via_api! do |group|
- group.api_client = admin_api_client
- group.sandbox = source_sandbox
- group.path = "source-group-for-import-#{SecureRandom.hex(4)}"
- group.avatar = File.new(Runtime::Path.fixture('designs', 'tanuki.jpg'), 'r')
- end
+ create(:group,
+ api_client: admin_api_client,
+ sandbox: source_sandbox,
+ path: "source-group-for-import-#{SecureRandom.hex(4)}",
+ avatar: File.new(Runtime::Path.fixture('designs', 'tanuki.jpg'), 'r'))
end
let!(:target_sandbox) { source_sandbox }
diff --git a/qa/qa/specs/features/api/1_manage/project_access_token_spec.rb b/qa/qa/specs/features/api/1_manage/project_access_token_spec.rb
index eeeb78e17d7..af0eef290f7 100644
--- a/qa/qa/specs/features/api/1_manage/project_access_token_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/project_access_token_spec.rb
@@ -5,9 +5,7 @@ module QA
describe 'Project access token', product_group: :authentication_and_authorization do
before(:all) do
@project_access_token = QA::Resource::ProjectAccessToken.fabricate_via_api! do |pat|
- pat.project = Resource::Project.fabricate_via_api! do |project|
- project.initialize_with_readme = true
- end
+ pat.project = create(:project, :with_readme)
end
@user_api_client = Runtime::API::Client.new(:gitlab, personal_access_token: @project_access_token.token)
diff --git a/qa/qa/specs/features/api/1_manage/user_access_termination_spec.rb b/qa/qa/specs/features/api/1_manage/user_access_termination_spec.rb
index 8759c36f43f..578891b2722 100644
--- a/qa/qa/specs/features/api/1_manage/user_access_termination_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/user_access_termination_spec.rb
@@ -13,23 +13,13 @@ module QA
@user_api_client = Runtime::API::Client.new(:gitlab, user: @user)
- @sandbox = Resource::Sandbox.fabricate! do |sandbox_group|
- sandbox_group.path = "sandbox-for-access-termination-#{SecureRandom.hex(4)}"
- sandbox_group.api_client = admin_api_client
- end
+ @sandbox = create(:sandbox, path: "sandbox-for-access-termination-#{SecureRandom.hex(4)}", api_client: admin_api_client)
- group = QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "group-to-test-access-termination-#{SecureRandom.hex(8)}"
- group.sandbox = @sandbox
- end
+ group = create(:group, path: "group-to-test-access-termination-#{SecureRandom.hex(8)}", sandbox: @sandbox)
@sandbox.add_member(@user)
- @project = Resource::Project.fabricate_via_api! do |project|
- project.group = group
- project.name = "project-for-user-group-access-termination"
- project.initialize_with_readme = true
- end
+ @project = create(:project, :with_readme, name: 'project-for-user-group-access-termination', group: group)
end
context 'after parent group membership termination' do
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb
index fc00d851087..1edf1d942be 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb
@@ -2,7 +2,7 @@
module QA
RSpec.describe 'Create' do
- describe 'Merge request push options', product_group: :code_review do
+ describe 'Merge request push options', :reliable, product_group: :code_review do
# If run locally on GDK, push options need to be enabled on the host with the following command:
#
# git config --global receive.advertisepushoptions true
@@ -10,11 +10,7 @@ module QA
let(:branch) { "push-options-test-#{SecureRandom.hex(8)}" }
let(:title) { "MR push options test #{SecureRandom.hex(8)}" }
let(:commit_message) { 'Add README.md' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme) }
def create_new_mr_via_push
Resource::Repository::ProjectPush.fabricate! do |push|
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
index 9fed6787ade..5c4fc8cef56 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
@@ -10,12 +10,7 @@ module QA
let(:branch) { "push-options-test-#{SecureRandom.hex(8)}" }
let(:title) { "MR push options test #{SecureRandom.hex(8)}" }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'merge-request-push-options'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
@@ -74,7 +69,14 @@ module QA
end
end
- it 'merges when pipeline succeeds', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347842' do
+ it(
+ 'merges when pipeline succeeds',
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347842',
+ quarantine: {
+ type: :flaky,
+ issue: "https://gitlab.com/gitlab-org/gitlab/-/issues/346425"
+ }
+ ) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
commit.commit_message = 'Add .gitlab-ci.yml'
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb
index 11328c2f517..9c27793a52d 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb
@@ -2,20 +2,14 @@
module QA
RSpec.describe 'Create' do
- describe 'Merge request push options', product_group: :code_review do
+ describe 'Merge request push options', :reliable, product_group: :code_review do
# If run locally on GDK, push options need to be enabled on the host with the following command:
#
# git config --global receive.advertisepushoptions true
let(:branch) { "push-options-test-#{SecureRandom.hex(8)}" }
let(:title) { "MR push options test #{SecureRandom.hex(8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'merge-request-push-options'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
it 'removes the source branch', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347841' do
Resource::Repository::ProjectPush.fabricate! do |push|
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb
index eb7d3da0f97..1a5b6f88f4f 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb
@@ -2,19 +2,14 @@
module QA
RSpec.describe 'Create' do
- describe 'Merge request push options', product_group: :code_review do
+ describe 'Merge request push options', :reliable, product_group: :code_review do
# If run locally on GDK, push options need to be enabled on the host with the following command:
#
# git config --global receive.advertisepushoptions true
let(:title) { "MR push options test #{SecureRandom.hex(8)}" }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'merge-request-push-options'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
it 'sets a target branch', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347726' do
target_branch = "push-options-test-target-#{SecureRandom.hex(8)}"
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb
index dd297f47975..4e8a5a426d4 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb
@@ -2,17 +2,12 @@
module QA
RSpec.describe 'Create' do
- describe 'Merge request push options', product_group: :code_review do
+ describe 'Merge request push options', :reliable, product_group: :code_review do
# If run locally on GDK, push options need to be enabled on the host with the following command:
#
# git config --global receive.advertisepushoptions true
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'merge-request-push-options'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
it 'sets title and description', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347844' do
description = "This is a test of MR push options"
diff --git a/qa/qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb b/qa/qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb
index f69a8a4dfa5..2f7cef2112e 100644
--- a/qa/qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb
@@ -2,12 +2,7 @@
module QA
RSpec.describe 'Create' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-qa-test'
- project.description = 'project for qa test'
- end
- end
+ let(:project) { create(:project, name: 'project-qa-test', description: 'project for qa test') }
describe 'Create, Retrieve and Delete branches via API', :requires_admin, product_group: :source_code do
created_branch = 'create-branch'
diff --git a/qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb b/qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb
index 4ee436a597a..74d1c9e3e94 100644
--- a/qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Create a new project from a template', product_group: :source_code do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'templated-project'
- project.template_name = 'dotnetcore'
- end
- end
+ let(:project) { create(:project, name: 'templated-project', template_name: 'dotnetcore') }
it 'commits via the api', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/357234' do
expect do
diff --git a/qa/qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb b/qa/qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb
index 123a4a625ab..a512bb76560 100644
--- a/qa/qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb
@@ -12,10 +12,7 @@ module QA
end
it 'sets the default branch name for a new project', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347837' do
- project = Resource::Project.fabricate_via_api! do |project|
- project.name = "default-branch-name"
- project.initialize_with_readme = true
- end
+ project = create(:project, :with_readme, name: 'default-branch-name')
# It takes a moment to create the project. We wait until we
# know it exists before we try to clone it
@@ -32,7 +29,7 @@ module QA
it 'allows a project to be created via the CLI with a different default branch name', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347838' do
project_name = "default-branch-name-via-cli-#{SecureRandom.hex(8)}"
- group = Resource::Group.fabricate_via_api!
+ group = create(:group)
Git::Repository.perform do |repository|
repository.init_repository
diff --git a/qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb b/qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb
index d72672e2104..87faec86947 100644
--- a/qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb
@@ -46,12 +46,7 @@ module QA
end
def create_project(user, api_client, project_name)
- project = Resource::Project.fabricate_via_api! do |project|
- project.personal_namespace = user.username
- project.add_name_uuid = false
- project.name = project_name
- project.api_client = api_client
- end
+ project = create(:project, name: project_name, api_client: api_client, add_name_uuid: false, personal_namespace: user.username)
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb b/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
index 1d41184df98..df61dd43bb0 100644
--- a/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
@@ -6,12 +6,7 @@ module QA
# Tests that a push does not result in multiple changes from repeated PostReceive executions.
# One of the consequences would be duplicate push events
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'push-postreceive-idempotent'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'push-postreceive-idempotent') }
after do
project&.remove_via_api!
diff --git a/qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb b/qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb
index 8c7a58be43a..72ce2dda053 100644
--- a/qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb
@@ -30,9 +30,7 @@ module QA
# attempt to detect large differences that could indicate a regression to previous behavior.
it 'matches cloned repo usage to reported usage',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/365196' do
- project = Resource::Project.fabricate_via_api! do |project|
- project.name = project_name
- end
+ project = create(:project, name: project_name)
shared_data = SecureRandom.random_bytes(500000)
diff --git a/qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb b/qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb
index 700cf69da80..d0f1ee66488 100644
--- a/qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb
@@ -3,11 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Prereceive hook', product_group: :source_code do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme) }
context 'when creating a tag for a ref' do
context 'when it triggers a prereceive hook configured with a custom error' do
diff --git a/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb b/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
index a360c662cf8..5b0e0573016 100644
--- a/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
+++ b/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
@@ -12,11 +12,7 @@ module QA
end
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-canceled-schedule'
- end
- end
+ let(:project) { create(:project, name: 'project-for-canceled-schedule') }
before do
project.add_member(user, Resource::Members::AccessLevel::MAINTAINER)
diff --git a/qa/qa/specs/features/api/4_verify/file_variable_downstream_pipeline_spec.rb b/qa/qa/specs/features/api/4_verify/file_variable_downstream_pipeline_spec.rb
new file mode 100644
index 00000000000..289133b33cc
--- /dev/null
+++ b/qa/qa/specs/features/api/4_verify/file_variable_downstream_pipeline_spec.rb
@@ -0,0 +1,231 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.describe 'Verify', :runner, product_group: :pipeline_security, feature_flag: {
+ name: 'ci_prevent_file_var_expansion_downstream_pipeline',
+ scope: :project
+ } do
+ describe 'Pipeline with file variables and downstream pipelines' do
+ let(:random_string) { Faker::Alphanumeric.alphanumeric(number: 8) }
+ let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
+ let!(:project) { create(:project, name: 'upstream-project-with-file-variables') }
+ let!(:downstream_project) { create(:project, name: 'downstream-project') }
+
+ let!(:project_runner) do
+ Resource::ProjectRunner.fabricate! do |runner|
+ runner.project = project
+ runner.name = executor
+ runner.tags = [executor]
+ end
+ end
+
+ let!(:downstream_project_runner) do
+ Resource::ProjectRunner.fabricate! do |runner|
+ runner.project = downstream_project
+ runner.name = "#{executor}-downstream"
+ runner.tags = [executor]
+ end
+ end
+
+ let(:add_ci_file) do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add .gitlab-ci.yml and child.yml'
+ commit.add_files(
+ [
+ {
+ file_path: '.gitlab-ci.yml',
+ content: <<~YAML
+ default:
+ tags: [#{executor}]
+
+ variables:
+ EXTRA_ARGS: "-f $TEST_PROJECT_FILE"
+ DOCKER_REMOTE_ARGS: --tlscacert="$DOCKER_CA_CERT"
+ EXTRACTED_CRT_FILE: ${DOCKER_CA_CERT}.crt
+ MY_FILE_VAR: $TEST_PROJECT_FILE
+
+ trigger_child:
+ trigger:
+ strategy: depend
+ include:
+ - local: child.yml
+
+ trigger_downstream_project:
+ trigger:
+ strategy: depend
+ project: #{downstream_project.path_with_namespace}
+
+ YAML
+ },
+ {
+ file_path: 'child.yml',
+ content: <<~YAML
+ default:
+ tags: [#{executor}]
+
+ child_job_echo:
+ script:
+ - echo "run something $EXTRA_ARGS"
+ - echo "docker run $DOCKER_REMOTE_ARGS"
+ - echo "run --output=$EXTRACTED_CRT_FILE"
+ - echo "Will read private key from $MY_FILE_VAR"
+
+ child_job_cat:
+ script:
+ - cat "$MY_FILE_VAR"
+ - cat "$DOCKER_CA_CERT"
+ YAML
+ }
+ ]
+ )
+ end
+ end
+
+ let(:add_downstream_project_ci_file) do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = downstream_project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files(
+ [
+ {
+ file_path: '.gitlab-ci.yml',
+ content: <<~YAML
+ default:
+ tags: [#{executor}]
+
+ downstream_job_echo:
+ script:
+ - echo "run something $EXTRA_ARGS"
+ - echo "docker run $DOCKER_REMOTE_ARGS"
+ - echo "run --output=$EXTRACTED_CRT_FILE"
+ - echo "Will read private key from $MY_FILE_VAR"
+
+ downstream_job_cat:
+ script:
+ - cat "$MY_FILE_VAR"
+ - cat "$DOCKER_CA_CERT"
+ YAML
+ }
+ ]
+ )
+ end
+ end
+
+ let(:add_project_file_variables) do
+ {
+ 'TEST_PROJECT_FILE' => "hello, this is test\n",
+ 'DOCKER_CA_CERT' => "This is secret\n"
+ }.each do |file_name, content|
+ add_file_variable_to_project(project, file_name, content)
+ end
+ end
+
+ let(:upstream_pipeline) do
+ Resource::Pipeline.fabricate_via_api! do |pipeline|
+ pipeline.project = project
+ end
+ end
+
+ def child_pipeline
+ Resource::Pipeline.fabricate_via_api! do |pipeline|
+ pipeline.project = project
+ pipeline.id = upstream_pipeline.downstream_pipeline_id(bridge_name: 'trigger_child')
+ end
+ end
+
+ def downstream_project_pipeline
+ Resource::Pipeline.fabricate_via_api! do |pipeline|
+ pipeline.project = downstream_project
+ pipeline.id = upstream_pipeline.downstream_pipeline_id(bridge_name: 'trigger_downstream_project')
+ end
+ end
+
+ around do |example|
+ Runtime::Feature.enable(:ci_prevent_file_var_expansion_downstream_pipeline, project: project)
+ example.run
+ Runtime::Feature.disable(:ci_prevent_file_var_expansion_downstream_pipeline, project: project)
+ end
+
+ before do
+ add_project_file_variables
+ add_downstream_project_ci_file
+ add_ci_file
+ upstream_pipeline
+ wait_for_pipelines
+ end
+
+ after do
+ project_runner.remove_via_api!
+ downstream_project_runner.remove_via_api!
+ end
+
+ it(
+ 'creates variable with file path in downstream pipelines and can read file variable content',
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/416337'
+ ) do
+ child_echo_job = Resource::Job.fabricate_via_api! do |job|
+ job.project = project
+ job.id = project.job_by_name('child_job_echo')[:id]
+ end
+
+ child_cat_job = Resource::Job.fabricate_via_api! do |job|
+ job.project = project
+ job.id = project.job_by_name('child_job_cat')[:id]
+ end
+
+ downstream_project_echo_job = Resource::Job.fabricate_via_api! do |job|
+ job.project = downstream_project
+ job.id = downstream_project.job_by_name('downstream_job_echo')[:id]
+ end
+
+ downstream_project_cat_job = Resource::Job.fabricate_via_api! do |job|
+ job.project = downstream_project
+ job.id = downstream_project.job_by_name('downstream_job_cat')[:id]
+ end
+
+ aggregate_failures do
+ trace = child_echo_job.trace
+ expect(trace).to include('run something -f', "#{project.name}.tmp/TEST_PROJECT_FILE")
+ expect(trace).to include('docker run --tlscacert=', "#{project.name}.tmp/DOCKER_CA_CERT")
+ expect(trace).to include('run --output=', "#{project.name}.tmp/DOCKER_CA_CERT.crt")
+ expect(trace).to include('Will read private key from', "#{project.name}.tmp/TEST_PROJECT_FILE")
+
+ trace = child_cat_job.trace
+ expect(trace).to have_content('hello, this is test')
+ expect(trace).to have_content('This is secret')
+
+ trace = downstream_project_echo_job.trace
+ expect(trace).to include('run something -f', "#{downstream_project.name}.tmp/TEST_PROJECT_FILE")
+ expect(trace).to include('docker run --tlscacert=', "#{downstream_project.name}.tmp/DOCKER_CA_CERT")
+ expect(trace).to include('run --output=', "#{downstream_project.name}.tmp/DOCKER_CA_CERT.crt")
+ expect(trace).to include('Will read private key from', "#{downstream_project.name}.tmp/TEST_PROJECT_FILE")
+
+ trace = downstream_project_cat_job.trace
+ expect(trace).to have_content('hello, this is test')
+ expect(trace).to have_content('This is secret')
+ end
+ end
+
+ private
+
+ def add_file_variable_to_project(project, key, value)
+ Resource::CiVariable.fabricate_via_api! do |ci_variable|
+ ci_variable.project = project
+ ci_variable.key = key
+ ci_variable.value = value
+ ci_variable.variable_type = 'file'
+ end
+ end
+
+ def wait_for_pipelines
+ Support::Waiter.wait_until(max_duration: 300, sleep_interval: 10) do
+ upstream_pipeline.reload!
+ upstream_pipeline.status == 'success' &&
+ child_pipeline.status == 'success' &&
+ downstream_project_pipeline.status == 'success'
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/specs/features/api/4_verify/file_variable_spec.rb b/qa/qa/specs/features/api/4_verify/file_variable_spec.rb
index 2d9deec399c..d7adc1d8454 100644
--- a/qa/qa/specs/features/api/4_verify/file_variable_spec.rb
+++ b/qa/qa/specs/features/api/4_verify/file_variable_spec.rb
@@ -4,12 +4,7 @@ module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_security do
describe 'Pipeline with project file variables' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-file-variables'
- end
- end
+ let(:project) { create(:project, name: 'project-with-file-variables') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb b/qa/qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb
index 23d8585d07a..d2b1cbd2c95 100644
--- a/qa/qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb
+++ b/qa/qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb
@@ -12,11 +12,7 @@ module QA
let(:api_client) { Runtime::API::Client.new(:gitlab) }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-registry-api'
- project.template_name = 'express'
- project.api_client = api_client
- end
+ create(:project, name: 'project-with-registry-api', template_name: 'express', api_client: api_client)
end
let!(:runner) do
diff --git a/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb b/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
index 48e9d3dc164..6f8b6df6658 100644
--- a/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
@@ -5,17 +5,10 @@ module QA
describe 'User', :requires_admin, product_group: :tenant_scale do
let(:admin_api_client) { Runtime::API::Client.as_admin }
- let!(:parent_group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "parent-group-to-test-user-access-#{SecureRandom.hex(8)}"
- end
- end
+ let!(:parent_group) { create(:group, path: "parent-group-to-test-user-access-#{SecureRandom.hex(8)}") }
let!(:sub_group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "sub-group-to-test-user-access-#{SecureRandom.hex(8)}"
- group.sandbox = parent_group
- end
+ create(:group, path: "sub-group-to-test-user-access-#{SecureRandom.hex(8)}", sandbox: parent_group)
end
context 'when added to parent group' do
@@ -30,11 +23,7 @@ module QA
end
let!(:sub_group_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.group = sub_group
- project.name = "sub-group-project-to-test-user-access"
- project.initialize_with_readme = true
- end
+ create(:project, :with_readme, name: 'sub-groupd-project-to-test-user-access', group: sub_group)
end
before do
@@ -106,11 +95,7 @@ module QA
context 'when added to sub-group' do
let!(:parent_group_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.group = parent_group
- project.name = "parent-group-project-to-test-user-access"
- project.initialize_with_readme = true
- end
+ create(:project, :with_readme, name: 'parent-group-project-to-test-user-access', group: parent_group)
end
let!(:sub_group_user) do
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb
index 63c57ad455b..f40d953acd2 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb
@@ -15,18 +15,9 @@ module QA
end
let(:jenkins_project_name) { "gitlab_jenkins_#{SecureRandom.hex(5)}" }
-
let(:connection_name) { 'gitlab-connection' }
-
let(:project_name) { "project_with_jenkins_#{SecureRandom.hex(4)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = project_name
- project.initialize_with_readme = true
- project.auto_devops_enabled = false
- end
- end
+ let(:project) { create(:project, :with_readme, name: project_name) }
let(:access_token) do
Runtime::Env.personal_access_token ||= fabricate_access_token
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb
index 1bd819ad87d..f336a0d5d82 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb
@@ -6,11 +6,7 @@ module QA
describe 'Jira integration', :jira, :orchestrated, :requires_admin, product_group: :import_and_integrate do
let(:jira_project_key) { 'JITP' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "project_with_jira_integration"
- end
- end
+ let(:project) { create(:project, name: 'project_with_jira_integration') }
before do
page.visit Vendor::Jira::JiraAPI.perform(&:base_url)
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb
index 02224406e6d..15b6d74c7f1 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb
@@ -8,11 +8,7 @@ module QA
let(:jira_issue_description) { "This issue is for testing importing Jira issues to GitLab." }
let(:jira_issue_label_1) { "jira-import::#{jira_project_key}-1" }
let(:jira_issue_label_2) { "QA" }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "jira_issue_import"
- end
- end
+ let(:project) { create(:project, name: "jira_issue_import") }
it 'imports issues from Jira', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347966' do
set_up_jira_integration
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb
index 1ea19144a74..c19ebd9f7a7 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb
@@ -28,12 +28,7 @@ module QA
describe 'Pipeline status emails' do
let(:executor) { "qa-runner-#{Time.now.to_i}" }
let(:emails) { %w[foo@bar.com baz@buzz.com] }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-status-project'
- end
- end
+ let(:project) { create(:project, name: 'pipeline-status-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
index f5e33cb5b1e..99be4e87251 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
@@ -10,13 +10,7 @@ module QA
# state to be used in the GitLab API
let(:project_name) { "project_with_slack" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = project_name
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: project_name) }
before(:context) do
Runtime::Env.require_slack_env!
@@ -101,12 +95,7 @@ module QA
end
context 'with target project' do
- let(:target) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'target_slack_project'
- project.initialize_with_readme = true
- end
- end
+ let(:target) { create(:project, :with_readme, name: 'target_slack_project') }
after do
target.remove_via_api!
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb
index 0f3d6a104a7..f2582d47723 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb
@@ -23,11 +23,7 @@ module QA
end
let(:group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.sandbox = sandbox_group
- group.api_client = owner_api_client
- group.require_two_factor_authentication = true
- end
+ create(:group, :require_2fa, sandbox: sandbox_group, api_client: owner_api_client)
end
before do
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb
index 84664cb8b94..89f15759b54 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Manage', :requires_admin, :skip_live_env, product_group: :authentication_and_authorization do
+ RSpec.describe 'Manage', :requires_admin, product_group: :authentication_and_authorization do
describe '2FA' do
let(:admin_api_client) { Runtime::API::Client.as_admin }
let(:owner_api_client) { Runtime::API::Client.new(:gitlab, user: owner_user) }
@@ -14,6 +14,7 @@ module QA
end
let(:sandbox_group) do
+ Flow::Login.sign_in(as: owner_user)
Resource::Sandbox.fabricate! do |sandbox_group|
sandbox_group.path = "gitlab-qa-2fa-sandbox-group-#{SecureRandom.hex(8)}"
sandbox_group.api_client = owner_api_client
@@ -21,11 +22,7 @@ module QA
end
let(:group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.sandbox = sandbox_group
- group.api_client = owner_api_client
- group.path = "group-with-2fa-#{SecureRandom.hex(8)}"
- end
+ create(:group, sandbox: sandbox_group, api_client: owner_api_client, path: "group-with-2fa-#{SecureRandom.hex(8)}")
end
let(:developer_user) do
@@ -46,7 +43,7 @@ module QA
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347931',
quarantine: {
type: :bug,
- only: { condition: -> { !QA::Runtime::Env.super_sidebar_enabled? } },
+ only: { condition: -> { QA::Runtime::Env.super_sidebar_enabled? } },
issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/409336'
}
) do
diff --git a/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb
index 1a53fda4cdb..afc7e8202e2 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb
@@ -9,11 +9,7 @@ module QA
Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'email-notification-test'
- end
- end
+ let(:project) { create(:project, name: 'email-notification-test') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
index 2f177d12389..5d8f9f7d7b3 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
@@ -10,11 +10,7 @@ module QA
end
end
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'xss-test-for-mentions-project'
- end
- end
+ let!(:project) { create(:project, name: 'xss-test-for-mentions-project') }
describe 'check xss occurence in @mentions in issues', :requires_admin do
before do
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb
index f7dc9157275..2fe88c543de 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb
@@ -6,7 +6,7 @@ module QA
before do
Flow::Login.sign_in
- Resource::Issue.fabricate_via_api!.visit!
+ create(:issue).visit!
end
it 'comments on an issue and edits the comment', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347978' do
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb
index bad312bb392..c489a61ca2a 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb
@@ -7,10 +7,7 @@ module QA
let(:template_content) { 'This is a custom issue template test' }
let(:template_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "custom-issue-template-project"
- project.initialize_with_readme = true
- end
+ create(:project, :with_readme, name: 'custom-issue-template-project')
end
before do
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb
index 5e989cdb03f..45c7f307834 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb
@@ -3,11 +3,7 @@
module QA
RSpec.describe 'Plan', :reliable, product_group: :project_management do
describe 'Issues list' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-to-test-export-issues-as-csv'
- end
- end
+ let(:project) { create(:project, name: 'project-to-test-export-issues-as-csv') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb
index 060e52276a9..d282b0dbbd5 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb
@@ -5,11 +5,7 @@ module QA
describe 'Assignees' do
let(:user1) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) }
let(:user2) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_2, Runtime::Env.gitlab_qa_password_2) }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-to-test-assignees'
- end
- end
+ let(:project) { create(:project, name: 'project-to-test-assignees') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb
index 7377b0ff8af..92a67437d06 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb
@@ -3,11 +3,7 @@
module QA
RSpec.describe 'Plan', :reliable, product_group: :project_management do
describe 'Issue board focus mode' do
- let(:project) do
- QA::Resource::Project.fabricate_via_api! do |project|
- project.name = 'sample-project-issue-board-focus-mode'
- end
- end
+ let(:project) { create(:project, name: 'sample-project-issue-board-focus-mode') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb
index 56e110e6f61..c3c2ad68abf 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb
@@ -8,18 +8,9 @@ module QA
let(:start_date) { current_date_yyyy_mm_dd }
let(:due_date) { next_month_yyyy_mm_dd }
- let(:group) do
- Resource::Group.fabricate_via_api! do |group|
- group.name = "group-to-test-milestones-#{SecureRandom.hex(4)}"
- end
- end
+ let(:group) { create(:group, name: "group-to-test-milestones-#{SecureRandom.hex(4)}") }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "project-to-test-milestones-#{SecureRandom.hex(4)}"
- project.group = group
- end
- end
+ let(:project) { create(:project, name: "project-to-test-milestones-#{SecureRandom.hex(4)}", group: group) }
let(:issue) do
Resource::Issue.fabricate_via_api! do |issue|
diff --git a/qa/qa/specs/features/browser_ui/2_plan/pages/new_static_page_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/pages/new_static_page_spec.rb
index 919b4b2c46e..3d4ec8a422e 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/pages/new_static_page_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/pages/new_static_page_spec.rb
@@ -12,13 +12,7 @@ module QA
feature_flag: { name: 'show_pages_in_deployments_menu' } do
# TODO: Convert back to :smoke once proved to be stable. Related issue: https://gitlab.com/gitlab-org/gitlab/-/issues/300906
describe 'Pages', product_group: :knowledge do
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'gitlab-pages-project'
- project.template_name = :plainhtml
- end
- end
-
+ let!(:project) { create(:project, name: 'gitlab-pages-projects', template_name: :plainhtml) }
let(:pipeline) do
Resource::Pipeline.fabricate_via_api! do |pipeline|
pipeline.project = project
diff --git a/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb
index e1f73acd375..19c9ac6c238 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb
@@ -7,7 +7,7 @@ module QA
let(:new_wiki_content) { "this content is changed or added" }
let(:commit_message) { "this is a new addition to the wiki" }
- let(:project) { Resource::Project.fabricate_via_api! }
+ let(:project) { create(:project) }
let(:wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! }
before do
diff --git a/qa/qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb
index 197e283c93b..87a0cf1b310 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Plan', :reliable, product_group: :project_management do
describe 'Related issues' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-to-test-related-issues'
- end
- end
-
+ let(:project) { create(:project, name: 'project-to-test-related-issues') }
let(:issue_1) do
Resource::Issue.fabricate_via_api! do |issue|
issue.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb
index 8f99644bd24..0e5806a00ff 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb
@@ -2,14 +2,8 @@
module QA
RSpec.describe 'Create' do
- describe 'Cherry picking from a merge request', product_group: :code_review do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project'
- project.initialize_with_readme = true
- end
- end
-
+ describe 'Cherry picking from a merge request', :reliable, product_group: :code_review do
+ let(:project) { create(:project, :with_readme) }
let(:feature_mr) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb
index 111adf32a69..fa4a1293025 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb
@@ -2,16 +2,9 @@
module QA
RSpec.describe 'Create' do
- describe 'Cherry picking a commit', product_group: :code_review do
+ describe 'Cherry picking a commit', :reliable, product_group: :code_review do
let(:file_name) { "secret_file.md" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project'
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme) }
let(:commit) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_from_push_notification_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_from_push_notification_spec.rb
index 509714fb5a4..ed44017db75 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_from_push_notification_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_from_push_notification_spec.rb
@@ -2,14 +2,11 @@
module QA
RSpec.describe 'Create' do
- describe 'Create a new merge request from the event notification after a push', product_group: :code_review do
+ describe 'Create a new merge request from the event notification after a push', :reliable,
+ product_group: :code_review do
let(:branch_name) { "merge-request-test-#{SecureRandom.hex(8)}" }
let(:title) { "Merge from push event notification test #{SecureRandom.hex(8)}" }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme) }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
index fcce6bb291c..89b43e88bde 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Create a new merge request', product_group: :code_review do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project'
- end
- end
-
+ let(:project) { create(:project) }
let(:merge_request_title) { 'One merge request to rule them all' }
let(:merge_request_description) { '... to find them, to bring them all, and in the darkness bind them' }
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb
index 1ce9430290f..4072416374a 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb
@@ -5,13 +5,7 @@ module QA
describe 'Merge request custom templates' do
let(:template_name) { 'custom_merge_request_template' }
let(:template_content) { 'This is a custom merge request template test' }
- let(:template_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'custom-mr-template-project'
- project.initialize_with_readme = true
- end
- end
-
+ let(:template_project) { create(:project, :with_readme, name: 'custom-mr-template-project') }
let(:merge_request_title) { 'One merge request to rule them all' }
before do
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb
index 38831f6f158..cad50fc032b 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb
@@ -5,14 +5,7 @@ module QA
describe 'Merge requests' do
shared_examples 'merge when pipeline succeeds' do |repeat: 1|
let(:runner_name) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'merge-when-pipeline-succeeds'
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme, name: 'merge-when-pipeline-succeeds') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
index a79c56bd051..5e3260fb44f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
@@ -4,14 +4,7 @@ module QA
RSpec.describe 'Create', :reliable, product_group: :code_review do
describe 'Reverting a commit' do
let(:file_name) { "secret_file.md" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project'
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme) }
let(:commit) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb
index a7071d5fe1b..8f85bab8677 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Merged merge request', :requires_admin, product_group: :code_review do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'revert'
- end
- end
-
+ let(:project) { create(:project) }
let(:revertible_merge_request) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
index a127b846eb9..33d5a5b050e 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
@@ -2,13 +2,8 @@
module QA
RSpec.describe 'Create' do
- describe 'Merge request squashing', product_group: :code_review do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "squash-before-merge"
- end
- end
-
+ describe 'Merge request squashing', :reliable, product_group: :code_review do
+ let(:project) { create(:project, name: 'squash-before-merge') }
let(:merge_request) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb
index 297f91be0bb..c69db9cf7b5 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb
@@ -2,13 +2,8 @@
module QA
RSpec.describe 'Create', :reliable, product_group: :code_review do
- context 'with merge request batch suggestions' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'suggestions_project'
- end
- end
-
+ describe 'Merge request batch suggestions' do
+ let(:project) { create(:project, name: 'batch-suggestions-project') }
let(:merge_request) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb
index ce32f4aadca..8a7fb2021e6 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb
@@ -2,15 +2,9 @@
module QA
RSpec.describe 'Create' do
- context 'with merge request suggestions', product_group: :code_review do
+ describe 'Merge request suggestions', :reliable, product_group: :code_review do
let(:commit_message) { 'Applying suggested change for testing purposes.' }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'suggestions_project'
- end
- end
-
+ let(:project) { create(:project, name: 'mr-suggestions-project') }
let(:merge_request) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb
index 3b332e6b9f5..09967b05ffa 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb
@@ -2,7 +2,7 @@
module QA
RSpec.describe 'Create' do
- describe 'Download merge request patch and diff', :requires_admin, product_group: :code_review do
+ describe 'Download merge request patch and diff', :reliable, :requires_admin, product_group: :code_review do
let(:merge_request) do
Resource::MergeRequest.fabricate_via_api! do |merge_request|
merge_request.title = 'This is a merge request'
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
index 7d21c635347..0a311a42863 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
@@ -6,11 +6,10 @@ module QA
include Runtime::Fixtures
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'file-template-project'
- project.description = 'Add file templates via the Files view'
- project.initialize_with_readme = true
- end
+ create(:project,
+ :with_readme,
+ name: 'file-template-project',
+ description: 'Add file templates via the Files view')
end
templates = [
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
index 1d9dccbddf6..6e508ba5206 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
@@ -6,12 +6,7 @@ module QA
let(:branch_name) { 'new-branch' }
let(:allowed_to_push_role) { Resource::ProtectedBranch::Roles::NO_ONE }
let(:allowed_to_merge_role) { Resource::ProtectedBranch::Roles::MAINTAINERS }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'branch-rule-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'branch-rule-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb
index afa9be034eb..368ac1f8cdb 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb
@@ -4,12 +4,7 @@ module QA
RSpec.describe 'Create' do
describe 'Branch with unusual name', product_group: :source_code do
let(:branch_name) { 'unUsually/named#br--anch' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |resource|
- resource.name = 'unusually-named-branch-project'
- resource.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'unusually-named-branch-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb
index b7df22fc2c2..15bd324da7c 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Git clone over HTTP', product_group: :source_code do
- let(:project) do
- Resource::Project.fabricate_via_api! do |scenario|
- scenario.name = 'project-with-code'
- scenario.description = 'project for git clone tests'
- end
- end
+ let(:project) { create(:project, name: 'project-with-code', description: 'project for git clone tests') }
before do
Git::Repository.perform do |repository|
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb
index d7da29219e6..5e221d06815 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb
@@ -4,12 +4,7 @@ module QA
RSpec.describe 'Create' do
describe 'File with unusual name', product_group: :source_code do
let(:file_name) { '-un:usually;named#file?.md' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |resource|
- resource.name = 'unusually-named-file-project'
- resource.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'unusually-named-file-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
index f00ef65fab4..8c8834b44a0 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
@@ -7,7 +7,7 @@ module QA
project.remove_via_api!
end
- let(:project) { Resource::Project.fabricate_via_api! }
+ let(:project) { create(:project) }
shared_examples 'project license detection' do
it 'displays the name of the license on the repository' do
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/move_project_create_fork_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/move_project_create_fork_spec.rb
index a13b1517740..781096323d2 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/move_project_create_fork_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/move_project_create_fork_spec.rb
@@ -4,13 +4,7 @@ module QA
RSpec.describe 'Create', :orchestrated, :repository_storage, :requires_admin, product_group: :source_code 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
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'parent-project'
- project.initialize_with_readme = true
- end
- end
-
+ let(:parent_project) { create(:project, :with_readme, name: 'parent-project') }
let(:fork_project) do
Resource::Fork.fabricate_via_api! do |fork|
fork.user = user
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb
index 479c5816938..0b55ea8241e 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb
@@ -3,13 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Repository tags', :reliable, product_group: :source_code do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-tags'
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme, name: 'project-for-tags') }
let(:developer_user) do
Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
index 557a27c002d..2cf8c4ae154 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
@@ -7,9 +7,7 @@ module QA
Flow::Login.sign_in
# Create a project to push to
- project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'git-protocol-project'
- end
+ project = create(:project, name: 'git-protocol-project')
file_name = 'README.md'
file_content = 'Test Git protocol v2'
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
index 2472d1cdf25..1f60eb16b01 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
@@ -28,9 +28,7 @@ module QA
end
it 'user pushes to the repository', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347734' do
- project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'git-protocol-project'
- end
+ project = create(:project, name: 'git-protocol-project')
file_name = 'README.md'
file_content = 'Test Git protocol v2'
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb
index b8a018552c6..4f45feb1b0a 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb
@@ -7,9 +7,7 @@ module QA
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials)
- target_project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'push-mirror-target-project'
- end
+ target_project = create(:project, name: 'push-mirror-target-project')
target_project_uri = target_project.repository_http_location.uri
target_project_uri.user = Runtime::User.username
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
index b87c47761bd..4cd371b524d 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
@@ -7,9 +7,7 @@ module QA
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials)
- target_project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'push-mirror-target-project'
- end
+ target_project = create(:project, name: 'push-mirror-target-project')
target_project_uri = target_project.repository_http_location.uri
target_project_uri.user = Runtime::User.username
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb
index 324dbbc46ef..76aba401aaa 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb
@@ -7,12 +7,7 @@ module QA
describe 'push after setting the file size limit via admin/application_settings' do
include Support::API
- let!(:project) do
- Resource::Project.fabricate_via_api! do |p|
- p.name = 'project-test-push-limit'
- p.initialize_with_readme = true
- end
- end
+ let!(:project) { create(:project, :with_readme, name: 'project-test-push-limit') }
after(:context) do
set_file_size_limit(nil)
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
index edc85849356..0b689081b7f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
@@ -23,10 +23,9 @@ module QA
:requires_praefect, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347789' do
Flow::Login.sign_in_as_admin
- project = Resource::Project.fabricate_via_api! do |storage_project|
- storage_project.name = 'specific-repository-storage'
- storage_project.repository_storage = QA::Runtime::Env.praefect_repository_storage
- end
+ project = create(:project,
+ name: 'specific-repository-storage',
+ repository_storage: Runtime::Env.praefect_repository_storage)
Resource::Repository::Push.fabricate! do |push|
push.repository_http_uri = project.repository_http_location.uri
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
index e097e1fd2bb..b06879e9140 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
@@ -5,12 +5,7 @@ module QA
describe 'Protected branch support' do
let(:branch_name) { 'protected-branch' }
let(:commit_message) { 'Protected push commit message' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |resource|
- resource.name = 'protected-branch-project'
- resource.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'protected-branch-project') }
before do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb
index d95a880c305..b20b1f8cd92 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb
@@ -6,10 +6,7 @@ module QA
it 'pushes to a project using a canary specific Gitaly repository storage', :smoke, :requires_admin, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/351116' do
Flow::Login.sign_in_as_admin
- project = Resource::Project.fabricate_via_api! do |storage_project|
- storage_project.name = 'canary-specific-repository-storage'
- storage_project.repository_storage = 'nfs-file-cny01' # TODO: move to ENV var
- end
+ project = create(:project, name: 'canary-specific-repository-storage', repository_storage: 'nfs-file-cny01') # TODO: move to ENV var
Resource::Repository::Push.fabricate! do |push|
push.repository_http_uri = project.repository_http_location.uri
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb
index 64858287285..a2fe79ae65d 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb
@@ -29,7 +29,7 @@ module QA
ssh_keys.remove_key(key.title)
end
- expect(page).not_to have_content("Title: #{key.title}")
+ expect(page).not_to have_content(key.title)
expect(page).not_to have_content(key.sha256_fingerprint)
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb
index 13b42209114..4f2e657fada 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb
@@ -2,7 +2,7 @@
module QA
RSpec.describe 'Create' do
- describe 'Commit data', product_group: :source_code do
+ describe 'Commit data', :reliable, product_group: :source_code do
before(:context) do
# Get the user's details to confirm they're included in the email patch
@user = Resource::User.fabricate_via_api! do |user|
diff --git a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
index 9b1df337065..bd98cb17332 100644
--- a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
@@ -3,13 +3,7 @@
module QA
RSpec.describe 'Create' do
describe 'Source editor toolbar preview', product_group: :source_code do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'empty-project-with-md'
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme, name: 'empty-project-with-md') }
let(:edited_readme_content) { 'Here is the edited content.' }
before do
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb
index 3e8f9307cec..4172aa03a72 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb
@@ -8,12 +8,7 @@ module QA
type: :flaky
} do
describe 'Add a directory in Web IDE' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'add-directory-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'add-directory-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb
index 336d32bcc35..afed95e18f9 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb
@@ -9,13 +9,7 @@ module QA
} do
describe 'Upload a file in Web IDE' do
let(:file_path) { File.absolute_path(File.join('qa', 'fixtures', 'web_ide', file_name)) }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'upload-file-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'upload-file-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/add_file_template_spec.rb
index 3e24fb496e7..18dd4d912d8 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/add_file_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/add_file_template_spec.rb
@@ -11,11 +11,10 @@ module QA
include Runtime::Fixtures
before(:all) do
- @project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'file-template-project'
- project.description = 'Add file templates via the Web IDE'
- project.initialize_with_readme = true
- end
+ @project = create(:project,
+ :with_readme,
+ name: 'file-template-project',
+ description: 'Add file templates via Web IDE')
end
templates = [
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/create_first_file_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/create_first_file_in_web_ide_spec.rb
index 775e14500d5..8fe58078393 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/create_first_file_in_web_ide_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/create_first_file_in_web_ide_spec.rb
@@ -8,13 +8,7 @@ module QA
end
describe 'First file using Web IDE' do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'empty-project'
- project.initialize_with_readme = false
- end
- end
-
+ let(:project) { create(:project, :with_readme, name: 'empty-project') }
let(:file_name) { 'the very first file.txt' }
before do
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/link_to_line_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/link_to_line_in_web_ide_spec.rb
index bea2e906d5e..57c8945d5c4 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/link_to_line_in_web_ide_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/link_to_line_in_web_ide_spec.rb
@@ -9,11 +9,7 @@ module QA
describe 'Link to line in Web IDE' do
let(:user) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.template_name = 'express'
- end
- end
+ let(:project) { create(:project, template_name: 'express') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/open_web_ide_from_diff_tab_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/open_web_ide_from_diff_tab_spec.rb
index c4ed2038f4c..10483a7cbee 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/open_web_ide_from_diff_tab_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/open_web_ide_from_diff_tab_spec.rb
@@ -23,12 +23,7 @@ module QA
}
]
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.initialize_with_readme = true
- end
- end
-
+ let(:project) { create(:project, :with_readme) }
let(:source) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/review_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/review_merge_request_spec.rb
index 1043e9051e3..4044494d3da 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/review_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/review_merge_request_spec.rb
@@ -11,13 +11,7 @@ module QA
let(:new_file) { 'awesome_new_file.txt' }
let(:original_text) { 'Text' }
let(:review_text) { 'Reviewed ' }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'review-merge-request-spec-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'review-mr-spec-project') }
let(:merge_request) do
Resource::MergeRequest.fabricate_via_api! do |mr|
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/server_hooks_custom_error_message_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/server_hooks_custom_error_message_spec.rb
index 05925505610..42fcbf5352f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/server_hooks_custom_error_message_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/server_hooks_custom_error_message_spec.rb
@@ -10,13 +10,9 @@ module QA
describe 'Git Server Hooks' do
let(:file_path) { Runtime::Path.fixture('web_ide', 'README.md') }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- # Projects that have names that include pattern 'reject-prereceive' trigger a server hook on orchestrated env
- # that returns an error string using GL-HOOK-ERR
- project.name = "project-reject-prereceive-#{SecureRandom.hex(8)}"
- end
- end
+ # Projects that have names that include pattern 'reject-prereceive' trigger a server hook on orchestrated env
+ # that returns an error string using GL-HOOK-ERR
+ let(:project) { create(:project, name: "project-reject-prereceive-#{SecureRandom.hex(8)}") }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/upload_new_file_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/upload_new_file_in_web_ide_spec.rb
index c557f2fa8a6..ab035d3b52c 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide_old/upload_new_file_in_web_ide_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide_old/upload_new_file_in_web_ide_spec.rb
@@ -9,12 +9,7 @@ module QA
describe 'Upload a file in Web IDE' do
let(:file_path) { Runtime::Path.fixture('web_ide', file_name) }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'upload-file-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'upload-file-project') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb
index b08a36b0d43..d5de93fdee6 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb
@@ -2,15 +2,9 @@
module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_security do
- describe "Unlocking job artifacts across parent-child pipelines" do
+ describe 'Unlocking job artifacts across parent-child pipelines' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'unlock-job-artifacts-parent-child-project'
- end
- end
-
+ let(:project) { create(:project, name: 'unlock-job-artifacts-parent-child-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
@@ -249,6 +243,8 @@ module QA
private
def update_parent_child_ci_files(parent_job_name:, parent_script:, child_job_name:, child_script:)
+ original_pipeline_count = pipeline_count
+
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
commit.commit_message = 'Update parent and child pipelines CI files.'
@@ -259,9 +255,13 @@ module QA
]
)
end
+
+ wait_for_pipeline_creation(original_pipeline_count)
end
def add_parent_child_ci_files(parent_job_name:, parent_script:, child_job_name:, child_script:)
+ original_pipeline_count = pipeline_count
+
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
commit.commit_message = 'Add parent and child pipelines CI files.'
@@ -272,6 +272,8 @@ module QA
]
)
end
+
+ wait_for_pipeline_creation(original_pipeline_count)
end
def parent_ci_file(job_name, script)
@@ -316,6 +318,16 @@ module QA
job.id = project.job_by_name(job_name)[:id]
end
end
+
+ def wait_for_pipeline_creation(original_pipeline_count)
+ Support::Waiter.wait_until(sleep_interval: 1, message: 'Wait for pipeline creation') do
+ pipeline_count > original_pipeline_count
+ end
+ end
+
+ def pipeline_count
+ project.pipelines.length
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb
index 41ce868f0d6..91e62dfba9b 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb
@@ -4,12 +4,7 @@ module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_security do
describe "Unlocking job artifacts across pipelines" do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'unlock-job-artifacts-project'
- end
- end
+ let(:project) { create(:project, name: 'unlock-job-artifacts-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/custom_variable_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/custom_variable_spec.rb
index 4515353dfc5..4ec9360be24 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/custom_variable_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/custom_variable_spec.rb
@@ -6,13 +6,7 @@ module QA
let(:executor) { "qa-runner-#{Time.now.to_i}" }
let(:pipeline_job_name) { 'customizable-variable' }
let(:variable_custom_value) { 'Custom Foo' }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-customizable-variable-pipeline'
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-customizable-variable-pipeline') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb
index e2d25e64687..8e168ef80f6 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb
@@ -5,13 +5,7 @@ module QA
describe 'Pipeline with protected variable' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
let(:protected_value) { Faker::Alphanumeric.alphanumeric(number: 8) }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-ci-variables'
- project.description = 'project with CI variables'
- end
- end
+ let(:project) { create(:project, name: 'project-with-ci-vars', description: 'project with CI vars') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb
index b62ae85436f..8d315f66034 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb
@@ -8,12 +8,7 @@ module QA
let(:prefill_variable_value5) { Faker::Lorem.word }
let(:prefill_variable_description2) { Faker::Lorem.sentence }
let(:prefill_variable_description5) { Faker::Lorem.sentence }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-prefill-variables'
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-prefill-variables') }
let!(:commit) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb
index 15959721935..f47949e0024 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb
@@ -5,12 +5,7 @@ module QA
describe 'Pipeline with raw variables in YAML', product_group: :pipeline_security do
let(:executor) { "qa-runner-#{Time.now.to_i}" }
let(:pipeline_job_name) { 'rspec' }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-raw-variable-pipeline'
- end
- end
+ let(:project) { create(:project, name: 'project-with-raw-variable-pipeline') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb
index 027383550a7..8cf923f543b 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb
@@ -3,11 +3,7 @@
module QA
RSpec.describe 'Verify' do
describe 'Include local config file paths with wildcard', :reliable, product_group: :pipeline_authoring do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline'
- end
- end
+ let(:project) { create(:project, name: 'project-with-pipeline') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb
index 5bbe09b3fb0..fe655f41992 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb
@@ -7,17 +7,8 @@ module QA
let(:expected_text) { Faker::Lorem.sentence }
let(:unexpected_text) { Faker::Lorem.sentence }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline-1'
- end
- end
-
- let(:other_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline-2'
- end
- end
+ let(:project) { create(:project, name: 'project-with-pipeline-1') }
+ let(:other_project) { create(:project, name: 'project-with-pipeline-2') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb
index 59591fbe1cd..da7b7ec720f 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb
@@ -4,25 +4,9 @@ module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_authoring do
describe 'Include multiple files from multiple projects' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:main_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline'
- end
- end
-
- let(:project1) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'external-project-1'
- end
- end
-
- let(:project2) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'external-project-2'
- end
- end
-
+ let(:main_project) { create(:project, name: 'project-with-pipeline') }
+ let(:project1) { create(:project, name: 'external-project-1') }
+ let(:project2) { create(:project, name: 'external-project-2') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = main_project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb
index ecf4826262b..3e1e2bc5b5b 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb
@@ -8,13 +8,7 @@ module QA
} do
context 'when pipeline is blocked' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-blocked-pipeline'
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-blocked-pipeline') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb
index fef90a7c8fc..52efacfd407 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Verify', :runner, :reliable, product_group: :pipeline_execution do
describe 'Parent-child pipelines independent relationship' do
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-independent-relationship'
- end
- end
-
+ let!(:project) { create(:project, name: 'pipeline-independent-relationship') }
let!(:runner) do
Resource::ProjectRunner.fabricate_via_api! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb
index 6295c596dda..f9a3856f810 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb
@@ -5,21 +5,9 @@ module QA
describe 'Pass dotenv variables to downstream via bridge' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
let(:upstream_var) { Faker::Alphanumeric.alphanumeric(number: 8) }
- let(:group) { Resource::Group.fabricate_via_api! }
-
- let(:upstream_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.group = group
- project.name = 'upstream-project-with-bridge'
- end
- end
-
- let(:downstream_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.group = group
- project.name = 'downstream-project-with-bridge'
- end
- end
+ let(:group) { create(:group) }
+ let(:upstream_project) { create(:project, group: group, name: 'upstream-project-with-bridge') }
+ let(:downstream_project) { create(:project, group: group, name: 'downstream-project-with-bridge') }
let!(:runner) do
Resource::GroupRunner.fabricate! do |runner|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_editor_can_create_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_editor_can_create_merge_request_spec.rb
index 1f7871b0900..f4847a9ec99 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_editor_can_create_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_editor_can_create_merge_request_spec.rb
@@ -3,12 +3,7 @@
module QA
RSpec.describe 'Verify' do
describe 'Pipeline editor', product_group: :pipeline_authoring do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-editor-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'pipeline-editor-project') }
before do
Flow::Login.sign_in
@@ -27,13 +22,6 @@ module QA
Page::Project::PipelineEditor::New.perform(&:create_new_ci)
Page::Project::PipelineEditor::Show.perform do |show|
- # Editor should display default content when project does not have CI file yet
- # New MR checkbox should not be rendered when a new target branch is yet to be provided
- aggregate_failures 'check editor default conditions' do
- expect(show.editing_content).not_to be_empty
- expect(show).to have_no_new_mr_checkbox
- end
-
# The new MR checkbox is visible after a new branch name is set
show.set_source_branch(SecureRandom.hex(10))
expect(show).to have_new_mr_checkbox
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb
index 1abe1df5964..69d8467e6ea 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb
@@ -5,13 +5,7 @@ module QA
describe 'Pipeline with image:pull_policy' do
let(:runner_name) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
let(:job_name) { "test-job-#{pull_policies.join('-')}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-with-image-pull-policy'
- end
- end
-
+ let(:project) { create(:project, name: 'pipeline-with-image-pull-policy') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb
index 9f43471035f..b96869658c9 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb
@@ -5,12 +5,7 @@ module QA
describe 'Run pipeline', :reliable, product_group: :pipeline_execution do
context 'with web only rule' do
let(:job_name) { 'test_job' }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'web-only-pipeline'
- end
- end
-
+ let(:project) { create(:project, name: 'web-only-pipeline') }
let!(:ci_file) do
Resource::Repository::Commit.fabricate_via_api! do |commit|
commit.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb
index d733ac9ba72..019228da130 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb
@@ -6,10 +6,7 @@ module QA
let(:executor) { "qa-runner-#{SecureRandom.hex(4)}" }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-with-manual-job'
- project.description = 'Project for pipeline with manual job'
- end
+ create(:project, name: 'pipeline-with-manual-job', description: 'Project for pipeline with manual job')
end
let!(:runner) do
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb
index 3361ab98bda..09d1fd331cd 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb
@@ -4,13 +4,7 @@ module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_execution do
describe "Trigger child pipeline with 'when:manual'" do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline'
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-pipeline') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
index bd656142989..6eea6756ee7 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
@@ -4,13 +4,7 @@ module QA
RSpec.describe 'Verify', :runner, product_group: :pipeline_authoring do
describe 'Trigger matrix' do
let(:executor) { "qa-runner-#{Faker::Alphanumeric.alphanumeric(number: 8)}" }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-pipeline'
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-pipeline') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb
index a749da4608a..5c0e2a9d668 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb
@@ -4,13 +4,7 @@ module QA
RSpec.describe 'Verify' do
describe 'Update CI file with pipeline editor', product_group: :pipeline_authoring do
let(:random_test_string) { SecureRandom.hex(10) }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pipeline-editor-project'
- end
- end
-
+ let(:project) { create(:project, name: 'pipeline-editor-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate_via_api! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
index e2bb6c33513..da7a6c537b8 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
@@ -11,12 +11,7 @@ module QA
# User views pipeline succeeds (Web read)
RSpec.describe 'Verify', :runner, product_group: :pipeline_security do
context 'Endpoint Coverage' do
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'endpoint-coverage'
- end
- end
-
+ let!(:project) { create(:project, name: 'endpoint-coverage') }
let!(:runner) do
Resource::ProjectRunner.fabricate_via_api! do |runner|
runner.project = project
diff --git a/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb
index 4b2d9f96cd2..49d1434035f 100644
--- a/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb
@@ -4,50 +4,46 @@ module QA
RSpec.describe 'Package' do
describe 'SaaS Container Registry', only: { subdomain: %i[staging staging-canary pre] },
product_group: :container_registry do
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-registry'
- project.template_name = 'express'
- end
- end
-
- let(:registry_repository) do
- Resource::RegistryRepository.fabricate! do |repository|
- repository.name = project.path_with_namespace.to_s
- repository.project = project
- end
- end
-
+ let(:project) { create(:project, name: 'project-with-registry', template_name: 'express') }
let!(:gitlab_ci_yaml) do
<<~YAML
- build:
- image: docker:24.0.1
- stage: build
- services:
- - docker:24.0.1-dind
- variables:
- IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- DOCKER_HOST: tcp://docker:2376
- DOCKER_TLS_CERTDIR: "/certs"
- DOCKER_TLS_VERIFY: 1
- DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
- before_script:
- - |
- echo "Waiting for docker to start..."
- for i in $(seq 1 30)
- do
- docker info && break
- sleep 1s
- done
- script:
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- - docker build -t $IMAGE_TAG .
- - docker push $IMAGE_TAG
- YAML
- end
+ stages:
+ - test
+ - build
- after do
- registry_repository&.remove_via_api!
+ test:
+ image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest
+ stage: test
+ script:
+ - 'status_code=$(curl --header "Authorization: Bearer $CI_JOB_TOKEN" "https://${CI_SERVER_HOST}/gitlab/v1")'
+ - |
+ if [ "$status_code" -eq 404 ]; then
+ echo "The registry implements this API specification, but it is unavailable because the metadata database is disabled."
+ exit 1
+ fi
+ build:
+ image: docker:24.0.1
+ stage: build
+ services:
+ - docker:24.0.1-dind
+ variables:
+ IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+ DOCKER_HOST: tcp://docker:2376
+ DOCKER_TLS_CERTDIR: "/certs"
+ DOCKER_TLS_VERIFY: 1
+ DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
+ before_script:
+ - |
+ echo "Waiting for docker to start..."
+ for i in $(seq 1 30); do
+ docker info && break
+ sleep 1s
+ done
+ script:
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+ - docker build -t $IMAGE_TAG .
+ - docker push $IMAGE_TAG
+ YAML
end
it 'pushes project image to the container registry and deletes tag',
@@ -69,11 +65,20 @@ module QA
Flow::Pipeline.visit_latest_pipeline
Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('test')
+ end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 200)
+
+ job.click_element(:pipeline_path)
+ end
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
pipeline.click_job('build')
end
Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
+ expect(job).to be_successful(timeout: 500)
end
Page::Project::Menu.perform(&:go_to_container_registry)
diff --git a/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/pull_container_registry_image_spec.rb b/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/pull_container_registry_image_spec.rb
index 85a88b54cc2..3c656d9ca75 100644
--- a/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/pull_container_registry_image_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/container_registry/saas/pull_container_registry_image_spec.rb
@@ -2,16 +2,18 @@
module QA
RSpec.describe 'Package' do
- describe 'SaaS Container Registry', only: { subdomain: %i[staging] }, product_group: :container_registry do
- let(:project) do
- Resource::Project.init do |project|
- project.path_with_namespace = 'gitlab-qa/container-registry-sanity'
- end.reload!
+ describe 'SaaS Container Registry', :smoke,
+ only: { subdomain: :staging }, product_group: :container_registry do
+ before do
+ Flow::Login.sign_in
end
it 'pulls an image from an existing repository',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/412799' do
- Flow::Login.sign_in
+ project = Resource::Project.init do |project|
+ project.path_with_namespace = 'gitlab-qa/container-registry-sanity'
+ end.reload!
+
project.visit!
Page::Project::Menu.perform(&:go_to_pipelines)
diff --git a/qa/qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb
index 800b3a01dc6..e4d6ba9c4db 100644
--- a/qa/qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb
@@ -5,14 +5,7 @@ module QA
describe 'Self-managed Container Registry' do
include Support::Helpers::MaskToken
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-with-registry'
- project.template_name = 'express'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'project-with-registry', template_name: 'express') }
let(:project_deploy_token) do
Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
deploy_token.name = 'registry-deploy-token'
@@ -43,10 +36,6 @@ module QA
project.visit!
end
- after do
- runner.remove_via_api!
- end
-
context "when tls is disabled" do
where do
{
@@ -200,27 +189,27 @@ module QA
file_path: '.gitlab-ci.yml',
content:
<<~YAML
- build:
- image: docker:23.0.6
- stage: build
- services:
+ build:
+ image: docker:23.0.6
+ stage: build
+ services:
- name: docker:23.0.6-dind
command:
- - /bin/sh
- - -c
- - |
- apk add --no-cache openssl
- true | openssl s_client -showcerts -connect gitlab.test:5050 > /usr/local/share/ca-certificates/gitlab.test.crt
- update-ca-certificates
- dockerd-entrypoint.sh || exit
- variables:
- IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- script:
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD gitlab.test:5050
- - docker build -t $IMAGE_TAG .
- - docker push $IMAGE_TAG
- tags:
- - "runner-for-#{project.name}"
+ - /bin/sh
+ - -c
+ - |
+ apk add --no-cache openssl
+ true | openssl s_client -showcerts -connect gitlab.test:5050 > /usr/local/share/ca-certificates/gitlab.test.crt
+ update-ca-certificates
+ dockerd-entrypoint.sh || exit
+ variables:
+ IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
+ script:
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD gitlab.test:5050
+ - docker build -t $IMAGE_TAG .
+ - docker push $IMAGE_TAG
+ tags:
+ - "runner-for-#{project.name}"
YAML
}
]
@@ -234,7 +223,11 @@ module QA
pipeline.click_job('build')
end
- Support::Retrier.retry_until(max_duration: 800, sleep_interval: 10) do
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 200)
+ end
+
+ Support::Retrier.retry_until(max_duration: 500, sleep_interval: 10) do
project.pipelines.last[:status] == 'success'
end
diff --git a/qa/qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb b/qa/qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb
index 235c3604523..dae0e17746c 100644
--- a/qa/qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb
@@ -6,13 +6,7 @@ module QA
using RSpec::Parameterized::TableSyntax
include Support::Helpers::MaskToken
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'dependency-proxy-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'dependency-proxy-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.name = "qa-runner-#{Time.now.to_i}"
@@ -35,8 +29,7 @@ module QA
let(:personal_access_token) { Runtime::Env.personal_access_token }
- let(:uri) { URI.parse(Runtime::Scenario.gitlab_address) }
- let(:gitlab_host_with_port) { "#{uri.host}:#{uri.port}" }
+ let(:gitlab_host_with_port) { Support::GitlabAddress.host_with_port }
let(:dependency_proxy_url) { "#{gitlab_host_with_port}/#{project.group.full_path}/dependency_proxy/containers" }
let(:image_sha) { 'alpine@sha256:c3d45491770c51da4ef58318e3714da686bc7165338b7ab5ac758e75c7455efb' }
diff --git a/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb
index 8dc9fb6db36..05c6694e69a 100644
--- a/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb
@@ -10,7 +10,7 @@ module QA
} do
include Runtime::Fixtures
- let(:group) { Resource::Group.fabricate_via_api! }
+ let(:group) { create(:group) }
let(:imported_project) do
Resource::ProjectImportedFromURL.fabricate_via_browser_ui! do |project|
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb
index 58eb63de21d..6e52208004f 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb
@@ -1,17 +1,11 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'Composer Repository' do
+ RSpec.describe 'Package', :object_storage, product_group: :package_registry do
+ describe 'Composer Repository', :external_api_calls do
include Runtime::Fixtures
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'composer-package-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :privtae, name: 'composer-package-project') }
let(:package) do
Resource::Package.init do |package|
package.name = "my_package-#{SecureRandom.hex(4)}"
@@ -28,10 +22,7 @@ module QA
end
end
- let!(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
- end
+ let(:gitlab_host_with_port) { Support::GitlabAddress.host_with_port }
before do
Flow::Login.sign_in
@@ -71,7 +62,14 @@ module QA
package.remove_via_api!
end
- it 'publishes a composer package and deletes it', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348016' do
+ it(
+ 'publishes a composer package and deletes it',
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348016',
+ quarantine: {
+ type: :broken,
+ issue: "https://gitlab.com/gitlab-org/gitlab/-/issues/421885"
+ }
+ ) do
Page::Project::Menu.perform(&:go_to_package_registry)
Page::Project::Packages::Index.perform do |index|
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb
index 83662e04fab..f2e19068f18 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb
@@ -1,21 +1,15 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, product_group: :package_registry, quarantine: {
- only: { job: %w[object_storage relative_url airgapped], condition: -> { QA::Support::FIPS.enabled? } },
+ RSpec.describe 'Package', :object_storage, :external_api_calls, product_group: :package_registry, quarantine: {
+ only: { job: 'object_storage', condition: -> { QA::Support::FIPS.enabled? } },
issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417584',
type: :bug
} do
describe 'Conan Repository' do
include Runtime::Fixtures
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'conan-package-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'conan-package-project') }
let(:package) do
Resource::Package.init do |package|
package.name = "conantest-#{SecureRandom.hex(8)}"
@@ -33,8 +27,7 @@ module QA
end
let(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
+ Support::GitlabAddress.address_with_port
end
after do
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb
index 1253dc91ca3..3c43e97e21e 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb
@@ -1,17 +1,11 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'Generic Repository' do
+ RSpec.describe 'Package', :object_storage, product_group: :package_registry do
+ describe 'Generic Repository', :external_api_calls do
include Runtime::Fixtures
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'generic-package-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'generic-package-project') }
let(:package) do
Resource::Package.init do |package|
package.name = "my_package-#{SecureRandom.hex(8)}"
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb
index 7bfda7f5956..42635a9e59f 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb
@@ -2,12 +2,7 @@
module QA
RSpec.describe 'Package', :object_storage, product_group: :package_registry do
- describe 'Helm Registry',
- quarantine: {
- only: { job: %w[relative_url airgapped] },
- issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417590',
- type: :investigating
- } do
+ describe 'Helm Registry', :external_api_calls do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures
include Support::Helpers::MaskToken
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb
index ce6c54b6ed8..3cbc78ab806 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb
@@ -2,12 +2,7 @@
module QA
RSpec.describe 'Package', :object_storage, product_group: :package_registry do
- describe 'Maven group level endpoint',
- quarantine: {
- only: { job: %w[relative_url airgapped] },
- issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417600',
- type: :investigating
- } do
+ describe 'Maven group level endpoint', :external_api_calls do
include Runtime::Fixtures
include Support::Helpers::MaskToken
include_context 'packages registry qa scenario'
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb
index 35f80f8d447..d1663f075e0 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb
@@ -1,12 +1,7 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage,
- quarantine: {
- only: { job: %w[relative_url airgapped] },
- issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417600',
- type: :investigating
- } do
+ RSpec.describe 'Package', :object_storage, :external_api_calls do
describe 'Maven project level endpoint', product_group: :package_registry do
include Runtime::Fixtures
include Support::Helpers::MaskToken
@@ -17,15 +12,7 @@ module QA
let(:package_version) { '1.3.7' }
let(:package_type) { 'maven' }
let(:personal_access_token) { Runtime::Env.personal_access_token }
-
- let(:package_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "#{package_type}_package_project"
- project.initialize_with_readme = true
- project.visibility = :private
- end
- end
-
+ let(:package_project) { create(:project, :with_readme, :private, name: "#{package_type}_package_project") }
let(:package) do
Resource::Package.init do |package|
package.name = package_name
@@ -43,8 +30,7 @@ module QA
end
let(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
+ Support::GitlabAddress.address_with_port
end
let(:project_deploy_token) do
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb
index f24466ed003..28037391aeb 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb
@@ -1,9 +1,9 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage,
+ RSpec.describe 'Package', :object_storage, :external_api_calls,
quarantine: {
- only: { job: 'relative_url', condition: -> { QA::Support::FIPS.enabled? } },
+ only: { condition: -> { QA::Support::FIPS.enabled? } },
issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417600',
type: :investigating
}, product_group: :package_registry do
@@ -17,15 +17,7 @@ module QA
let(:package_name) { "#{group_id}/#{artifact_id}".tr('.', '/') }
let(:package_version) { '1.3.7' }
let(:package_type) { 'maven_gradle' }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "#{package_type}_project"
- project.initialize_with_readme = true
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, :with_readme, name: "#{package_type}_project") }
let(:runner) do
Resource::ProjectRunner.fabricate! do |runner|
runner.name = "qa-runner-#{Time.now.to_i}"
@@ -36,8 +28,7 @@ module QA
end
let(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
+ Support::GitlabAddress.address_with_port
end
let(:project_deploy_token) do
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb
index 1b97f7d0a6a..0550c3373da 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb
@@ -2,170 +2,156 @@
module QA
RSpec.describe 'Package' do
- describe 'Package Registry', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'npm group level endpoint' do
- using RSpec::Parameterized::TableSyntax
- include Runtime::Fixtures
- include Support::Helpers::MaskToken
+ describe 'npm Registry group level endpoint', :object_storage, :external_api_calls,
+ product_group: :package_registry do
+ using RSpec::Parameterized::TableSyntax
+ include Runtime::Fixtures
+ include Support::Helpers::MaskToken
- let!(:registry_scope) { Runtime::Namespace.sandbox_name }
- let!(:personal_access_token) do
- Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
+ let!(:registry_scope) { Runtime::Namespace.sandbox_name }
+ let!(:personal_access_token) do
+ Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
- Resource::PersonalAccessToken.fabricate!.token
- end
-
- let(:project_deploy_token) do
- Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
- deploy_token.name = 'npm-deploy-token'
- deploy_token.project = project
- deploy_token.scopes = %w[
- read_repository
- read_package_registry
- write_package_registry
- ]
- end
- end
-
- let(:uri) { URI.parse(Runtime::Scenario.gitlab_address) }
- let(:gitlab_address_with_port) { "#{uri.scheme}://#{uri.host}:#{uri.port}" }
- let(:gitlab_host_with_port) { "#{uri.host}:#{uri.port}" }
+ Resource::PersonalAccessToken.fabricate!.token
+ end
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'npm-group-level-publish'
- end
+ let(:project_deploy_token) do
+ Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
+ deploy_token.name = 'npm-deploy-token'
+ deploy_token.project = project
+ deploy_token.scopes = %w[
+ read_repository
+ read_package_registry
+ write_package_registry
+ ]
end
+ end
- let!(:another_project) do
- Resource::Project.fabricate_via_api! do |another_project|
- another_project.name = 'npm-group-level-install'
- another_project.group = project.group
- end
+ let(:gitlab_address_without_port) { Support::GitlabAddress.address_with_port(with_default_port: false) }
+ let(:gitlab_host_without_port) { Support::GitlabAddress.host_with_port(with_default_port: false) }
+ let!(:project) { create(:project, name: 'npm-group-level-publish') }
+ let!(:another_project) { create(:project, name: 'npm-group-level-install', group: project.group) }
+ let!(:runner) do
+ Resource::GroupRunner.fabricate! do |runner|
+ runner.name = "qa-runner-#{Time.now.to_i}"
+ runner.tags = ["runner-for-#{project.group.name}"]
+ runner.executor = :docker
+ runner.group = project.group
end
+ end
- let!(:runner) do
- Resource::GroupRunner.fabricate! do |runner|
- runner.name = "qa-runner-#{Time.now.to_i}"
- runner.tags = ["runner-for-#{project.group.name}"]
- runner.executor = :docker
- runner.group = project.group
- end
+ let(:package) do
+ Resource::Package.init do |package|
+ package.name = "@#{registry_scope}/#{project.name}-#{SecureRandom.hex(8)}"
+ package.project = project
end
+ end
- let(:package) do
- Resource::Package.init do |package|
- package.name = "@#{registry_scope}/#{project.name}-#{SecureRandom.hex(8)}"
- package.project = project
- end
- end
+ after do
+ package.remove_via_api!
+ runner.remove_via_api!
+ project.remove_via_api!
+ another_project.remove_via_api!
+ end
- after do
- package.remove_via_api!
- runner.remove_via_api!
- project.remove_via_api!
- another_project.remove_via_api!
- end
+ where(:case_name, :authentication_token_type, :token_name, :testcase) do
+ 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413760'
+ 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413761'
+ 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413762'
+ end
- where(:case_name, :authentication_token_type, :token_name, :testcase) do
- 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413760'
- 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413761'
- 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/413762'
+ with_them do
+ let(:auth_token) do
+ case authentication_token_type
+ when :personal_access_token
+ use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
+ use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: another_project)
+ when :ci_job_token
+ '${CI_JOB_TOKEN}'
+ when :project_deploy_token
+ use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
+ use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: another_project)
+ end
end
- with_them do
- let(:auth_token) do
- case authentication_token_type
- when :personal_access_token
- use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
- use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: another_project)
- when :ci_job_token
- '${CI_JOB_TOKEN}'
- when :project_deploy_token
- use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
- use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: another_project)
+ it 'push and pull a npm package via CI', testcase: params[:testcase] do
+ Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
+ npm_upload_yaml = ERB.new(read_fixture('package_managers/npm',
+ 'npm_upload_package_group.yaml.erb')).result(binding)
+ package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
+
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add files'
+ commit.add_files([
+ {
+ file_path: '.gitlab-ci.yml',
+ content: npm_upload_yaml
+ },
+ {
+ file_path: 'package.json',
+ content: package_json
+ }
+ ])
end
end
- it 'push and pull a npm package via CI', testcase: params[:testcase] do
- Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
- npm_upload_yaml = ERB.new(read_fixture('package_managers/npm',
- 'npm_upload_package_group.yaml.erb')).result(binding)
- package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
-
- Resource::Repository::Commit.fabricate_via_api! do |commit|
- commit.project = project
- commit.commit_message = 'Add files'
- commit.add_files([
- {
- file_path: '.gitlab-ci.yml',
- content: npm_upload_yaml
- },
- {
- file_path: 'package.json',
- content: package_json
- }
- ])
- end
- end
-
- project.visit!
- Flow::Pipeline.visit_latest_pipeline
+ project.visit!
+ Flow::Pipeline.visit_latest_pipeline
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('deploy')
- end
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('deploy')
+ end
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ end
- Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
- Resource::Repository::Commit.fabricate_via_api! do |commit|
- npm_install_yaml = ERB.new(read_fixture('package_managers/npm',
- 'npm_install_package_group.yaml.erb')).result(binding)
-
- commit.project = another_project
- commit.commit_message = 'Add .gitlab-ci.yml'
- commit.add_files([
- {
- file_path: '.gitlab-ci.yml',
- content: npm_install_yaml
- }
- ])
- end
+ Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ npm_install_yaml = ERB.new(read_fixture('package_managers/npm',
+ 'npm_install_package_group.yaml.erb')).result(binding)
+
+ commit.project = another_project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([
+ {
+ file_path: '.gitlab-ci.yml',
+ content: npm_install_yaml
+ }
+ ])
end
+ end
- another_project.visit!
- Flow::Pipeline.visit_latest_pipeline
+ another_project.visit!
+ Flow::Pipeline.visit_latest_pipeline
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('install')
- end
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('install')
+ end
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- job.click_browse_button
- end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ job.click_browse_button
+ end
- Page::Project::Artifact::Show.perform do |artifacts|
- artifacts.go_to_directory('node_modules')
- artifacts.go_to_directory("@#{registry_scope}")
- expect(artifacts).to have_content(project.name.to_s)
- end
+ Page::Project::Artifact::Show.perform do |artifacts|
+ artifacts.go_to_directory('node_modules')
+ artifacts.go_to_directory("@#{registry_scope}")
+ expect(artifacts).to have_content(project.name.to_s)
+ end
- project.visit!
- Page::Project::Menu.perform(&:go_to_package_registry)
+ project.visit!
+ Page::Project::Menu.perform(&:go_to_package_registry)
- Page::Project::Packages::Index.perform do |index|
- expect(index).to have_package(package.name)
+ Page::Project::Packages::Index.perform do |index|
+ expect(index).to have_package(package.name)
- index.click_package(package.name)
- end
+ index.click_package(package.name)
+ end
- Page::Project::Packages::Show.perform do |show|
- expect(show).to have_package_info(package.name, "1.0.0")
- end
+ Page::Project::Packages::Show.perform do |show|
+ expect(show).to have_package_info(package.name, "1.0.0")
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb
index b0702b3f089..f8e526a01b0 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb
@@ -2,168 +2,154 @@
module QA
RSpec.describe 'Package' do
- describe 'Package Registry', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'npm instance level endpoint' do
- using RSpec::Parameterized::TableSyntax
- include Runtime::Fixtures
- include Support::Helpers::MaskToken
+ describe 'npm Registry instance level endpoint', :object_storage, :external_api_calls,
+ product_group: :package_registry do
+ using RSpec::Parameterized::TableSyntax
+ include Runtime::Fixtures
+ include Support::Helpers::MaskToken
- let!(:registry_scope) { Runtime::Namespace.sandbox_name }
- let!(:personal_access_token) do
- Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
+ let!(:registry_scope) { Runtime::Namespace.sandbox_name }
+ let!(:personal_access_token) do
+ Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
- Resource::PersonalAccessToken.fabricate!.token
- end
-
- let(:project_deploy_token) do
- Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
- deploy_token.name = 'npm-deploy-token'
- deploy_token.project = project
- deploy_token.scopes = %w[
- read_repository
- read_package_registry
- write_package_registry
- ]
- end
- end
-
- let(:uri) { URI.parse(Runtime::Scenario.gitlab_address) }
- let(:gitlab_address_with_port) { "#{uri.scheme}://#{uri.host}:#{uri.port}" }
- let(:gitlab_host_with_port) { "#{uri.host}:#{uri.port}" }
+ Resource::PersonalAccessToken.fabricate!.token
+ end
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'npm-instace-level-publish'
- end
+ let(:project_deploy_token) do
+ Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
+ deploy_token.name = 'npm-deploy-token'
+ deploy_token.project = project
+ deploy_token.scopes = %w[
+ read_repository
+ read_package_registry
+ write_package_registry
+ ]
end
+ end
- let!(:another_project) do
- Resource::Project.fabricate_via_api! do |another_project|
- another_project.name = 'npm-instance-level-install'
- another_project.group = project.group
- end
+ let(:gitlab_address_without_port) { Support::GitlabAddress.address_with_port(with_default_port: false) }
+ let(:gitlab_host_without_port) { Support::GitlabAddress.host_with_port(with_default_port: false) }
+ let!(:project) { create(:project, name: 'npm-instance-level-publish') }
+ let!(:another_project) { create(:project, name: 'npm-instance-level-install', group: project.group) }
+ let!(:runner) do
+ Resource::GroupRunner.fabricate! do |runner|
+ runner.name = "qa-runner-#{Time.now.to_i}"
+ runner.tags = ["runner-for-#{project.group.name}"]
+ runner.executor = :docker
+ runner.group = project.group
end
+ end
- let!(:runner) do
- Resource::GroupRunner.fabricate! do |runner|
- runner.name = "qa-runner-#{Time.now.to_i}"
- runner.tags = ["runner-for-#{project.group.name}"]
- runner.executor = :docker
- runner.group = project.group
- end
+ let(:package) do
+ Resource::Package.init do |package|
+ package.name = "@#{registry_scope}/#{project.name}-#{SecureRandom.hex(8)}"
+ package.project = project
end
+ end
- let(:package) do
- Resource::Package.init do |package|
- package.name = "@#{registry_scope}/#{project.name}-#{SecureRandom.hex(8)}"
- package.project = project
- end
- end
+ after do
+ package.remove_via_api!
+ runner.remove_via_api!
+ project.remove_via_api!
+ another_project.remove_via_api!
+ end
- after do
- package.remove_via_api!
- runner.remove_via_api!
- project.remove_via_api!
- another_project.remove_via_api!
- end
+ where(:case_name, :authentication_token_type, :token_name, :testcase) do
+ 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347600'
+ 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347599'
+ 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347598'
+ end
- where(:case_name, :authentication_token_type, :token_name, :testcase) do
- 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347600'
- 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347599'
- 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347598'
+ with_them do
+ let(:auth_token) do
+ case authentication_token_type
+ when :personal_access_token
+ use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
+ use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: another_project)
+ when :ci_job_token
+ '${CI_JOB_TOKEN}'
+ when :project_deploy_token
+ use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
+ use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: another_project)
+ end
end
- with_them do
- let(:auth_token) do
- case authentication_token_type
- when :personal_access_token
- use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
- use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: another_project)
- when :ci_job_token
- '${CI_JOB_TOKEN}'
- when :project_deploy_token
- use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
- use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: another_project)
+ it 'push and pull a npm package via CI', testcase: params[:testcase] do
+ Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
+ npm_upload_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_upload_package_instance.yaml.erb')).result(binding)
+ package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
+
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add files'
+ commit.add_files([
+ {
+ file_path: '.gitlab-ci.yml',
+ content: npm_upload_yaml
+ },
+ {
+ file_path: 'package.json',
+ content: package_json
+ }
+ ])
end
end
- it 'push and pull a npm package via CI', testcase: params[:testcase] do
- Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
- npm_upload_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_upload_package_instance.yaml.erb')).result(binding)
- package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
-
- Resource::Repository::Commit.fabricate_via_api! do |commit|
- commit.project = project
- commit.commit_message = 'Add files'
- commit.add_files([
- {
- file_path: '.gitlab-ci.yml',
- content: npm_upload_yaml
- },
- {
- file_path: 'package.json',
- content: package_json
- }
- ])
- end
- end
-
- project.visit!
- Flow::Pipeline.visit_latest_pipeline
+ project.visit!
+ Flow::Pipeline.visit_latest_pipeline
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('deploy')
- end
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('deploy')
+ end
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ end
- Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
- Resource::Repository::Commit.fabricate_via_api! do |commit|
- npm_install_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_install_package_instance.yaml.erb')).result(binding)
-
- commit.project = another_project
- commit.commit_message = 'Add .gitlab-ci.yml'
- commit.add_files([
- {
- file_path: '.gitlab-ci.yml',
- content: npm_install_yaml
- }
- ])
- end
+ Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ npm_install_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_install_package_instance.yaml.erb')).result(binding)
+
+ commit.project = another_project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([
+ {
+ file_path: '.gitlab-ci.yml',
+ content: npm_install_yaml
+ }
+ ])
end
+ end
- another_project.visit!
- Flow::Pipeline.visit_latest_pipeline
+ another_project.visit!
+ Flow::Pipeline.visit_latest_pipeline
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('install')
- end
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('install')
+ end
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- job.click_browse_button
- end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ job.click_browse_button
+ end
- Page::Project::Artifact::Show.perform do |artifacts|
- artifacts.go_to_directory('node_modules')
- artifacts.go_to_directory("@#{registry_scope}")
- expect(artifacts).to have_content(project.name.to_s)
- end
+ Page::Project::Artifact::Show.perform do |artifacts|
+ artifacts.go_to_directory('node_modules')
+ artifacts.go_to_directory("@#{registry_scope}")
+ expect(artifacts).to have_content(project.name.to_s)
+ end
- project.visit!
- Page::Project::Menu.perform(&:go_to_package_registry)
+ project.visit!
+ Page::Project::Menu.perform(&:go_to_package_registry)
- Page::Project::Packages::Index.perform do |index|
- expect(index).to have_package(package.name)
+ Page::Project::Packages::Index.perform do |index|
+ expect(index).to have_package(package.name)
- index.click_package(package.name)
- end
+ index.click_package(package.name)
+ end
- Page::Project::Packages::Show.perform do |show|
- expect(show).to have_package_info(package.name, "1.0.0")
- end
+ Page::Project::Packages::Show.perform do |show|
+ expect(show).to have_package_info(package.name, "1.0.0")
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb
index 1eed68d1b88..11df6dcb303 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb
@@ -2,141 +2,132 @@
module QA
RSpec.describe 'Package' do
- describe 'Package Registry', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'npm project level endpoint' do
- using RSpec::Parameterized::TableSyntax
- include Runtime::Fixtures
- include Support::Helpers::MaskToken
+ describe 'npm Registry project level endpoint', :object_storage, :external_api_calls,
+ product_group: :package_registry do
+ using RSpec::Parameterized::TableSyntax
+ include Runtime::Fixtures
+ include Support::Helpers::MaskToken
- let!(:registry_scope) { Runtime::Namespace.sandbox_name }
- let!(:personal_access_token) do
- Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
+ let!(:registry_scope) { Runtime::Namespace.sandbox_name }
+ let!(:personal_access_token) do
+ Flow::Login.sign_in unless Page::Main::Menu.perform(&:signed_in?)
- Resource::PersonalAccessToken.fabricate!.token
+ Resource::PersonalAccessToken.fabricate!.token
+ end
+
+ let(:project_deploy_token) do
+ Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
+ deploy_token.name = 'npm-deploy-token'
+ deploy_token.project = project
+ deploy_token.scopes = %w[
+ read_repository
+ read_package_registry
+ write_package_registry
+ ]
end
+ end
- let(:project_deploy_token) do
- Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
- deploy_token.name = 'npm-deploy-token'
- deploy_token.project = project
- deploy_token.scopes = %w[
- read_repository
- read_package_registry
- write_package_registry
- ]
- end
+ let(:gitlab_address_without_port) { Support::GitlabAddress.address_with_port(with_default_port: false) }
+ let(:gitlab_host_without_port) { Support::GitlabAddress.host_with_port(with_default_port: false) }
+ let!(:project) { create(:project, :private, name: 'npm-project-level') }
+ let!(:runner) do
+ Resource::ProjectRunner.fabricate! do |runner|
+ runner.name = "qa-runner-#{Time.now.to_i}"
+ runner.tags = ["runner-for-#{project.name}"]
+ runner.executor = :docker
+ runner.project = project
end
+ end
- let(:uri) { URI.parse(Runtime::Scenario.gitlab_address) }
- let(:gitlab_address_with_port) { "#{uri.scheme}://#{uri.host}:#{uri.port}" }
- let(:gitlab_host_with_port) { "#{uri.host}:#{uri.port}" }
+ let(:package) do
+ Resource::Package.init do |package|
+ package.name = "@#{registry_scope}/mypackage-#{SecureRandom.hex(8)}"
+ package.project = project
+ end
+ end
- let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'npm-project-level'
- project.visibility = :private
+ after do
+ package.remove_via_api!
+ runner.remove_via_api!
+ project.remove_via_api!
+ end
+
+ where(:case_name, :authentication_token_type, :token_name, :testcase) do
+ 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347592'
+ 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347594'
+ 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347593'
+ end
+
+ with_them do
+ let(:auth_token) do
+ case authentication_token_type
+ when :personal_access_token
+ use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
+ when :ci_job_token
+ '${CI_JOB_TOKEN}'
+ when :project_deploy_token
+ use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
end
end
- let!(:runner) do
- Resource::ProjectRunner.fabricate! do |runner|
- runner.name = "qa-runner-#{Time.now.to_i}"
- runner.tags = ["runner-for-#{project.name}"]
- runner.executor = :docker
- runner.project = project
+ it 'push and pull a npm package via CI', testcase: params[:testcase] do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ npm_upload_install_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_upload_install_package_project.yaml.erb')).result(binding)
+ package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
+
+ commit.project = project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([
+ {
+ file_path: '.gitlab-ci.yml',
+ content: npm_upload_install_yaml
+ },
+ {
+ file_path: 'package.json',
+ content: package_json
+ }
+ ])
end
- end
- let(:package) do
- Resource::Package.init do |package|
- package.name = "@#{registry_scope}/mypackage-#{SecureRandom.hex(8)}"
- package.project = project
+ project.visit!
+ Flow::Pipeline.visit_latest_pipeline
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('deploy')
end
- end
- after do
- package.remove_via_api!
- runner.remove_via_api!
- project.remove_via_api!
- end
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ end
- where(:case_name, :authentication_token_type, :token_name, :testcase) do
- 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347592'
- 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347594'
- 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347593'
- end
+ Flow::Pipeline.visit_latest_pipeline
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('install')
+ end
+
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ job.click_browse_button
+ end
+
+ Page::Project::Artifact::Show.perform do |artifacts|
+ artifacts.go_to_directory('node_modules')
+ artifacts.go_to_directory("@#{registry_scope}")
+ expect(artifacts).to have_content('mypackage')
+ end
+
+ project.visit!
+ Page::Project::Menu.perform(&:go_to_package_registry)
+
+ Page::Project::Packages::Index.perform do |index|
+ expect(index).to have_package(package.name)
- with_them do
- let(:auth_token) do
- case authentication_token_type
- when :personal_access_token
- use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: personal_access_token, project: project)
- when :ci_job_token
- '${CI_JOB_TOKEN}'
- when :project_deploy_token
- use_ci_variable(name: 'PROJECT_DEPLOY_TOKEN', value: project_deploy_token.token, project: project)
- end
+ index.click_package(package.name)
end
- it 'push and pull a npm package via CI', testcase: params[:testcase] do
- Resource::Repository::Commit.fabricate_via_api! do |commit|
- npm_upload_install_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_upload_install_package_project.yaml.erb')).result(binding)
- package_json = ERB.new(read_fixture('package_managers/npm', 'package.json.erb')).result(binding)
-
- commit.project = project
- commit.commit_message = 'Add .gitlab-ci.yml'
- commit.add_files([
- {
- file_path: '.gitlab-ci.yml',
- content: npm_upload_install_yaml
- },
- {
- file_path: 'package.json',
- content: package_json
- }
- ])
- end
-
- project.visit!
- Flow::Pipeline.visit_latest_pipeline
-
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('deploy')
- end
-
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- end
-
- Flow::Pipeline.visit_latest_pipeline
-
- Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('install')
- end
-
- Page::Project::Job::Show.perform do |job|
- expect(job).to be_successful(timeout: 800)
- job.click_browse_button
- end
-
- Page::Project::Artifact::Show.perform do |artifacts|
- artifacts.go_to_directory('node_modules')
- artifacts.go_to_directory("@#{registry_scope}")
- expect(artifacts).to have_content('mypackage')
- end
-
- project.visit!
- Page::Project::Menu.perform(&:go_to_package_registry)
-
- Page::Project::Packages::Index.perform do |index|
- expect(index).to have_package(package.name)
-
- index.click_package(package.name)
- end
-
- Page::Project::Packages::Show.perform do |show|
- expect(show).to have_package_info(package.name, "1.0.0")
- end
+ Page::Project::Packages::Show.perform do |show|
+ expect(show).to have_package_info(package.name, "1.0.0")
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_group_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_group_level_spec.rb
index 5413ae85dcd..04e020178ee 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_group_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_group_level_spec.rb
@@ -1,20 +1,13 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'NuGet group level endpoint' do
+ RSpec.describe 'Package', :object_storage, product_group: :package_registry do
+ describe 'NuGet group level endpoint', :external_api_calls do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures
include Support::Helpers::MaskToken
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'nuget-package-project'
- project.template_name = 'dotnetcore'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'nuget-package-project', template_name: 'dotnetcore') }
let(:personal_access_token) do
unless Page::Main::Menu.perform(&:signed_in?)
Flow::Login.sign_in
@@ -42,14 +35,7 @@ module QA
end
end
- let(:another_project) do
- Resource::Project.fabricate_via_api! do |another_project|
- another_project.name = 'nuget-package-install-project'
- another_project.template_name = 'dotnetcore'
- another_project.group = project.group
- end
- end
-
+ let(:another_project) { create(:project, name: 'nuget-package-install-project', template_name: 'dotnetcore', group: project.group) }
let(:package_project_inbound_job_token_disabled) do
Resource::CICDSettings.fabricate_via_api! do |settings|
settings.project_path = project.full_path
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb
index 9a192bc005f..b4cac8af1dc 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb
@@ -1,20 +1,12 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, except: { job: 'relative-url' }, product_group: :package_registry do
- describe 'NuGet project level endpoint' do
+ RSpec.describe 'Package', :object_storage, product_group: :package_registry do
+ describe 'NuGet project level endpoint', :external_api_calls do
include Support::Helpers::MaskToken
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'nuget-package-project'
- project.template_name = 'dotnetcore'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'nuget-package-project', template_name: 'dotnetcore') }
let(:personal_access_token) { Resource::PersonalAccessToken.fabricate! }
-
let(:project_deploy_token) do
Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
deploy_token.name = 'package-deploy-token'
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb
index 7e2885d3724..80439501299 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb
@@ -2,22 +2,11 @@
module QA
RSpec.describe 'Package', :object_storage, product_group: :package_registry do
- describe 'PyPI Repository',
- quarantine: {
- only: { job: %w[relative_url airgapped] },
- issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417592',
- type: :investigating
- } do
+ describe 'PyPI Repository', :external_api_calls do
include Runtime::Fixtures
include Support::Helpers::MaskToken
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'pypi-package-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'pypi-package-project') }
let(:package) do
Resource::Package.init do |package|
package.name = "mypypipackage-#{SecureRandom.hex(8)}"
@@ -40,15 +29,8 @@ module QA
use_ci_variable(name: 'PERSONAL_ACCESS_TOKEN', value: Runtime::Env.personal_access_token, project: project)
end
- let(:gitlab_address_with_port) { "#{uri.scheme}://#{uri.host}:#{uri.port}" }
- let(:gitlab_host_with_port) do
- # Don't specify port if it is a standard one
- if uri.port == 80 || uri.port == 443
- uri.host
- else
- "#{uri.host}:#{uri.port}"
- end
- end
+ let(:gitlab_address_with_port) { Support::GitlabAddress.address_with_port }
+ let(:gitlab_host_with_port) { Support::GitlabAddress.host_with_port(with_default_port: false) }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb
index 0c58d41d96e..c77bb9b1b4b 100644
--- a/qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb
@@ -1,18 +1,12 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Package', :object_storage, except: { job: 'relative-url' },
+ RSpec.describe 'Package', :object_storage, :external_api_calls,
feature_flag: { name: 'rubygem_packages', scope: :project } do
describe 'RubyGems Repository', product_group: :package_registry do
include Runtime::Fixtures
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'rubygems-package-project'
- project.visibility = :private
- end
- end
-
+ let(:project) { create(:project, :private, name: 'rubygems-package-project') }
let(:package) do
Resource::Package.init do |package|
package.name = "mygem-#{SecureRandom.hex(8)}"
@@ -30,8 +24,7 @@ module QA
end
let(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
+ Support::GitlabAddress.address_with_port
end
before do
diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
index 51006dd1e38..d9a1f1cd4a6 100644
--- a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
@@ -7,13 +7,7 @@ module QA
describe 'Git clone using a deploy key' do
let(:runner_name) { "qa-runner-#{SecureRandom.hex(4)}" }
let(:repository_location) { project.repository_ssh_location }
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'deploy-key-clone-project'
- end
- end
-
+ let(:project) { create(:project, name: 'deploy-key-clone-project') }
let!(:runner) do
Resource::ProjectRunner.fabricate_via_api! do |resource|
resource.project = project
diff --git a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb
index 42a64099a3d..7e941a135f1 100644
--- a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb
+++ b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb
@@ -25,12 +25,11 @@ module QA
with_them do
let!(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = "#{template}-autodevops-project-template"
- project.template_name = template
- project.description = "Let's see if the #{template} project works..."
- project.auto_devops_enabled = true
- end
+ create(:project,
+ :auto_devops,
+ name: "#{template}-autodevops-project-template",
+ template_name: template,
+ description: "Let's see if the #{template} project works")
end
let(:pipeline) do
diff --git a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
index 0a9f30f0529..8ee77f5c054 100644
--- a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
+++ b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
@@ -4,16 +4,8 @@ module QA
RSpec.describe 'Configure',
only: { pipeline: %i[staging staging-canary canary production] }, product_group: :configure do
describe 'Auto DevOps with a Kubernetes Agent' do
- let!(:app_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'autodevops-app-project'
- project.template_name = 'express'
- project.auto_devops_enabled = true
- end
- end
-
+ let!(:app_project) { create(:project, :auto_devops, name: 'autodevops-app-project', template_name: 'express') }
let!(:cluster) { Service::KubernetesCluster.new(provider_class: Service::ClusterProvider::Gcloud).create! }
-
let!(:kubernetes_agent) do
Resource::Clusters::Agent.fabricate_via_api! do |agent|
agent.name = 'agent1'
@@ -28,7 +20,7 @@ module QA
end
before do
- cluster.install_kubernetes_agent(agent_token.token)
+ cluster.install_kubernetes_agent(agent_token.token, kubernetes_agent.name)
upload_agent_config(app_project, kubernetes_agent.name)
set_kube_ingress_base_domain(app_project)
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb
index b44020ddfce..79739006928 100644
--- a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb
+++ b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb
@@ -12,13 +12,7 @@ module QA
end
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-alerts'
- project.description = 'Project for alerts'
- end
- end
-
+ let(:project) { create(:project, name: 'project-for-alerts', description: 'Project for alerts') }
let(:alert_title) { Faker::Lorem.word }
before do
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb
index 565f56b90ec..dff130a5793 100644
--- a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb
+++ b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb
@@ -12,12 +12,7 @@ module QA
end
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-alerts'
- project.description = 'Project for alerts'
- end
- end
+ let(:project) { create(:project, name: 'project-for-alerts', description: 'Project for alerts') }
before do
Flow::Login.sign_in
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb
index 96db10c1683..dfc41fdad85 100644
--- a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb
@@ -28,15 +28,8 @@ module QA
end
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-alerts'
- project.description = 'Project for alerts'
- end
- end
-
+ let(:project) { create(:project, name: 'project-for-alerts', description: 'Project for alerts') }
let(:alert_title) { Faker::Lorem.word }
-
let(:credentials) do
Flow::AlertSettings.integration_credentials
end
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb
index 008d8f808b3..85aa12062d5 100644
--- a/qa/qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb
+++ b/qa/qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb
@@ -19,13 +19,7 @@ module QA
end
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'project-for-alerts'
- project.description = 'Project for alerts'
- end
- end
-
+ let(:project) { create(:project, name: 'project-for-alerts', description: 'Project for alerts') }
let(:alert_title) { Faker::Lorem.word }
let(:mail_hog_api) { Vendor::MailHog::API.new }
let(:alert_email_subject) { "#{project.name} | Alert: #{alert_title}" }
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
index 1206898431a..0c977e5259c 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
@@ -12,10 +12,7 @@ module QA
end
let!(:group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "group-for-access-request-#{SecureRandom.hex(8)}"
- group.api_client = admin_api_client
- end
+ create(:group, path: "group-for-access-request-#{SecureRandom.hex(8)}", api_client: admin_api_client)
end
before do
@@ -27,7 +24,7 @@ module QA
Flow::Login.sign_in_as_admin
Page::Main::Menu.perform do |menu|
- menu.go_to_page_by_shortcut(:todos_shortcut_button)
+ menu.go_to_page_by_shortcut('todos-shortcut-button')
end
Page::Dashboard::Todos.perform do |todos|
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_group_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_group_spec.rb
index 2f14e2c10da..2a1f8a58108 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_group_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_group_spec.rb
@@ -3,23 +3,12 @@
module QA
RSpec.describe 'Data Stores' do
describe 'Subgroup transfer', product_group: :tenant_scale do
- let(:source_group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "source-group-for-transfer_#{SecureRandom.hex(8)}"
- end
- end
+ let(:source_group) { create(:group, path: "source-group-for-transfer_#{SecureRandom.hex(8)}") }
- let!(:target_group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "target-group-for-transfer_#{SecureRandom.hex(8)}"
- end
- end
+ let!(:target_group) { create(:group, path: "target-group-for-transfer_#{SecureRandom.hex(8)}") }
let(:sub_group_for_transfer) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "subgroup-for-transfer_#{SecureRandom.hex(8)}"
- group.sandbox = source_group
- end
+ create(:group, path: "subgroup-for-transfer_#{SecureRandom.hex(8)}", sandbox: source_group)
end
before do
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_project_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_project_spec.rb
index 02e1598d6e7..6de1d08e674 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/group/transfer_project_spec.rb
@@ -2,26 +2,10 @@
module QA
RSpec.describe 'Data Stores' do
- describe 'Project transfer between groups', :reliable, product_group: :tenant_scale do
- let(:source_group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "source-group-#{SecureRandom.hex(8)}"
- end
- end
-
- let!(:target_group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "target-group-for-transfer_#{SecureRandom.hex(8)}"
- end
- end
-
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.group = source_group
- project.name = 'transfer-project'
- end
- end
-
+ describe 'Project transfer', :reliable, product_group: :tenant_scale do
+ let(:project) { create(:project, name: 'transfer-project', group: source_group) }
+ let(:source_group) { create(:group, path: "source-group-#{SecureRandom.hex(8)}") }
+ let!(:target_group) { create(:group, path: "target-group-for-transfer_#{SecureRandom.hex(8)}") }
let(:readme_content) { 'Here is the edited content.' }
before do
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb
index 0beb297ffdb..7fb970c3f25 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/add_project_member_spec.rb
@@ -2,16 +2,13 @@
module QA
RSpec.describe 'Data Stores', :reliable, product_group: :tenant_scale do
- describe 'Add project member' do
- it 'user adds project member', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347887' do
+ describe 'Project Member' do
+ it 'adds a project member', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347887' do
Flow::Login.sign_in
user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
- project = Resource::Project.fabricate_via_api! do |project|
- project.name = 'add-member-project'
- end
-
+ project = create(:project, name: 'add-member-project')
project.visit!
Page::Project::Menu.perform(&:click_members)
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/create_project_badge_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/create_project_badge_spec.rb
index 87492af089e..22f8cc93737 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/create_project_badge_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/create_project_badge_spec.rb
@@ -2,26 +2,21 @@
module QA
RSpec.describe 'Data Stores' do
- describe 'Create project badge', :reliable, product_group: :tenant_scale do
+ describe 'Project badge', :reliable, product_group: :tenant_scale do
let(:badge_name) { "project-badge-#{SecureRandom.hex(8)}" }
let(:expected_badge_link_url) { "#{Runtime::Scenario.gitlab_address}/#{project.path_with_namespace}" }
let(:expected_badge_image_url) do
"#{Runtime::Scenario.gitlab_address}/#{project.path_with_namespace}/badges/main/pipeline.svg"
end
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'badge-test-project'
- project.initialize_with_readme = true
- end
- end
+ let(:project) { create(:project, :with_readme, name: 'badge-test-project') }
before do
Flow::Login.sign_in
project.visit!
end
- it 'creates project badge successfully',
+ it 'creates project badge',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/350065' do
Resource::ProjectBadge.fabricate! do |badge|
badge.name = badge_name
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
index f2136773f59..2ea96dfef95 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
@@ -16,7 +16,7 @@ module QA
user.remove_via_api!
end
- it 'loads all images' do
+ it do
Flow::Login.sign_in(as: user)
Page::Dashboard::Welcome.perform do |welcome|
@@ -32,14 +32,14 @@ module QA
describe 'Check for broken images', :requires_admin, :reliable do
context(
- 'when logged in as a new user',
+ 'when a new user logs in',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347885'
) do
it_behaves_like 'loads all images', false
end
context(
- 'when logged in as a new admin',
+ 'when a new admin logs in',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347884'
) do
it_behaves_like 'loads all images', true
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
index c7501d437eb..29e39d48c67 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
@@ -4,7 +4,7 @@ module QA
RSpec.describe 'Data Stores' do
describe 'Invite group', :reliable, product_group: :tenant_scale do
shared_examples 'invites group to project' do
- it 'verifies group is added and members can access project with correct access level' do
+ it 'grants group and members correct access level' do
Page::Project::Menu.perform(&:click_members)
Page::Project::Members.perform do |project_members|
project_members.invite_group(group.path, 'Developer')
@@ -40,19 +40,14 @@ module QA
context 'with a personal namespace project',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349223' do
- let(:group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "group-for-personal-project-#{SecureRandom.hex(8)}"
- end
- end
+ let(:group) { create(:group, path: "group-for-personal-project-#{SecureRandom.hex(8)}") }
let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'personal-namespace-project'
- project.personal_namespace = Runtime::User.username
- project.visibility = :private
- project.description = 'test personal namespace project'
- end
+ create(:project,
+ :private,
+ name: 'personal-namespace-project',
+ description: 'test personal namespace project',
+ personal_namespace: Runtime::User.username)
end
after do
@@ -64,19 +59,9 @@ module QA
end
context 'with a group project', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349340' do
- let(:group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "group-for-group-project-#{SecureRandom.hex(8)}"
- end
- end
+ let(:group) { create(:group, path: "group-for-group-project-#{SecureRandom.hex(8)}") }
- let(:project) do
- Resource::Project.fabricate_via_api! do |project|
- project.name = 'group-project'
- project.visibility = :private
- project.description = 'test group project'
- end
- end
+ let(:project) { create(:project, :private, name: 'group-project', description: 'test group project') }
after do
project.remove_via_api!
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/project_owner_permissions_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/project_owner_permissions_spec.rb
index 2793b0440a4..310b8747584 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/project_owner_permissions_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/project_owner_permissions_spec.rb
@@ -13,7 +13,7 @@ module QA
Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_2, Runtime::Env.gitlab_qa_password_2)
end
- shared_examples 'when user is added as owner' do |project_type, testcase|
+ shared_examples 'adds user as owner' do |project_type, testcase|
let!(:issue) do
Resource::Issue.fabricate_via_api! do |issue|
issue.api_client = owner_api_client
@@ -27,7 +27,7 @@ module QA
Flow::Login.sign_in(as: owner)
end
- it "has owner role with owner permissions", testcase: testcase do
+ it "has owner role and permissions", testcase: testcase do
Page::Dashboard::Projects.perform do |projects|
projects.filter_by_name(project.name)
@@ -44,7 +44,7 @@ module QA
end
end
- shared_examples 'when user is added as maintainer' do |testcase|
+ shared_examples 'adds user as maintainer' do |testcase|
let!(:issue) do
Resource::Issue.fabricate_via_api! do |issue|
issue.api_client = owner_api_client
@@ -82,12 +82,12 @@ module QA
end
end
- it_behaves_like 'when user is added as owner', :personal_project, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/352542'
- it_behaves_like 'when user is added as maintainer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/352607'
+ it_behaves_like 'adds user as owner', :personal_project, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/352542'
+ it_behaves_like 'adds user as maintainer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/352607'
end
context 'for group projects' do
- let!(:group) { Resource::Group.fabricate_via_api! }
+ let!(:group) { create(:group) }
let!(:project) do
Resource::Project.fabricate_via_api! do |project|
@@ -96,8 +96,8 @@ module QA
end
end
- it_behaves_like 'when user is added as owner', :group_project, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/366436'
- it_behaves_like 'when user is added as maintainer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/366435'
+ it_behaves_like 'adds user as owner', :group_project, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/366436'
+ it_behaves_like 'adds user as maintainer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/366435'
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb
index 4945ef533a4..5cdb88407fb 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/view_project_activity_spec.rb
@@ -3,22 +3,24 @@
module QA
RSpec.describe 'Data Stores' do
describe 'Project activity', :reliable, product_group: :tenant_scale do
- it 'user creates an event in the activity page upon Git push',
- testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347879' do
- Flow::Login.sign_in
+ context 'with git push' do
+ it 'creates an event in the activity page',
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347879' do
+ Flow::Login.sign_in
- project = Resource::Repository::ProjectPush.fabricate! do |push|
- push.file_name = 'README.md'
- push.file_content = '# This is a test project'
- push.commit_message = 'Add README.md'
- end.project
+ project = Resource::Repository::ProjectPush.fabricate! do |push|
+ push.file_name = 'README.md'
+ push.file_content = '# This is a test project'
+ push.commit_message = 'Add README.md'
+ end.project
- project.visit!
- Page::Project::Menu.perform(&:click_activity)
- Page::Project::Activity.perform do |activity|
- activity.click_push_events
+ project.visit!
+ Page::Project::Menu.perform(&:click_activity)
+ Page::Project::Activity.perform do |activity|
+ activity.click_push_events
- expect(activity).to have_content("pushed new branch #{project.default_branch}")
+ expect(activity).to have_content("pushed new branch #{project.default_branch}")
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
index c78151b94b7..a119d600667 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
@@ -22,10 +22,9 @@ module QA
end
let(:group) do
- group = QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "group_for_follow_user_activity_#{SecureRandom.hex(8)}"
- group.api_client = admin_api_client
- end
+ group = create(:group,
+ path: "group_for_follow_user_activity_#{SecureRandom.hex(8)}",
+ api_client: admin_api_client)
group.add_member(followed_user, Resource::Members::AccessLevel::MAINTAINER)
group
end
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/parent_group_access_termination_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/parent_group_access_termination_spec.rb
index 7e88f3a9ac3..562bd1b1aa1 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/parent_group_access_termination_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/parent_group_access_termination_spec.rb
@@ -11,11 +11,7 @@ module QA
end
end
- let!(:group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "group-to-test-access-termination-#{SecureRandom.hex(8)}"
- end
- end
+ let!(:group) { create(:group, path: "group-to-test-access-termination-#{SecureRandom.hex(8)}") }
let!(:project) do
Resource::Project.fabricate_via_api! do |project|
@@ -25,7 +21,7 @@ module QA
end
end
- context 'when parent group membership is terminated' do
+ context 'with terminated parent group membership' do
before do
group.add_member(user)
@@ -40,7 +36,7 @@ module QA
end
end
- it 'is not allowed to edit the project files',
+ it 'can not edit the project files',
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347866' do
Flow::Login.sign_in(as: user)
project.visit!
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
index 78baba403fd..8553e1739ce 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
@@ -6,16 +6,11 @@ module QA
let(:admin_api_client) { Runtime::API::Client.as_admin }
let!(:parent_group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "parent-group-to-test-user-access-#{SecureRandom.hex(8)}"
- end
+ create(:group, path: "parent-group-to-test-user-access-#{SecureRandom.hex(8)}")
end
let!(:sub_group) do
- QA::Resource::Group.fabricate_via_api! do |group|
- group.path = "sub-group-to-test-user-access-#{SecureRandom.hex(8)}"
- group.sandbox = parent_group
- end
+ create(:group, path: "sub-group-to-test-user-access-#{SecureRandom.hex(8)}", sandbox: parent_group)
end
context 'when added to parent group' do
diff --git a/qa/qa/specs/features/shared_contexts/import/github_import_shared_context.rb b/qa/qa/specs/features/shared_contexts/import/github_import_shared_context.rb
index 55ed9abb0da..445586d31ac 100644
--- a/qa/qa/specs/features/shared_contexts/import/github_import_shared_context.rb
+++ b/qa/qa/specs/features/shared_contexts/import/github_import_shared_context.rb
@@ -10,10 +10,7 @@ module QA
let!(:api_client) { Runtime::API::Client.as_admin }
let!(:group) do
- Resource::Group.fabricate_via_api! do |resource|
- resource.api_client = api_client
- resource.path = "destination-group-for-import-#{SecureRandom.hex(4)}"
- end
+ create(:group, api_client: api_client, path: "destination-group-for-import-#{SecureRandom.hex(4)}")
end
let!(:user) do
diff --git a/qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb b/qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb
index 5ab7bb331c0..3905a05633f 100644
--- a/qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb
+++ b/qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb
@@ -51,8 +51,7 @@ module QA
end
let(:gitlab_address_with_port) do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- "#{uri.scheme}://#{uri.host}:#{uri.port}"
+ Support::GitlabAddress.address_with_port
end
let(:project_deploy_token) do
diff --git a/qa/qa/specs/features/shared_contexts/variable_inheritance_shared_context.rb b/qa/qa/specs/features/shared_contexts/variable_inheritance_shared_context.rb
index 2219031e9c6..69786c55be8 100644
--- a/qa/qa/specs/features/shared_contexts/variable_inheritance_shared_context.rb
+++ b/qa/qa/specs/features/shared_contexts/variable_inheritance_shared_context.rb
@@ -5,12 +5,7 @@ module QA
let(:key) { 'TEST_VAR' }
let(:value) { 'This is great!' }
let(:random_string) { Faker::Alphanumeric.alphanumeric(number: 8) }
-
- let(:group) do
- Resource::Group.fabricate_via_api! do |group|
- group.path = "group-for-variable-inheritance-#{random_string}"
- end
- end
+ let(:group) { create(:group, path: "group-for-variable-inheritance-#{random_string}") }
let(:upstream_project) do
Resource::Project.fabricate_via_api! do |project|
diff --git a/qa/qa/specs/features/shared_examples/create_and_terminate_workspace_shared_examples.rb b/qa/qa/specs/features/shared_examples/create_and_terminate_workspace_shared_examples.rb
new file mode 100644
index 00000000000..7a9a485d611
--- /dev/null
+++ b/qa/qa/specs/features/shared_examples/create_and_terminate_workspace_shared_examples.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.shared_examples 'workspaces actions' do
+ it 'creates a new workspace and then stops and terminates it' do
+ QA::Page::Main::Menu.perform(&:go_to_workspaces)
+ workspace_name = ""
+
+ QA::EE::Page::Workspace::List.perform do |list|
+ existing_workspaces = list.get_workspaces_list
+ list.create_workspace(kubernetes_agent.name, devfile_project.name)
+ updated_workspaces = list.get_workspaces_list
+ workspace_name = (updated_workspaces - existing_workspaces).fetch(0, '').to_s
+ raise "Workspace name is empty" if workspace_name == ''
+
+ expect(list).to have_workspace_state(workspace_name, "Creating")
+ list.wait_for_workspaces_creation(workspace_name)
+ expect(list).to have_workspace_state(workspace_name, "Running")
+ end
+
+ QA::EE::Page::Workspace::Action.perform do |workspace|
+ workspace.click_workspace_action(workspace_name, "stop")
+ end
+
+ QA::EE::Page::Workspace::List.perform do |list_item|
+ expect(list_item).to have_workspace_state(workspace_name, "Stopped")
+ end
+
+ QA::EE::Page::Workspace::Action.perform do |workspace|
+ workspace.click_workspace_action(workspace_name, "terminate")
+ end
+
+ QA::EE::Page::Workspace::List.perform do |list_item|
+ expect(list_item).to have_workspace_state(workspace_name, "Terminated")
+ end
+ end
+ end
+end