diff options
Diffstat (limited to 'qa/qa/page')
26 files changed, 324 insertions, 100 deletions
diff --git a/qa/qa/page/admin/overview/users/show.rb b/qa/qa/page/admin/overview/users/show.rb index f455bd31d14..be73f3d80bf 100644 --- a/qa/qa/page/admin/overview/users/show.rb +++ b/qa/qa/page/admin/overview/users/show.rb @@ -11,12 +11,25 @@ module QA end view 'app/views/admin/users/show.html.haml' do - element :confirm_user_button element :user_id_content end - view 'app/views/admin/users/_approve_user.html.haml' do + view 'app/assets/javascripts/admin/users/components/actions/approve.vue' do element :approve_user_button + element :approve_user_confirm_button + end + + view 'app/assets/javascripts/admin/users/components/user_actions.vue' do + element :user_actions_dropdown_toggle + end + + view 'app/helpers/users_helper.rb' do + element :confirm_user_button + element :confirm_user_confirm_button + end + + def open_user_actions_dropdown(user) + click_element(:user_actions_dropdown_toggle, username: user.username) end def click_impersonate_user @@ -28,15 +41,14 @@ module QA end def confirm_user - accept_confirm do - click_element :confirm_user_button - end + click_element :confirm_user_button + click_element :confirm_user_confirm_button end - def approve_user - accept_confirm do - click_element :approve_user_button - end + def approve_user(user) + open_user_actions_dropdown(user) + click_element :approve_user_button + click_element :approve_user_confirm_button end end end diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index 66040bb9849..6b54d8ab1ac 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -104,7 +104,8 @@ module QA end def find_element(name, **kwargs) - wait_for_requests + skip_finished_loading_check = kwargs.delete(:skip_finished_loading_check) + wait_for_requests(skip_finished_loading_check: skip_finished_loading_check) element_selector = element_selector_css(name, reject_capybara_query_keywords(kwargs)) find(element_selector, only_capybara_query_keywords(kwargs)) @@ -196,7 +197,8 @@ module QA # replace with (..., page = self.class) def click_element(name, page = nil, **kwargs) - wait_for_requests + skip_finished_loading_check = kwargs.delete(:skip_finished_loading_check) + wait_for_requests(skip_finished_loading_check: skip_finished_loading_check) wait = kwargs.delete(:wait) || Capybara.default_max_wait_time text = kwargs.delete(:text) diff --git a/qa/qa/page/component/import/gitlab.rb b/qa/qa/page/component/import/gitlab.rb new file mode 100644 index 00000000000..2fd2a45b399 --- /dev/null +++ b/qa/qa/page/component/import/gitlab.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +module QA + module Page + module Component + module Import + module Gitlab + def self.included(base) + super + + base.view 'app/views/import/gitlab_projects/new.html.haml' do + element :import_project_button + end + + base.view 'app/views/import/shared/_new_project_form.html.haml' do + element :project_name_field + element :project_slug_field + end + end + + def set_imported_project_name(name) + fill_element(:project_name_field, name) + end + + def attach_exported_file(path) + page.attach_file("file", path, make_visible: { display: 'block' }) + end + + def click_import_gitlab_project + click_element(:import_project_button) + + wait_until(reload: false) do + has_notice?("The project was successfully imported.") + end + end + end + end + end + end +end diff --git a/qa/qa/page/component/import/selection.rb b/qa/qa/page/component/import/selection.rb new file mode 100644 index 00000000000..6cacdd84f13 --- /dev/null +++ b/qa/qa/page/component/import/selection.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module QA + module Page + module Component + module Import + module Selection + def self.included(base) + super + + base.view 'app/views/projects/_import_project_pane.html.haml' do + element :gitlab_import_button + end + end + + def click_gitlab + click_element(:gitlab_import_button) + end + end + end + end + end +end diff --git a/qa/qa/page/component/invite_members_modal.rb b/qa/qa/page/component/invite_members_modal.rb index 9883ef22029..7cec4588af5 100644 --- a/qa/qa/page/component/invite_members_modal.rb +++ b/qa/qa/page/component/invite_members_modal.rb @@ -19,6 +19,10 @@ module QA element :group_select_dropdown_search_field end + base.view 'app/assets/javascripts/invite_members/components/members_token_select.vue' do + element :members_token_select_input + end + base.view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do element :invite_a_group_button end @@ -42,7 +46,7 @@ module QA within_element(:invite_members_modal_content) do fill_element :access_level_dropdown, with: access_level - fill_in 'Select members or type email addresses', with: username + fill_element :members_token_select_input, username Support::WaitForRequests.wait_for_requests diff --git a/qa/qa/page/component/issuable/sidebar.rb b/qa/qa/page/component/issuable/sidebar.rb index 3a9d316c321..971e7634f6d 100644 --- a/qa/qa/page/component/issuable/sidebar.rb +++ b/qa/qa/page/component/issuable/sidebar.rb @@ -40,16 +40,22 @@ module QA base.view 'app/views/shared/issuable/_sidebar.html.haml' do element :assignee_block - element :edit_milestone_link element :milestone_block - element :milestone_link + end + + base.view 'app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue' do + element :milestone_link, 'data-qa-selector="`${issuableAttribute}_link`"' # rubocop:disable QA/ElementWithPattern + end + + base.view 'app/assets/javascripts/sidebar/components/sidebar_editable_item.vue' do + element :edit_link end end def assign_milestone(milestone) - click_element(:edit_milestone_link) within_element(:milestone_block) do - click_link("#{milestone.title}") + click_element(:edit_link) + click_on(milestone.title) end wait_until(reload: false) do @@ -89,7 +95,7 @@ module QA def has_milestone?(milestone_title) wait_milestone_block_finish_loading do - has_element?(:milestone_link, title: milestone_title) + has_element?(:milestone_link, text: milestone_title) end end diff --git a/qa/qa/page/dashboard/snippet/edit.rb b/qa/qa/page/dashboard/snippet/edit.rb index cd8ac77ae04..939413f6d76 100644 --- a/qa/qa/page/dashboard/snippet/edit.rb +++ b/qa/qa/page/dashboard/snippet/edit.rb @@ -23,7 +23,8 @@ module QA end def add_to_file_content(content) - text_area.set content + text_area.click + text_area.send_keys(:home, content) # starts in the beginning of the line text_area.has_text?(content) # wait for changes to take effect end diff --git a/qa/qa/page/group/bulk_import.rb b/qa/qa/page/group/bulk_import.rb index 11741bdf4cb..a0511c9a16c 100644 --- a/qa/qa/page/group/bulk_import.rb +++ b/qa/qa/page/group/bulk_import.rb @@ -10,12 +10,15 @@ module QA view "app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue" do element :import_item - element :target_namespace_selector_dropdown element :target_group_dropdown_item element :import_status_indicator element :import_group_button end + view "app/assets/javascripts/import_entities/components/group_dropdown.vue" do + element :target_namespace_selector_dropdown + end + # Import source group in to target group # # @param [String] source_group_name diff --git a/qa/qa/page/group/menu.rb b/qa/qa/page/group/menu.rb index 9a3b129b6d2..338a135614d 100644 --- a/qa/qa/page/group/menu.rb +++ b/qa/qa/page/group/menu.rb @@ -6,7 +6,7 @@ module QA class Menu < Page::Base include SubMenus::Common - view 'app/views/layouts/nav/sidebar/_group.html.haml' do + view 'app/views/layouts/nav/sidebar/_group_menus.html.haml' do element :general_settings_link element :group_issues_item element :group_members_item diff --git a/qa/qa/page/group/new.rb b/qa/qa/page/group/new.rb index 66afcf7547c..c24712b9418 100644 --- a/qa/qa/page/group/new.rb +++ b/qa/qa/page/group/new.rb @@ -21,6 +21,10 @@ module QA element :connect_instance_button end + view 'app/assets/javascripts/vue_shared/new_namespace/components/welcome.vue' do + element :panel_link + end + def set_path(path) fill_element(:group_path_field, path) fill_element(:group_name_field, path) @@ -62,7 +66,7 @@ module QA end def switch_to_import_tab - click_element("import-group-pane_link") + click_element(:panel_link, panel_name: 'import-group-pane') end end end diff --git a/qa/qa/page/group/settings/general.rb b/qa/qa/page/group/settings/general.rb index 4977e5c7105..2e7ab131225 100644 --- a/qa/qa/page/group/settings/general.rb +++ b/qa/qa/page/group/settings/general.rb @@ -38,7 +38,7 @@ module QA element :project_creation_level_dropdown end - view 'app/views/groups/settings/_advanced.html.haml' do + view 'app/views/groups/settings/_transfer.html.haml' do element :select_group_dropdown element :transfer_group_button end diff --git a/qa/qa/page/group/sub_menus/common.rb b/qa/qa/page/group/sub_menus/common.rb index 86102f70d29..2f8a3fdeb4e 100644 --- a/qa/qa/page/group/sub_menus/common.rb +++ b/qa/qa/page/group/sub_menus/common.rb @@ -12,8 +12,8 @@ module QA super base.class_eval do - view 'app/views/layouts/nav/sidebar/_group.html.haml' do - element :group_sidebar + view 'app/views/shared/nav/_sidebar.html.haml' do + element :group_sidebar, 'qa_selector: sidebar_qa_selector(sidebar.container)' # rubocop:disable QA/ElementWithPattern end end end diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb index 3b3057a9acb..2c7ce69e4e5 100644 --- a/qa/qa/page/main/login.rb +++ b/qa/qa/page/main/login.rb @@ -67,7 +67,7 @@ module QA end def sign_in_using_admin_credentials - admin = QA::Resource::User.new.tap do |user| + admin = QA::Resource::User.init do |user| user.username = QA::Runtime::User.admin_username user.password = QA::Runtime::User.admin_password end diff --git a/qa/qa/page/project/fork/new.rb b/qa/qa/page/project/fork/new.rb index 5a08f6a3cbd..7062702679a 100644 --- a/qa/qa/page/project/fork/new.rb +++ b/qa/qa/page/project/fork/new.rb @@ -9,10 +9,6 @@ module QA element :fork_namespace_button end - view 'app/assets/javascripts/pages/projects/forks/new/components/fork_groups_list.vue' do - element :fork_groups_list_search_field - end - view 'app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue' do element :fork_namespace_dropdown element :fork_project_button @@ -27,8 +23,8 @@ module QA end end - def search_for_group(group_name) - find_element(:fork_groups_list_search_field).set(group_name) + def fork_namespace_dropdown_values + find_element(:fork_namespace_dropdown).all(:option).map { |option| option.text.tr("\n", '').strip } end end end diff --git a/qa/qa/page/project/import/github.rb b/qa/qa/page/project/import/github.rb index dc683f7314b..74bc4cec467 100644 --- a/qa/qa/page/project/import/github.rb +++ b/qa/qa/page/project/import/github.rb @@ -14,13 +14,16 @@ module QA view 'app/assets/javascripts/import_entities/import_projects/components/provider_repo_table_row.vue' do element :project_import_row - element :project_namespace_select element :project_path_field element :import_button element :project_path_content element :go_to_project_button end + view "app/assets/javascripts/import_entities/components/group_dropdown.vue" do + element :target_namespace_selector_dropdown + end + def add_personal_access_token(personal_access_token) # If for some reasons this process is retried, user cannot re-enter github token in the same group # In this case skip this step and proceed to import project row @@ -37,9 +40,18 @@ module QA choose_test_namespace(full_path) set_path(full_path, name) import_project(full_path) + wait_for_success end + # TODO: refactor to use 'go to project' button instead of generic main menu + def go_to_project(name) + Page::Main::Menu.perform(&:go_to_projects) + Page::Dashboard::Projects.perform do |dashboard| + dashboard.go_to_project(name) + end + end + private def within_repo_path(full_path, &block) @@ -50,10 +62,9 @@ module QA def choose_test_namespace(full_path) within_repo_path(full_path) do - click_element :project_namespace_select + within_element(:target_namespace_selector_dropdown) { click_button(class: 'dropdown-toggle') } + click_element(:target_group_dropdown_item, group_name: Runtime::Namespace.path) end - - search_and_select(Runtime::Namespace.path) end def set_path(full_path, name) @@ -77,14 +88,9 @@ module QA reload: true, skip_finished_loading_check_on_refresh: true ) do - page.has_no_content?('Importing 1 repository') - end - end - - def go_to_project(name) - Page::Main::Menu.perform(&:go_to_projects) - Page::Dashboard::Projects.perform do |dashboard| - dashboard.go_to_project(name) + # TODO: Refactor to explicitly wait for specific project import successful status + # This check can create false positive if main importing message appears with delay and check exits early + page.has_no_content?('Importing 1 repository', wait: 3) end end diff --git a/qa/qa/page/project/import/repo_by_url.rb b/qa/qa/page/project/import/repo_by_url.rb new file mode 100644 index 00000000000..0e7524a181a --- /dev/null +++ b/qa/qa/page/project/import/repo_by_url.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + module Import + class RepoByURL < Page::Base + include Page::Component::Select2 + + view 'app/views/projects/_new_project_fields.html.haml' do + element :select_namespace_dropdown + end + + def import!(gitlab_repo_path, name) + fill_git_repository_url_link(gitlab_repo_path) + fill_project_name(name) + choose_test_namespace + click_create_button + + wait_for_success + + go_to_project(name) + end + + private + + def fill_git_repository_url_link(gitlab_repo_path) + fill_in 'project_import_url', with: gitlab_repo_path + end + + def fill_project_name(name) + fill_in 'project_name', with: name + end + + def choose_test_namespace + find('.js-select-namespace').click + search_and_select(Runtime::Namespace.path) + end + + def click_create_button + find('.btn-confirm').click + end + + def wait_for_success + wait_until(max_duration: 60, sleep_interval: 5.0, reload: true, skip_finished_loading_check_on_refresh: true) do + page.has_no_content?('Import in progress', wait: 3.0) + end + end + + def go_to_project(name) + Page::Main::Menu.perform(&:go_to_projects) + Page::Dashboard::Projects.perform do |dashboard| + dashboard.go_to_project(name) + end + end + end + end + end + end +end diff --git a/qa/qa/page/project/infrastructure/kubernetes/show.rb b/qa/qa/page/project/infrastructure/kubernetes/show.rb index e3b4f8fe4d9..62a04a53a2f 100644 --- a/qa/qa/page/project/infrastructure/kubernetes/show.rb +++ b/qa/qa/page/project/infrastructure/kubernetes/show.rb @@ -6,10 +6,6 @@ module QA module Infrastructure module Kubernetes class Show < Page::Base - view 'app/assets/javascripts/clusters/components/applications.vue' do - element :ingress_ip_address, 'id="ingress-endpoint"' # rubocop:disable QA/ElementWithPattern - end - view 'app/assets/javascripts/clusters/forms/components/integration_form.vue' do element :integration_status_toggle, required: true element :base_domain_field, required: true @@ -20,15 +16,6 @@ module QA element :details, required: true end - view 'app/views/clusters/clusters/_applications_tab.html.haml' do - element :applications, required: true - end - - view 'app/assets/javascripts/clusters/components/application_row.vue' do - element :install_button - element :uninstall_button - end - view 'app/views/clusters/clusters/_health.html.haml' do element :cluster_health_section end @@ -42,36 +29,6 @@ module QA click_element :details end - def open_applications - has_element?(:applications, wait: 30) - click_element :applications - end - - def install!(application_name) - within_element(application_name) do - has_element?(:install_button, application: application_name, wait: 30) - click_element :install_button - end - end - - def await_installed(application_name) - within_element(application_name) do - has_element?(:uninstall_button, application: application_name, wait: 300, skip_finished_loading_check: true) - end - end - - def has_application_installed?(application_name) - within_element(application_name) do - has_element?(:uninstall_button, application: application_name, wait: 300) - end - end - - def ingress_ip - # We need to wait longer since it can take some time before the - # ip address is assigned for the ingress controller - page.find('#ingress-endpoint', wait: 1200).value - end - def set_domain(domain) fill_element :base_domain_field, domain end diff --git a/qa/qa/page/project/new.rb b/qa/qa/page/project/new.rb index b14afa90442..170cc14b27f 100644 --- a/qa/qa/page/project/new.rb +++ b/qa/qa/page/project/new.rb @@ -8,6 +8,10 @@ module QA include Page::Component::Select2 include Page::Component::VisibilitySetting + include Layout::Flash + include Page::Component::Import::Selection + include Page::Component::Import::Gitlab + view 'app/views/projects/_new_project_fields.html.haml' do element :initialize_with_readme_checkbox element :project_namespace_select @@ -25,16 +29,15 @@ module QA end view 'app/assets/javascripts/vue_shared/new_namespace/components/welcome.vue' do - element :blank_project_link, ':data-qa-selector="`${panel.name}_link`"' # rubocop:disable QA/ElementWithPattern - element :create_from_template_link, ':data-qa-selector="`${panel.name}_link`"' # rubocop:disable QA/ElementWithPattern + element :panel_link end def click_blank_project_link - click_element :blank_project_link + click_element(:panel_link, panel_name: 'blank_project') end def click_create_from_template_link - click_element :create_from_template_link + click_element(:panel_link, panel_name: 'create_from_template') end def choose_test_namespace @@ -76,6 +79,10 @@ module QA click_link 'GitHub' end + def click_repo_by_url_link + click_button 'Repo by URL' + end + def enable_initialize_with_readme check_element(:initialize_with_readme_checkbox) end diff --git a/qa/qa/page/project/pipeline_editor/show.rb b/qa/qa/page/project/pipeline_editor/show.rb new file mode 100644 index 00000000000..38c87c8daa1 --- /dev/null +++ b/qa/qa/page/project/pipeline_editor/show.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + module PipelineEditor + class Show < QA::Page::Base + view 'app/assets/javascripts/pipeline_editor/components/file_nav/branch_switcher.vue' do + element :branch_selector_button + element :menu_branch_button + end + + view 'app/assets/javascripts/pipeline_editor/components/commit/commit_form.vue' do + element :target_branch_field + end + + def has_branch_selector_button? + has_element? :branch_selector_button + end + + def click_branch_selector_button + wait_until(reload: false) do + has_element?(:branch_selector_button) + end + click_element(:branch_selector_button, skip_finished_loading_check: true) + end + + def select_branch_from_dropdown(branch_to_switch_to) + wait_until(reload: false) do + has_element?(:menu_branch_button) + end + click_element(:menu_branch_button, text: branch_to_switch_to, skip_finished_loading_check: true) + end + + def target_branch_name + wait_until(reload: false) do + has_element?(:target_branch_field) + end + find_element(:target_branch_field, skip_finished_loading_check: true).value + end + end + end + end + end +end diff --git a/qa/qa/page/project/settings/advanced.rb b/qa/qa/page/project/settings/advanced.rb index 9c4b3a3c1c3..0ba856e8a6e 100644 --- a/qa/qa/page/project/settings/advanced.rb +++ b/qa/qa/page/project/settings/advanced.rb @@ -51,7 +51,7 @@ module QA # Workaround for a failure to search when there are no spaces around the / # https://gitlab.com/gitlab-org/gitlab/-/issues/218965 - search_and_select(namespace.gsub(/([^\s])\/([^\s])/, '\1 / \2')) + search_and_select(namespace.gsub(%r{([^\s])/([^\s])}, '\1 / \2')) click_element(:transfer_button) fill_confirmation_text(project_name) diff --git a/qa/qa/page/project/settings/default_branch.rb b/qa/qa/page/project/settings/default_branch.rb new file mode 100644 index 00000000000..cc28b37b88f --- /dev/null +++ b/qa/qa/page/project/settings/default_branch.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + module Settings + class DefaultBranch < Page::Base + include Page::Component::Select2 + + view 'app/views/projects/default_branch/_show.html.haml' do + element :save_changes_button + element :default_branch_dropdown + end + + def set_default_branch(branch) + find('.select2-chosen').click + search_and_select(branch) + end + + def click_save_changes_button + find('.btn-confirm').click + end + end + end + end + end +end + +QA::Page::Project::Settings::DefaultBranch.prepend_mod_with('Page::Project::Settings::DefaultBranch', namespace: QA) diff --git a/qa/qa/page/project/settings/deploy_tokens.rb b/qa/qa/page/project/settings/deploy_tokens.rb index b26cae86d8b..db1f6f68ec6 100644 --- a/qa/qa/page/project/settings/deploy_tokens.rb +++ b/qa/qa/page/project/settings/deploy_tokens.rb @@ -9,6 +9,7 @@ module QA element :deploy_token_name_field element :deploy_token_expires_at_field element :deploy_token_read_repository_checkbox + element :deploy_token_read_package_registry_checkbox element :deploy_token_read_registry_checkbox element :create_deploy_token_button end @@ -27,8 +28,9 @@ module QA fill_element(:deploy_token_expires_at_field, expires_at.to_s + "\n") end - def fill_scopes(read_repository:, read_registry:) + def fill_scopes(read_repository: false, read_registry: false, read_package_registry: false) check_element(:deploy_token_read_repository_checkbox) if read_repository + check_element(:deploy_token_read_package_registry_checkbox) if read_package_registry check_element(:deploy_token_read_registry_checkbox) if read_registry end diff --git a/qa/qa/page/project/settings/mirroring_repositories.rb b/qa/qa/page/project/settings/mirroring_repositories.rb index 5e7b68858c8..582079157f2 100644 --- a/qa/qa/page/project/settings/mirroring_repositories.rb +++ b/qa/qa/page/project/settings/mirroring_repositories.rb @@ -48,7 +48,7 @@ module QA end def mirror_direction=(value) - raise ArgumentError, "Mirror direction must be 'Push' or 'Pull'" unless %w(Push Pull).include? value + raise ArgumentError, "Mirror direction must be 'Push' or 'Pull'" unless %w[Push Pull].include?(value) select_element(:mirror_direction, value) @@ -59,7 +59,9 @@ module QA end def authentication_method=(value) - raise ArgumentError, "Authentication method must be 'SSH public key', 'Password', or 'None'" unless %w(Password None SSH\ public\ key).include? value + unless %w[Password None SSH\ public\ key].include?(value) + raise ArgumentError, "Authentication method must be 'SSH public key', 'Password', or 'None'" + end select_element(:authentication_method, value) end @@ -129,4 +131,7 @@ module QA end end -QA::Page::Project::Settings::MirroringRepositories.prepend_mod_with('Page::Project::Settings::MirroringRepositories', namespace: QA) +QA::Page::Project::Settings::MirroringRepositories.prepend_mod_with( # rubocop:disable Cop/InjectEnterpriseEditionModule + 'Page::Project::Settings::MirroringRepositories', + namespace: QA +) diff --git a/qa/qa/page/project/settings/repository.rb b/qa/qa/page/project/settings/repository.rb index a02b3d6a7d6..de5b4f37076 100644 --- a/qa/qa/page/project/settings/repository.rb +++ b/qa/qa/page/project/settings/repository.rb @@ -56,6 +56,14 @@ module QA ProtectedTags.perform(&block) end end + + def expand_default_branch(&block) + within('#default-branch-settings') do + find('.btn-default').click do + DefaultBranch.perform(&block) + end + end + end end end end diff --git a/qa/qa/page/project/sub_menus/ci_cd.rb b/qa/qa/page/project/sub_menus/ci_cd.rb index 7cb2fd6c655..c8c90df2c1f 100644 --- a/qa/qa/page/project/sub_menus/ci_cd.rb +++ b/qa/qa/page/project/sub_menus/ci_cd.rb @@ -20,6 +20,24 @@ module QA click_element(:sidebar_menu_link, menu_item: 'CI/CD') end end + + def go_to_pipeline_editor + hover_ci_cd_pipelines do + within_submenu do + click_element(:sidebar_menu_item_link, menu_item: 'Editor') + end + end + end + + private + + def hover_ci_cd_pipelines + within_sidebar do + find_element(:sidebar_menu_link, menu_item: 'CI/CD').hover + + yield + end + end end end end diff --git a/qa/qa/page/project/sub_menus/project.rb b/qa/qa/page/project/sub_menus/project.rb index cd08715bcd8..89d4ed578ed 100644 --- a/qa/qa/page/project/sub_menus/project.rb +++ b/qa/qa/page/project/sub_menus/project.rb @@ -12,17 +12,13 @@ module QA base.class_eval do include QA::Page::Project::SubMenus::Common - - view 'app/views/shared/nav/_scope_menu_body.html.haml' do - element :project_scope_link - end end end def click_project retry_on_exception do within_sidebar do - click_element(:project_scope_link) + click_element(:sidebar_menu_link, menu_item: 'Project scope') end end end |