summaryrefslogtreecommitdiff
path: root/qa/qa/page
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/page')
-rw-r--r--qa/qa/page/admin/overview/users/show.rb30
-rw-r--r--qa/qa/page/base.rb6
-rw-r--r--qa/qa/page/component/import/gitlab.rb40
-rw-r--r--qa/qa/page/component/import/selection.rb23
-rw-r--r--qa/qa/page/component/invite_members_modal.rb6
-rw-r--r--qa/qa/page/component/issuable/sidebar.rb16
-rw-r--r--qa/qa/page/dashboard/snippet/edit.rb3
-rw-r--r--qa/qa/page/group/bulk_import.rb5
-rw-r--r--qa/qa/page/group/menu.rb2
-rw-r--r--qa/qa/page/group/new.rb6
-rw-r--r--qa/qa/page/group/settings/general.rb2
-rw-r--r--qa/qa/page/group/sub_menus/common.rb4
-rw-r--r--qa/qa/page/main/login.rb2
-rw-r--r--qa/qa/page/project/fork/new.rb8
-rw-r--r--qa/qa/page/project/import/github.rb30
-rw-r--r--qa/qa/page/project/import/repo_by_url.rb60
-rw-r--r--qa/qa/page/project/infrastructure/kubernetes/show.rb43
-rw-r--r--qa/qa/page/project/new.rb15
-rw-r--r--qa/qa/page/project/pipeline_editor/show.rb45
-rw-r--r--qa/qa/page/project/settings/advanced.rb2
-rw-r--r--qa/qa/page/project/settings/default_branch.rb29
-rw-r--r--qa/qa/page/project/settings/deploy_tokens.rb4
-rw-r--r--qa/qa/page/project/settings/mirroring_repositories.rb11
-rw-r--r--qa/qa/page/project/settings/repository.rb8
-rw-r--r--qa/qa/page/project/sub_menus/ci_cd.rb18
-rw-r--r--qa/qa/page/project/sub_menus/project.rb6
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