diff options
Diffstat (limited to 'qa/qa/specs/features/browser_ui')
42 files changed, 487 insertions, 576 deletions
diff --git a/qa/qa/specs/features/browser_ui/1_manage/group/gitlab_migration_group_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/group/gitlab_migration_group_spec.rb index a1b9e232e3d..c690202f091 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/group/gitlab_migration_group_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/group/gitlab_migration_group_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - describe 'Manage', :requires_admin, :reliable do + describe 'Manage', :requires_admin, :reliable, product_group: :import do describe 'Gitlab migration' do let!(:admin_api_client) { Runtime::API::Client.as_admin } let!(:user) do diff --git a/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb index 2c331584cf7..d684eabe644 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'Project transfer between groups', :reliable do + describe 'Project transfer between groups', :reliable, product_group: :workspace do let(:source_group) do Resource::Group.fabricate_via_api! do |group| group.path = "source-group-#{SecureRandom.hex(8)}" @@ -27,9 +27,7 @@ module QA before do Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = project - commit.add_files([ - { file_path: 'README.md', content: readme_content } - ]) + commit.add_files([{ file_path: 'README.md', content: readme_content }]) end Flow::Login.sign_in diff --git a/qa/qa/specs/features/browser_ui/3_create/jenkins/jenkins_build_status_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb index 4bfd253c992..b8d00c2faee 100644 --- a/qa/qa/specs/features/browser_ui/3_create/jenkins/jenkins_build_status_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true module QA - RSpec.describe 'Create', :requires_admin, :skip_live_env, except: { job: 'review-qa-*' } do - describe 'Jenkins integration' do + RSpec.describe 'Manage', :requires_admin, :skip_live_env, except: { job: 'review-qa-*' } do + describe 'Jenkins integration', product_group: :integrations do let(:jenkins_server) { Service::DockerRun::Jenkins.new } let(:jenkins_client) do @@ -48,7 +48,8 @@ module QA toggle_local_requests(false) end - it 'integrates and displays build status for MR pipeline in GitLab', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347788' do + it 'integrates and displays build status for MR pipeline in GitLab', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347788' do setup_project_integration jenkins_integration = project.find_integration('jenkins') @@ -133,7 +134,8 @@ module QA def patch_host_name(host_name, container_name) return host_name unless host_name.include?('localhost') - ip_address = `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' #{container_name}`.strip + ip_address = `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' #{container_name}` + .strip host_name.gsub('localhost', ip_address) end diff --git a/qa/qa/specs/features/browser_ui/3_create/jira/jira_basic_integration_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb index 088556a3981..5a4031b4305 100644 --- a/qa/qa/specs/features/browser_ui/3_create/jira/jira_basic_integration_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true module QA - RSpec.describe 'Create' do + RSpec.describe 'Manage' do include Support::API - describe 'Jira integration', :jira, :orchestrated, :requires_admin do + describe 'Jira integration', :jira, :orchestrated, :requires_admin, product_group: :integrations do let(:jira_project_key) { 'JITP' } let(:project) do Resource::Project.fabricate_via_api! do |project| @@ -15,7 +15,8 @@ module QA before do page.visit Vendor::Jira::JiraAPI.perform(&:base_url) - QA::Support::Retrier.retry_until(sleep_interval: 3, reload_page: page, max_attempts: 20, raise_on_failure: true) do + QA::Support::Retrier + .retry_until(sleep_interval: 3, reload_page: page, max_attempts: 20, raise_on_failure: true) do page.has_text? 'Welcome to Jira' end @@ -33,10 +34,11 @@ module QA jira.setup_service_with(url: Vendor::Jira::JiraAPI.perform(&:base_url)) end - expect(page).not_to have_text("Requests to the local network are not allowed") + expect(page).not_to have_text("Requests to the local network are not allowed") # rubocop:disable RSpec/ExpectInHook end - it 'closes an issue via pushing a commit', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347794' do + it 'closes an issue via pushing a commit', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347794' do issue_key = Vendor::Jira::JiraAPI.perform do |jira_api| jira_api.create_issue(jira_project_key) end @@ -46,7 +48,8 @@ module QA expect_issue_done(issue_key) end - it 'closes an issue via a merge request', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347795' do + it 'closes an issue via a merge request', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347795' do issue_key = Vendor::Jira::JiraAPI.perform do |jira_api| jira_api.create_issue(jira_project_key) end diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/jira_issue_import_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb index d8435407296..7e46276be92 100644 --- a/qa/qa/specs/features/browser_ui/2_plan/issue/jira_issue_import_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true module QA - RSpec.describe 'Plan', :reliable do - describe 'Jira issue import', :jira, :orchestrated, :requires_admin do + RSpec.describe 'Manage', :reliable do + describe 'Jira issue import', :jira, :orchestrated, :requires_admin, product_group: :integrations do let(:jira_project_key) { "JITD" } let(:jira_issue_title) { "[#{jira_project_key}-1] Jira to GitLab Test Issue" } let(:jira_issue_description) { "This issue is for testing importing Jira issues to GitLab." } diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_status_emails_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb index f4794b3a904..4495d83f336 100644 --- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_status_emails_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb @@ -24,7 +24,7 @@ module QA end end - RSpec.describe 'Verify', :orchestrated, :runner, :requires_admin, :smtp do + RSpec.describe 'Manage', :orchestrated, :runner, :requires_admin, :smtp, product_group: :integrations do describe 'Pipeline status emails' do let(:executor) { "qa-runner-#{Time.now.to_i}" } let(:emails) { %w[foo@bar.com baz@buzz.com] } 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 ad90df4b90d..56883917153 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 @@ -3,8 +3,12 @@ module QA RSpec.describe 'Manage', :requires_admin, :skip_live_env 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) } + let!(:owner_user) do Resource::User.fabricate_via_api! do |usr| + usr.username = "owner_user_#{SecureRandom.hex(4)}" usr.api_client = admin_api_client end end @@ -26,6 +30,7 @@ module QA let(:developer_user) do Resource::User.fabricate_via_api! do |resource| + resource.username = "developer_user_#{SecureRandom.hex(4)}" resource.api_client = admin_api_client end end @@ -38,8 +43,7 @@ module QA it( 'allows enforcing 2FA via UI and logging in with 2FA', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347931', - quarantine: { type: :flaky, issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/369516' } + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347931' ) do enforce_two_factor_authentication_on_group(group) @@ -70,14 +74,6 @@ module QA developer_user.remove_via_api! end - def admin_api_client - @admin_api_client ||= Runtime::API::Client.as_admin - end - - def owner_api_client - @owner_api_client ||= Runtime::API::Client.new(:gitlab, user: owner_user) - end - # We are intentionally using the UI to enforce 2FA to exercise the flow with UI. # Any future tests should use the API for this purpose. def enforce_two_factor_authentication_on_group(group) @@ -87,7 +83,9 @@ module QA Page::Group::Menu.perform(&:click_group_general_settings_item) Page::Group::Settings::General.perform(&:set_require_2fa_enabled) - expect(page).to have_text(two_fa_expected_text) + QA::Support::Retrier.retry_on_exception(reload_page: page) do + expect(page).to have_text(two_fa_expected_text) + end Page::Profile::TwoFactorAuth.perform(&:click_configure_it_later_button) diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb index 90fbff3261e..3f461e9247f 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - RSpec.describe 'Manage', :reliable do + RSpec.describe 'Manage', :reliable, product_group: :workspace do describe 'Add project member' do it 'user adds project member', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347887' do Flow::Login.sign_in diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_badge_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_badge_spec.rb index f624f2fb44f..b251b3075dd 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_badge_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_badge_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'Create project badge', :reliable do + describe 'Create project badge', :reliable, product_group: :workspace 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) { "#{Runtime::Scenario.gitlab_address}/#{project.path_with_namespace}/badges/main/pipeline.svg" } diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb index d07fff80b19..7c6b0d77219 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - RSpec.describe 'Manage', :smoke do + RSpec.describe 'Manage', :smoke, product_group: :workspace do describe 'Project' do shared_examples 'successful project creation' do it 'creates a new project' do diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb index d299997dd3c..2abbb6ca73c 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - RSpec.describe 'Manage' do + RSpec.describe 'Manage', product_group: :workspace do shared_examples 'loads all images' do |admin| let(:api_client) { Runtime::API::Client.as_admin } diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb index 0477a9b8a1f..6ac11fea7e1 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb @@ -3,7 +3,7 @@ module QA # Spec uses real github.com, which means outage of github can actually block deployment # Keep spec in reliable bucket but don't run in blocking pipelines - RSpec.describe 'Manage', :github, :reliable, :skip_live_env, :requires_admin do + RSpec.describe 'Manage', :github, :reliable, :skip_live_env, :requires_admin, product_group: :import do describe 'Project import' do let(:github_repo) { 'gitlab-qa-github/import-test' } let(:api_client) { Runtime::API::Client.as_admin } diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/invite_group_to_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/invite_group_to_project_spec.rb index dbfb114dc82..164f86bffce 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/invite_group_to_project_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/invite_group_to_project_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'Invite group', :reliable do + describe 'Invite group', :reliable, product_group: :workspace do shared_examples 'invites group to project' do it 'verifies group is added and members can access project with correct access level' do Page::Project::Menu.perform(&:click_members) diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/project_owner_permissions_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/project_owner_permissions_spec.rb index 29e590976d2..98a08dd0d9a 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/project_owner_permissions_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/project_owner_permissions_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'Project owner permissions', :reliable do + describe 'Project owner permissions', :reliable, product_group: :workspace do let!(:owner) 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/1_manage/project/view_project_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb index 88f4996ff03..33ca5f6009c 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'Project activity', :reliable do + describe 'Project activity', :reliable, product_group: :workspace 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 diff --git a/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb index a384dc16064..b9b82baa6f1 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'User', :requires_admin do + describe 'User', :requires_admin, product_group: :workspace do let(:admin_api_client) { Runtime::API::Client.as_admin } let(:followed_user_api_client) { Runtime::API::Client.new(:gitlab, user: followed_user) } diff --git a/qa/qa/specs/features/browser_ui/1_manage/user/user_access_termination_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/user/parent_group_access_termination_spec.rb index 8462f5db30b..54f05f84dca 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/user/user_access_termination_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/user/parent_group_access_termination_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'User', :requires_admin, :reliable do + describe 'User', :requires_admin, :reliable, product_group: :workspace do let(:admin_api_client) { Runtime::API::Client.as_admin } let!(:user) do @@ -27,7 +27,7 @@ module QA end end - context 'after parent group membership termination' do + context 'for after parent group membership termination' do before do Flow::Login.while_signed_in_as_admin do group.sandbox.visit! @@ -39,7 +39,14 @@ module QA end end - it 'is not allowed to edit the project files', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347866' do + after do + user.remove_via_api! + project.remove_via_api! + group.remove_via_api! + end + + it 'is not allowed to edit the project files', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347866' do Flow::Login.sign_in(as: user) project.visit! @@ -51,12 +58,6 @@ module QA expect(page).to have_text("You can’t edit files directly in this project.") end - - after do - user.remove_via_api! - project.remove_via_api! - group.remove_via_api! - end end end end diff --git a/qa/qa/specs/features/browser_ui/1_manage/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/user/user_inherited_access_spec.rb index 8de9d7c2049..b7585f00630 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/user/user_inherited_access_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/user/user_inherited_access_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Manage' do - describe 'User', :requires_admin do + describe 'User', :requires_admin, product_group: :workspace do let(:admin_api_client) { Runtime::API::Client.as_admin } let!(:sub_group) 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 206e6b8a456..b2c612d38fe 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 @@ -19,12 +19,13 @@ module QA Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = template_project commit.commit_message = 'Add custom issue template' - commit.add_files([ - { - file_path: ".gitlab/issue_templates/#{template_name}.md", - content: template_content - } - ]) + commit.add_files( + [ + { + file_path: ".gitlab/issue_templates/#{template_name}.md", + content: template_content + } + ]) end end 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 a1d8b495129..d6e9c1a13df 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 @@ -18,9 +18,7 @@ module QA commit.branch = "development" commit.start_branch = project.default_branch commit.commit_message = 'Add new file' - commit.add_files([ - { file_path: file_name, content: 'pssst!' } - ]) + commit.add_files([{ file_path: file_name, content: 'pssst!' }]) end end 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 6ce4217f8ac..d975e18e962 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 @@ -20,12 +20,13 @@ module QA Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = template_project commit.commit_message = 'Add custom merge request template' - commit.add_files([ - { - file_path: ".gitlab/merge_request_templates/#{template_name}.md", - content: template_content - } - ]) + commit.add_files( + [ + { + file_path: ".gitlab/merge_request_templates/#{template_name}.md", + content: template_content + } + ]) end end 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 8885163b5e3..205ff12ff03 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 @@ -16,9 +16,7 @@ module QA Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = project commit.commit_message = 'Add new file' - commit.add_files([ - { file_path: file_name, content: 'pssst!' } - ]) + commit.add_files([{ file_path: file_name, content: 'pssst!' }]) end end diff --git a/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_creation_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_creation_spec.rb new file mode 100644 index 00000000000..37e737a4f84 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_creation_spec.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Testing wiki content creation inside a project' do + let(:new_wiki_title) { "just_another_wiki_page" } + 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(:wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } + + before do + Flow::Login.sign_in + end + + it 'by adding a home page to the wiki', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347809' do + project.visit! + + Page::Project::Menu.perform(&:click_wiki) + Page::Project::Wiki::Show.perform(&:click_create_your_first_page) + + Page::Project::Wiki::Edit.perform do |edit| + edit.set_title new_wiki_title + edit.set_content new_wiki_content + edit.set_message commit_message + end + + Page::Project::Wiki::Edit.perform(&:click_submit) + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_title new_wiki_title + expect(wiki).to have_content new_wiki_content + end + end + + it 'by adding a second page to the wiki', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347808' do + wiki.visit! + + Page::Project::Wiki::Show.perform(&:click_new_page) + + Page::Project::Wiki::Edit.perform do |edit| + edit.set_title new_wiki_title + edit.set_content new_wiki_content + edit.set_message commit_message + end + + Page::Project::Wiki::Edit.perform(&:click_submit) + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_title new_wiki_title + expect(wiki).to have_content new_wiki_content + end + end + + it 'by adding a home page to the wiki using git push', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347806' do + empty_wiki = Resource::Wiki::ProjectPage.new do |empty_wiki| + empty_wiki.project = project + end + + Resource::Repository::WikiPush.fabricate! do |push| + push.file_name = "#{new_wiki_title}.md" + push.file_content = new_wiki_content + push.commit_message = commit_message + push.wiki = empty_wiki + push.new_branch = true + end.visit! + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_title new_wiki_title + expect(wiki).to have_content new_wiki_content + end + end + + it 'by adding a second page to the wiki using git push', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347807' do + Resource::Repository::WikiPush.fabricate! do |push| + push.file_name = "#{new_wiki_title}.md" + push.file_content = new_wiki_content + push.commit_message = commit_message + push.wiki = wiki + push.new_branch = false + end.visit! + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_title new_wiki_title + expect(wiki).to have_content new_wiki_content + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_manipulation_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_manipulation_spec.rb new file mode 100644 index 00000000000..a4bdb0193dd --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_manipulation_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Testing wiki content manipulation inside a project' do + let(:new_wiki_title) { "just_another_wiki_page" } + let(:new_wiki_content) { "this content is changed or added" } + let(:commit_message) { "this is a new addition to the wiki" } + + let(:wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } + + before do + Flow::Login.sign_in + end + + it 'by manipulating content on the page', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347810' do + wiki.visit! + + Page::Project::Wiki::Show.perform(&:click_edit) + + Page::Project::Wiki::Edit.perform do |edit| + edit.set_title new_wiki_title + edit.set_content new_wiki_content + edit.set_message commit_message + end + + Page::Project::Wiki::Edit.perform(&:click_submit) + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_title new_wiki_title + expect(wiki).to have_content new_wiki_content + end + end + + it 'by manipulating content on the page using git push', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347811' do + Resource::Repository::WikiPush.fabricate! do |push| + push.file_content = new_wiki_content + push.commit_message = commit_message + push.wiki = wiki + push.new_branch = false + end.visit! + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_content new_wiki_content + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_directory_management_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_directory_management_spec.rb index 2d24f69c883..0af964fc4bf 100644 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_directory_management_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_directory_management_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Create' do - context 'Wiki' do + describe 'A project wiki' do let(:initial_wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } let(:new_path) { "a/new/path-with-spaces" } @@ -10,7 +10,8 @@ module QA Flow::Login.sign_in end - it 'has changed the directory', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347821' do + it 'can change the directory path of a page', +testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347821' do initial_wiki.visit! Page::Project::Wiki::Show.perform(&:click_edit) diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/content_editor_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_file_upload_spec.rb index 4b8edf8b792..361fc459d54 100644 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/content_editor_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_file_upload_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Create', :reliable do - context 'Content Editor' do + describe 'Testing project wiki file upload' do let(:initial_wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } let(:page_title) { 'Content Editor Page' } let(:heading_text) { 'My New Heading' } @@ -16,7 +16,8 @@ module QA initial_wiki.project.remove_via_api! end - it 'creates a formatted Wiki page with an image uploaded', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347640' do + it 'by creating a formatted page with an image uploaded', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347640' do initial_wiki.visit! Page::Project::Wiki::Show.perform(&:click_new_page) diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_list_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_list_spec.rb index 703d425079d..5c9b97659a7 100644 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_list_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_list_spec.rb @@ -2,7 +2,7 @@ module QA RSpec.describe 'Create' do - context 'Wiki' do + describe 'Project Wiki' do let(:small_number_of_pages) { 5 } let(:large_number_of_pages) { 15 } let(:random_page) { "bulk_#{rand(0..4)}" } @@ -14,8 +14,9 @@ module QA Flow::Login.sign_in end - context 'Sidebar' do - it 'has all expected links that work', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347814' do + context 'with Wiki Sidebar' do + it 'has all expected links that work', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347814' do small_wiki.visit! small_number_of_pages.times do |index| @@ -34,8 +35,9 @@ module QA end end - context 'Page List' do - it 'has all expected links that work', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347813' do + context 'with Wiki Page List' do + it 'has all expected links that work', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347813' do large_wiki.visit! Page::Project::Wiki::Show.perform(&:click_view_all_pages) diff --git a/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_page_deletion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_page_deletion_spec.rb new file mode 100644 index 00000000000..13e04180ab5 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_page_deletion_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Testing project wiki' + let(:initial_wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } + + before do + Flow::Login.sign_in + end + + it 'can delete a page', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347815' do + initial_wiki.visit! + + Page::Project::Wiki::Show.perform(&:click_edit) + Page::Project::Wiki::Edit.perform(&:delete_page) + + Page::Project::Wiki::Show.perform do |wiki| + expect(wiki).to have_no_page + end + end + end +end 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 aa332a76c94..0503b1b3761 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 @@ -22,9 +22,7 @@ module QA commit.branch = branch_name commit.start_branch = project.default_branch commit.commit_message = 'Add new file' - commit.add_files([ - { file_path: 'test-folder/test-file.md', content: 'new content' } - ]) + commit.add_files([{ file_path: 'test-folder/test-file.md', content: 'new content' }]) end project.visit! diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/license_detecton_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb index 1ae1dd87c07..50df8afafaf 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/license_detecton_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb @@ -33,11 +33,11 @@ module QA end end - context 'on a project with a less commonly used LICENSE', + context 'on a project with an unrecognized LICENSE', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/366843' do it_behaves_like 'project license detection' do - let(:license_file_name) { 'GFDL-1.2-only' } - let(:rendered_license_name) { 'Other' } + let(:license_file_name) { 'other' } + let(:rendered_license_name) { 'LICENSE' } end end end 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 65a15ce96a5..f4ca7955a0f 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 @@ -31,7 +31,6 @@ module QA Page::Project::Tag::Show.perform do |show| expect(show).to have_tag_name(tag_name) expect(show).to have_tag_message(tag_message) - expect(show).to have_tag_release_notes(tag_release_notes) expect(show).not_to have_element(:create_tag_button) end end @@ -83,7 +82,6 @@ module QA Page::Project::Tag::New.perform do |new_tag| new_tag.fill_tag_name(name) new_tag.fill_tag_message(message) - new_tag.fill_release_notes(release_notes) new_tag.click_create_tag_button end end 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 9735aa7959a..561a5a2cc1c 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 @@ -22,12 +22,13 @@ module QA before do Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = project - commit.add_files([ - { - file_path: 'first_directory/test_file.txt', - content: "Test file content" - } - ]) + commit.add_files( + [ + { + file_path: 'first_directory/test_file.txt', + content: "Test file content" + } + ]) end project.visit! diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb index fc5754e2c7a..f03c651992c 100644 --- a/qa/qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb @@ -4,18 +4,18 @@ module QA RSpec.describe 'Create' do describe 'Open Web IDE from Diff Tab' do files = [ - { - file_path: 'file1', - content: 'test1' - }, - { - file_path: 'file2', - content: 'test2' - }, - { - file_path: 'file3', - content: 'test3' - } + { + file_path: 'file1', + content: 'test1' + }, + { + file_path: 'file2', + content: 'test2' + }, + { + file_path: 'file3', + content: 'test3' + } ] let(:project) do diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb deleted file mode 100644 index 648ef513e12..00000000000 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb +++ /dev/null @@ -1,93 +0,0 @@ -# frozen_string_literal: true - -module QA - RSpec.describe 'Create' do - context 'Wiki' do - describe 'testing wiki content creation inside a project' do - let(:new_wiki_title) { "just_another_wiki_page" } - 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(:wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } - - before do - Flow::Login.sign_in - end - - it 'by adding a home page to the wiki', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347809' do - project.visit! - - Page::Project::Menu.perform(&:click_wiki) - Page::Project::Wiki::Show.perform(&:click_create_your_first_page) - - Page::Project::Wiki::Edit.perform do |edit| - edit.set_title new_wiki_title - edit.set_content new_wiki_content - edit.set_message commit_message - end - - Page::Project::Wiki::Edit.perform(&:click_submit) - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_title new_wiki_title - expect(wiki).to have_content new_wiki_content - end - end - - it 'by adding a second page to the wiki', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347808' do - wiki.visit! - - Page::Project::Wiki::Show.perform(&:click_new_page) - - Page::Project::Wiki::Edit.perform do |edit| - edit.set_title new_wiki_title - edit.set_content new_wiki_content - edit.set_message commit_message - end - - Page::Project::Wiki::Edit.perform(&:click_submit) - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_title new_wiki_title - expect(wiki).to have_content new_wiki_content - end - end - - it 'by adding a home page to the wiki using git push', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347806' do - empty_wiki = Resource::Wiki::ProjectPage.new do |empty_wiki| - empty_wiki.project = project - end - - Resource::Repository::WikiPush.fabricate! do |push| - push.file_name = "#{new_wiki_title}.md" - push.file_content = new_wiki_content - push.commit_message = commit_message - push.wiki = empty_wiki - push.new_branch = true - end.visit! - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_title new_wiki_title - expect(wiki).to have_content new_wiki_content - end - end - - it 'by adding a second page to the wiki using git push', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347807' do - Resource::Repository::WikiPush.fabricate! do |push| - push.file_name = "#{new_wiki_title}.md" - push.file_content = new_wiki_content - push.commit_message = commit_message - push.wiki = wiki - push.new_branch = false - end.visit! - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_title new_wiki_title - expect(wiki).to have_content new_wiki_content - end - end - end - end - end -end diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb deleted file mode 100644 index 251728c149f..00000000000 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -module QA - RSpec.describe 'Create' do - context 'Wiki' do - describe 'testing wiki content manipulation inside a project' do - let(:new_wiki_title) { "just_another_wiki_page" } - let(:new_wiki_content) { "this content is changed or added" } - let(:commit_message) { "this is a new addition to the wiki" } - - let(:wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } - - before do - Flow::Login.sign_in - end - - it 'by manipulating content on the page', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347810' do - wiki.visit! - - Page::Project::Wiki::Show.perform(&:click_edit) - - Page::Project::Wiki::Edit.perform do |edit| - edit.set_title new_wiki_title - edit.set_content new_wiki_content - edit.set_message commit_message - end - - Page::Project::Wiki::Edit.perform(&:click_submit) - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_title new_wiki_title - expect(wiki).to have_content new_wiki_content - end - end - - it 'by manipulating content on the page using git push', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347811' do - Resource::Repository::WikiPush.fabricate! do |push| - push.file_content = new_wiki_content - push.commit_message = commit_message - push.wiki = wiki - push.new_branch = false - end.visit! - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_content new_wiki_content - end - end - end - end - end -end diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb deleted file mode 100644 index 78d6d51f260..00000000000 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -module QA - RSpec.describe 'Create' do - context 'Wiki' do - let(:initial_wiki) { Resource::Wiki::ProjectPage.fabricate_via_api! } - - before do - Flow::Login.sign_in - end - - context 'Page deletion' do - it 'has removed the deleted page correctly', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347815' do - initial_wiki.visit! - - Page::Project::Wiki::Show.perform(&:click_edit) - Page::Project::Wiki::Edit.perform(&:delete_page) - - Page::Project::Wiki::Show.perform do |wiki| - expect(wiki).to have_no_page - end - end - end - end - end -end 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 078465770c6..222d1993bf4 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 @@ -51,16 +51,11 @@ module QA commit.project = package_project commit.commit_message = 'Add .gitlab-ci.yml' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: helm_upload_yaml - }, - { - file_path: 'Chart.yaml', - content: helm_chart_yaml - } - ]) + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: helm_upload_yaml }, + { file_path: 'Chart.yaml', content: helm_chart_yaml } + ]) end end @@ -94,12 +89,7 @@ module QA commit.project = client_project commit.commit_message = 'Add .gitlab-ci.yml' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: helm_install_yaml - } - ]) + commit.add_files([{ file_path: '.gitlab-ci.yml', content: helm_install_yaml }]) end end 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 921b36b34af..690451f6147 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 @@ -48,26 +48,18 @@ module QA it 'pushes and pulls a maven package', testcase: params[:testcase] do Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| - maven_upload_package_yaml = ERB.new(read_fixture('package_managers/maven', 'maven_upload_package.yaml.erb')).result(binding) - package_pom_xml = ERB.new(read_fixture('package_managers/maven', 'package_pom.xml.erb')).result(binding) - settings_xml = ERB.new(read_fixture('package_managers/maven', 'settings.xml.erb')).result(binding) + gitlab_ci_yaml = ERB.new(read_fixture('package_managers/maven/group/producer', 'gitlab_ci.yaml.erb')).result(binding) + pom_xml = ERB.new(read_fixture('package_managers/maven/group/producer', 'pom.xml.erb')).result(binding) + settings_xml = ERB.new(read_fixture('package_managers/maven/group/producer', 'settings.xml.erb')).result(binding) commit.project = package_project commit.commit_message = 'Add files' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: maven_upload_package_yaml - }, - { - file_path: 'pom.xml', - content: package_pom_xml - }, - { - file_path: 'settings.xml', - content: settings_xml - } - ]) + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gitlab_ci_yaml }, + { file_path: 'pom.xml', content: pom_xml }, + { file_path: 'settings.xml', content: settings_xml } + ]) end end @@ -97,26 +89,18 @@ module QA Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| - maven_install_package_yaml = ERB.new(read_fixture('package_managers/maven', 'maven_install_package.yaml.erb')).result(binding) - client_pom_xml = ERB.new(read_fixture('package_managers/maven', 'client_pom.xml.erb')).result(binding) - settings_xml = ERB.new(read_fixture('package_managers/maven', 'settings.xml.erb')).result(binding) + gitlab_ci_yaml = ERB.new(read_fixture('package_managers/maven/group/consumer', 'gitlab_ci.yaml.erb')).result(binding) + pom_xml = ERB.new(read_fixture('package_managers/maven/group/consumer', 'pom.xml.erb')).result(binding) + settings_xml = ERB.new(read_fixture('package_managers/maven/group/consumer', 'settings.xml.erb')).result(binding) commit.project = client_project commit.commit_message = 'Add files' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: maven_install_package_yaml - }, - { - file_path: 'pom.xml', - content: client_pom_xml - }, - { - file_path: 'settings.xml', - content: settings_xml - } - ]) + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gitlab_ci_yaml }, + { file_path: 'pom.xml', content: pom_xml }, + { file_path: 'settings.xml', content: settings_xml } + ]) end end @@ -143,123 +127,57 @@ module QA end context 'when disabled' do - where do - { - 'using a personal access token' => { - authentication_token_type: :personal_access_token, - maven_header_name: 'Private-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347581' - }, - 'using a project deploy token' => { - authentication_token_type: :project_deploy_token, - maven_header_name: 'Deploy-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347584' - }, - 'using a ci job token' => { - authentication_token_type: :ci_job_token, - maven_header_name: 'Job-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347578' - } - } + before do + Page::Group::Settings::PackageRegistries.perform(&:set_allow_duplicates_disabled) end - with_them do - let(:token) do - case authentication_token_type - when :personal_access_token - personal_access_token - when :ci_job_token - '${env.CI_JOB_TOKEN}' - when :project_deploy_token - project_deploy_token.token - end - end + it 'prevents users from publishing duplicates' do + create_duplicated_package - before do - Page::Group::Settings::PackageRegistries.perform(&:set_allow_duplicates_disabled) - end + push_duplicated_package - it 'prevents users from publishing group level Maven packages duplicates', testcase: params[:testcase] do - create_duplicated_package - - push_duplicated_package - - client_project.visit! + client_project.visit! - show_latest_deploy_job + show_latest_deploy_job - Page::Project::Job::Show.perform do |job| - expect(job).not_to be_successful(timeout: 800) - end + Page::Project::Job::Show.perform do |job| + expect(job).not_to be_successful(timeout: 800) end end end context 'when enabled' do - where do - { - 'using a personal access token' => { - authentication_token_type: :personal_access_token, - maven_header_name: 'Private-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347580' - }, - 'using a project deploy token' => { - authentication_token_type: :project_deploy_token, - maven_header_name: 'Deploy-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347583' - }, - 'using a ci job token' => { - authentication_token_type: :ci_job_token, - maven_header_name: 'Job-Token', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347577' - } - } + before do + Page::Group::Settings::PackageRegistries.perform(&:set_allow_duplicates_enabled) end - with_them do - let(:token) do - case authentication_token_type - when :personal_access_token - personal_access_token - when :ci_job_token - '${env.CI_JOB_TOKEN}' - when :project_deploy_token - project_deploy_token.token - end - end - - before do - Page::Group::Settings::PackageRegistries.perform(&:set_allow_duplicates_enabled) - end - - it 'allows users to publish group level Maven packages duplicates', testcase: params[:testcase] do - create_duplicated_package + it 'allows users to publish duplicates' do + create_duplicated_package - push_duplicated_package + push_duplicated_package - show_latest_deploy_job + show_latest_deploy_job - 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 end end def create_duplicated_package - settings_xml_with_pat = ERB.new(read_fixture('package_managers/maven', 'settings_with_pat.xml.erb')).result(binding) - package_pom_xml = ERB.new(read_fixture('package_managers/maven', 'package_pom.xml.erb')).result(binding) + settings_xml_with_pat = ERB.new(read_fixture('package_managers/maven/group', 'settings_with_pat.xml.erb')).result(binding) + pom_xml = ERB.new(read_fixture('package_managers/maven/group/producer', 'pom.xml.erb')).result(binding) with_fixtures([ - { - file_path: 'pom.xml', - content: package_pom_xml - }, - { - file_path: 'settings.xml', - content: settings_xml_with_pat - } - ]) do |dir| + { + file_path: 'pom.xml', + content: pom_xml + }, + { + file_path: 'settings.xml', + content: settings_xml_with_pat + } + ]) do |dir| Service::DockerRun::Maven.new(dir).publish! end @@ -275,26 +193,18 @@ module QA def push_duplicated_package Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| - maven_upload_package_yaml = ERB.new(read_fixture('package_managers/maven', 'maven_upload_package.yaml.erb')).result(binding) - package_pom_xml = ERB.new(read_fixture('package_managers/maven', 'package_pom.xml.erb')).result(binding) - settings_xml = ERB.new(read_fixture('package_managers/maven', 'settings.xml.erb')).result(binding) + gitlab_ci_yaml = ERB.new(read_fixture('package_managers/maven/group/producer', 'gitlab_ci.yaml.erb')).result(binding) + pom_xml = ERB.new(read_fixture('package_managers/maven/group/producer', 'pom.xml.erb')).result(binding) + settings_xml_with_pat = ERB.new(read_fixture('package_managers/maven/group', 'settings_with_pat.xml.erb')).result(binding) commit.project = client_project commit.commit_message = 'Add .gitlab-ci.yml' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: maven_upload_package_yaml - }, - { - file_path: 'pom.xml', - content: package_pom_xml - }, - { - file_path: 'settings.xml', - content: settings_xml - } - ]) + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gitlab_ci_yaml }, + { file_path: 'pom.xml', content: pom_xml }, + { file_path: 'settings.xml', content: settings_xml_with_pat } + ]) end end end 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 13607ba1b41..324e881f160 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,8 +1,14 @@ # frozen_string_literal: true module QA - RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable do + RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable, + feature_flag: { + name: 'maven_central_request_forwarding', + scope: :global + } do describe 'Maven project level endpoint' do + include Runtime::Fixtures + let(:group_id) { 'com.gitlab.qa' } let(:artifact_id) { "maven-#{SecureRandom.hex(8)}" } let(:package_name) { "#{group_id}/#{artifact_id}".tr('.', '/') } @@ -51,54 +57,6 @@ module QA end end - let(:gitlab_ci_file) do - { - file_path: '.gitlab-ci.yml', - content: - <<~YAML - deploy-and-install: - image: maven:3.6-jdk-11 - script: - - 'mvn deploy -s settings.xml' - - 'mvn install -s settings.xml' - only: - - "#{package_project.default_branch}" - tags: - - "runner-for-#{package_project.name}" - YAML - } - end - - let(:pom_file) do - { - file_path: 'pom.xml', - content: <<~XML - <project> - <groupId>#{group_id}</groupId> - <artifactId>#{artifact_id}</artifactId> - <version>#{package_version}</version> - <modelVersion>4.0.0</modelVersion> - <repositories> - <repository> - <id>#{package_project.name}</id> - <url>#{gitlab_address_with_port}/api/v4/projects/#{package_project.id}/-/packages/maven</url> - </repository> - </repositories> - <distributionManagement> - <repository> - <id>#{package_project.name}</id> - <url>#{gitlab_address_with_port}/api/v4/projects/#{package_project.id}/packages/maven</url> - </repository> - <snapshotRepository> - <id>#{package_project.name}</id> - <url>#{gitlab_address_with_port}/api/v4/projects/#{package_project.id}/packages/maven</url> - </snapshotRepository> - </distributionManagement> - </project> - XML - } - end - before do Flow::Login.sign_in_unless_signed_in runner @@ -142,40 +100,24 @@ module QA end end - let(:settings_xml) do - { - file_path: 'settings.xml', - content: <<~XML - <settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> - <servers> - <server> - <id>#{package_project.name}</id> - <configuration> - <httpHeaders> - <property> - <name>#{maven_header_name}</name> - <value>#{token}</value> - </property> - </httpHeaders> - </configuration> - </server> - </servers> - </settings> - XML - } - end - it 'pushes and pulls a maven package via maven', testcase: params[:testcase] do Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| + gitlab_ci_yaml = ERB.new(read_fixture('package_managers/maven/project', 'gitlab_ci.yaml.erb')) + .result(binding) + pom_xml = ERB.new(read_fixture('package_managers/maven/project', 'pom.xml.erb')) + .result(binding) + settings_xml = ERB.new(read_fixture('package_managers/maven/project', 'settings.xml.erb')) + .result(binding) + commit.project = package_project - commit.commit_message = 'Add .gitlab-ci.yml' - commit.add_files([ - gitlab_ci_file, - pom_file, - settings_xml - ]) + commit.commit_message = 'Add files' + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gitlab_ci_yaml }, + { file_path: 'pom.xml', content: pom_xml }, + { file_path: 'settings.xml', content: settings_xml } + ]) end end @@ -184,17 +126,7 @@ module QA 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) - - job.click_element(:pipeline_path) - end - - Page::Project::Pipeline::Show.perform do |pipeline| - pipeline.click_job('install') + pipeline.click_job('deploy-and-install') end Page::Project::Job::Show.perform do |job| @@ -215,5 +147,107 @@ module QA end end end + + describe 'Maven request forwarding' do + include Runtime::Fixtures + + let(:group_id) { 'com.gitlab.qa' } + let(:artifact_id) { "maven-#{SecureRandom.hex(8)}" } + let(:package_name) { "#{group_id}/#{artifact_id}".tr('.', '/') } + let(:package_version) { '1.3.7' } + let(:package_type) { 'maven' } + let(:personal_access_token) { Runtime::Env.personal_access_token } + let(:group) { Resource::Group.fabricate_via_api! } + + let(:gitlab_address_with_port) do + uri = URI.parse(Runtime::Scenario.gitlab_address) + "#{uri.scheme}://#{uri.host}:#{uri.port}" + end + + let(:package) do + Resource::Package.init do |package| + package.name = package_name + package.project = imported_project + end + end + + let(:runner) do + Resource::Runner.fabricate! do |runner| + runner.name = "qa-runner-#{Time.now.to_i}" + runner.tags = ["runner-for-#{imported_project.name}"] + runner.executor = :docker + runner.token = group.reload!.runners_token + end + end + + let(:imported_project) do + Resource::ProjectImportedFromURL.fabricate_via_browser_ui! do |project| + project.name = "#{package_type}_imported_project" + project.group = group + project.gitlab_repository_path = 'https://gitlab.com/gitlab-org/quality/imported-projects/maven.git' + end + end + + before do + Runtime::Feature.enable(:maven_central_request_forwarding) + Flow::Login.sign_in_unless_signed_in + + imported_project + runner + end + + after do + Runtime::Feature.disable(:maven_central_request_forwarding) + + runner.remove_via_api! + package.remove_via_api! + imported_project.remove_via_api! + end + + it( + 'uses GitLab as a mirror of the central proxy', + :skip_live_env, + quarantine: { + issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/378221', + type: :investigating + }, + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/375767' + ) do + Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do + Resource::Repository::Commit.fabricate_via_api! do |commit| + gitlab_ci_yaml = ERB.new(read_fixture('package_managers/maven/project/request_forwarding', + 'gitlab_ci.yaml.erb' + ) + ) + .result(binding) + settings_xml = ERB.new(read_fixture('package_managers/maven/project/request_forwarding', + 'settings.xml.erb' + ) + ) + .result(binding) + + commit.project = imported_project + commit.commit_message = 'Add files' + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gitlab_ci_yaml }, + { file_path: 'settings.xml', content: settings_xml } + ]) + end + end + + imported_project.visit! + + 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) + end + end + end end end 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 45693ecee41..22052aa4110 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 @@ -34,20 +34,15 @@ module QA it 'pushes and pulls a maven package via gradle', testcase: params[:testcase] do Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| - gradle_upload_yaml = ERB.new(read_fixture('package_managers/maven', 'gradle_upload_package.yaml.erb')).result(binding) - build_upload_gradle = ERB.new(read_fixture('package_managers/maven', 'build_upload.gradle.erb')).result(binding) + gradle_upload_yaml = ERB.new(read_fixture('package_managers/maven/gradle', 'gradle_upload_package.yaml.erb')).result(binding) + build_upload_gradle = ERB.new(read_fixture('package_managers/maven/gradle', 'build_upload.gradle.erb')).result(binding) commit.project = package_project commit.commit_message = 'Add .gitlab-ci.yml' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: gradle_upload_yaml - }, - { - file_path: 'build.gradle', - content: build_upload_gradle - } + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gradle_upload_yaml }, + { file_path: 'build.gradle', content: build_upload_gradle } ]) end end @@ -78,21 +73,16 @@ module QA Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| - gradle_install_yaml = ERB.new(read_fixture('package_managers/maven', 'gradle_install_package.yaml.erb')).result(binding) - build_install_gradle = ERB.new(read_fixture('package_managers/maven', 'build_install.gradle.erb')).result(binding) + gradle_install_yaml = ERB.new(read_fixture('package_managers/maven/gradle', 'gradle_install_package.yaml.erb')).result(binding) + build_install_gradle = ERB.new(read_fixture('package_managers/maven/gradle', 'build_install.gradle.erb')).result(binding) commit.project = client_project commit.commit_message = 'Add files' - commit.add_files([ - { - file_path: '.gitlab-ci.yml', - content: gradle_install_yaml - }, - { - file_path: 'build.gradle', - content: build_install_gradle - } - ]) + commit.add_files( + [ + { file_path: '.gitlab-ci.yml', content: gradle_install_yaml }, + { file_path: 'build.gradle', content: build_install_gradle } + ]) 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 f229f30facc..e2a7006249d 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 @@ -105,14 +105,7 @@ module QA nuget_upload_yaml = ERB.new(read_fixture('package_managers/nuget', 'nuget_upload_package.yaml.erb')).result(binding) commit.project = project commit.commit_message = 'Add .gitlab-ci.yml' - commit.update_files( - [ - { - file_path: '.gitlab-ci.yml', - content: nuget_upload_yaml - } - ] - ) + commit.update_files([{ file_path: '.gitlab-ci.yml', content: nuget_upload_yaml }]) end end @@ -137,9 +130,9 @@ module QA commit.commit_message = 'Add new csproj file' commit.add_files( [ - { - file_path: 'otherdotnet.csproj', - content: <<~EOF + { + file_path: 'otherdotnet.csproj', + content: <<~EOF <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> @@ -148,18 +141,11 @@ module QA </PropertyGroup> </Project> - EOF - } - ] - ) - commit.update_files( - [ - { - file_path: '.gitlab-ci.yml', - content: nuget_install_yaml - } + EOF + } ] ) + commit.update_files([{ file_path: '.gitlab-ci.yml', content: nuget_install_yaml }]) end end 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 e70b95db1a5..620bb7e4988 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 @@ -101,9 +101,9 @@ module QA commit.commit_message = 'Add files' commit.update_files( [ - { - file_path: '.gitlab-ci.yml', - content: <<~YAML + { + file_path: '.gitlab-ci.yml', + content: <<~YAML stages: - deploy - install @@ -132,11 +132,11 @@ module QA - if: '$CI_COMMIT_BRANCH == "#{project.default_branch}"' tags: - "runner-for-#{project.name}" - YAML - }, - { - file_path: 'dotnetcore.csproj', - content: <<~EOF + YAML + }, + { + file_path: 'dotnetcore.csproj', + content: <<~EOF <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> @@ -145,8 +145,8 @@ module QA </PropertyGroup> </Project> - EOF - } + EOF + } ] ) end |