diff --git a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue index e20cf299c2abe8d68e8c47c6551c58a9949e0f49..288d671168223be2c73013fc020ab2b6efa600da 100644 --- a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue +++ b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue @@ -218,6 +218,7 @@ export default { id="fork-url" v-model="selectedNamespace" data-testid="fork-url-input" + data-qa-selector="fork_namespace_dropdown" required > <template slot="first"> @@ -291,6 +292,7 @@ export default { category="primary" variant="confirm" data-testid="submit-button" + data-qa-selector="fork_project_button" :loading="isSaving" > {{ s__('ForkProject|Fork project') }} diff --git a/qa/qa/page/project/fork/new.rb b/qa/qa/page/project/fork/new.rb index bbdd4748f5c59ec61e89f2c069edc459cd15b141..5a08f6a3cbdd6fb0180b189d8e3948c20c256149 100644 --- a/qa/qa/page/project/fork/new.rb +++ b/qa/qa/page/project/fork/new.rb @@ -13,8 +13,18 @@ class New < Page::Base element :fork_groups_list_search_field end - def choose_namespace(namespace = Runtime::Namespace.path) - click_element(:fork_namespace_button, name: namespace) + view 'app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue' do + element :fork_namespace_dropdown + element :fork_project_button + end + + def fork_project(namespace = Runtime::Namespace.path) + if has_element?(:fork_namespace_button, wait: 0) + click_element(:fork_namespace_button, name: namespace) + else + select_element(:fork_namespace_dropdown, namespace) + click_element(:fork_project_button) + end end def search_for_group(group_name) diff --git a/qa/qa/resource/fork.rb b/qa/qa/resource/fork.rb index d0aaaae6a11d229742966919fc2c6fd947193e08..106d1d5548a863b746d43fa56693809c835b0448 100644 --- a/qa/qa/resource/fork.rb +++ b/qa/qa/resource/fork.rb @@ -3,6 +3,8 @@ module QA module Resource class Fork < Base + attr_accessor :namespace_path + attribute :name do upstream.name end @@ -31,6 +33,8 @@ class Fork < Base def fabricate! populate(:upstream, :user) + namespace_path ||= user.name + # Sign out as admin and sign is as the fork user Page::Main::Menu.perform(&:sign_out) Runtime::Browser.visit(:gitlab, Page::Main::Login) @@ -43,11 +47,11 @@ def fabricate! Page::Project::Show.perform(&:fork_project) Page::Project::Fork::New.perform do |fork_new| - fork_new.choose_namespace(user.name) + fork_new.fork_project(namespace_path) end - Page::Layout::Banner.perform do |banner| - banner.has_notice?('The project was successfully forked.') + Page::Project::Show.perform do |project_page| + raise ResourceFabricationFailedError, "Forking failed!" unless project_page.forked_from?(upstream.name) end populate(:project) diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb index 1fe354f2f7b4d4d088783c98276284e953971673..c2e148e19bd91ecda7fc51d881913c4e7c0a8f1c 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb @@ -2,14 +2,12 @@ module QA RSpec.describe 'Create' do - describe 'Merge request creation from fork' do - let!(:merge_request) do - Resource::MergeRequestFromFork.fabricate_via_browser_ui! do |merge_request| + describe 'Merge request creation from fork', :smoke do + it 'can merge feature branch fork to mainline', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1701' do + merge_request = Resource::MergeRequestFromFork.fabricate_via_browser_ui! do |merge_request| merge_request.fork_branch = 'feature-branch' end - end - it 'can merge feature branch fork to mainline', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1701' do Flow::Login.while_signed_in do merge_request.visit!