summaryrefslogtreecommitdiff
path: root/qa/qa/page
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 07:33:21 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 07:33:21 +0000
commit36a59d088eca61b834191dacea009677a96c052f (patch)
treee4f33972dab5d8ef79e3944a9f403035fceea43f /qa/qa/page
parenta1761f15ec2cae7c7f7bbda39a75494add0dfd6f (diff)
downloadgitlab-ce-36a59d088eca61b834191dacea009677a96c052f.tar.gz
Add latest changes from gitlab-org/gitlab@15-0-stable-eev15.0.0-rc42
Diffstat (limited to 'qa/qa/page')
-rw-r--r--qa/qa/page/base.rb19
-rw-r--r--qa/qa/page/component/blob_content.rb11
-rw-r--r--qa/qa/page/component/new_snippet.rb3
-rw-r--r--qa/qa/page/component/snippet.rb4
-rw-r--r--qa/qa/page/dashboard/snippet/edit.rb3
-rw-r--r--qa/qa/page/file/form.rb3
-rw-r--r--qa/qa/page/group/settings/group_deploy_tokens.rb8
-rw-r--r--qa/qa/page/main/login.rb12
-rw-r--r--qa/qa/page/merge_request/index.rb17
-rw-r--r--qa/qa/page/merge_request/new.rb15
-rw-r--r--qa/qa/page/merge_request/show.rb9
-rw-r--r--qa/qa/page/project/pipeline/new.rb4
-rw-r--r--qa/qa/page/project/pipeline/show.rb6
-rw-r--r--qa/qa/page/project/pipeline_editor/show.rb30
-rw-r--r--qa/qa/page/project/settings/ci_cd.rb7
-rw-r--r--qa/qa/page/project/settings/deploy_tokens.rb24
-rw-r--r--qa/qa/page/project/settings/general_pipelines.rb23
-rw-r--r--qa/qa/page/project/settings/merge_request.rb2
-rw-r--r--qa/qa/page/project/settings/services/prometheus.rb2
-rw-r--r--qa/qa/page/project/show.rb6
20 files changed, 140 insertions, 68 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index 83db8bc0fd6..248c5f38438 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -218,6 +218,15 @@ module QA
page.validate_elements_present! if page
end
+ # Uses capybara to locate and click an element instead of `click_element`.
+ # This can be used when it's not possible to add a QA selector but we still want to log the click
+ #
+ # @param [String] method the capybara method to use
+ # @param [String] locator the selector used to find the element
+ def click_via_capybara(method, locator)
+ page.public_send(method, locator)
+ end
+
def fill_element(name, content)
find_element(name).set(content)
end
@@ -452,7 +461,7 @@ module QA
click_by_js ? page.execute_script("arguments[0].click();", box) : box.click
end
- def feature_flag_controlled_element(feature_flag, element_when_flag_enabled, element_when_flag_disabled)
+ def feature_flag_controlled_element(feature_flag, element_when_flag_enabled, element_when_flag_disabled, visibility = true)
# Feature flags can change the UI elements shown, but we need admin access to get feature flag values, which
# prevents us running the tests on production. Instead we detect the UI element that should be shown when the
# feature flag is enabled and otherwise use the element that should be displayed when the feature flag is
@@ -463,12 +472,12 @@ module QA
# load and render the UI
wait_for_requests
- return element_when_flag_enabled if has_element?(element_when_flag_enabled, wait: 1)
- return element_when_flag_disabled if has_element?(element_when_flag_disabled, wait: 1)
+ return element_when_flag_enabled if has_element?(element_when_flag_enabled, wait: 1, visible: visibility)
+ return element_when_flag_disabled if has_element?(element_when_flag_disabled, wait: 1, visibile: visibility)
# Check both options again, this time waiting for the default duration
- return element_when_flag_enabled if has_element?(element_when_flag_enabled)
- return element_when_flag_disabled if has_element?(element_when_flag_disabled)
+ return element_when_flag_enabled if has_element?(element_when_flag_enabled, visible: visibility)
+ return element_when_flag_disabled if has_element?(element_when_flag_disabled, visible: visibility)
raise ElementNotFound,
"Could not find the expected element as #{element_when_flag_enabled} or #{element_when_flag_disabled}." \
diff --git a/qa/qa/page/component/blob_content.rb b/qa/qa/page/component/blob_content.rb
index ce743b24dda..c2a1687ccfc 100644
--- a/qa/qa/page/component/blob_content.rb
+++ b/qa/qa/page/component/blob_content.rb
@@ -63,6 +63,17 @@ module QA
end
end
+ def has_normalized_ws_text?(text, wait: Capybara.default_max_wait_time)
+ if has_element?(:blob_viewer_file_content, wait: 1)
+ # The blob viewer renders line numbers and whitespace in a way that doesn't match the source file
+ # This isn't a visual validation test, so we ignore line numbers and whitespace
+ find_element(:blob_viewer_file_content, wait: 0).text.gsub(/^\d+\s|\s*/, '')
+ .start_with?(text.gsub(/\s*/, ''))
+ else
+ has_text?(text.gsub(/\s+/, " "), wait: wait)
+ end
+ end
+
def click_copy_file_contents(file_number = nil)
within_file_by_number(:default_actions_container, file_number) { click_element(:copy_contents_button) }
end
diff --git a/qa/qa/page/component/new_snippet.rb b/qa/qa/page/component/new_snippet.rb
index 6ccf8a4043e..9c4408e36e4 100644
--- a/qa/qa/page/component/new_snippet.rb
+++ b/qa/qa/page/component/new_snippet.rb
@@ -76,8 +76,7 @@ module QA
end
def click_create_snippet_button
- wait_until(reload: false) { !find_element(:submit_button).disabled? }
- click_element(:submit_button)
+ click_element_coordinates(:submit_button)
wait_until(reload: false) do
has_no_element?(:snippet_title_field)
end
diff --git a/qa/qa/page/component/snippet.rb b/qa/qa/page/component/snippet.rb
index a8ae706858e..47d32ae8225 100644
--- a/qa/qa/page/component/snippet.rb
+++ b/qa/qa/page/component/snippet.rb
@@ -82,7 +82,7 @@ module QA
base.view 'app/views/layouts/nav/_breadcrumbs.html.haml' do
element :breadcrumb_links_content
- element :breadcrumb_sub_title_content
+ element :breadcrumb_current_link
end
end
@@ -257,7 +257,7 @@ module QA
def snippet_id
within_element(:breadcrumb_links_content) do
- find_element(:breadcrumb_sub_title_content).text.delete_prefix('$')
+ find_element(:breadcrumb_current_link).text.delete_prefix('$')
end
end
end
diff --git a/qa/qa/page/dashboard/snippet/edit.rb b/qa/qa/page/dashboard/snippet/edit.rb
index d84a053591c..8af3eb5693c 100644
--- a/qa/qa/page/dashboard/snippet/edit.rb
+++ b/qa/qa/page/dashboard/snippet/edit.rb
@@ -63,8 +63,7 @@ module QA
end
def save_changes
- wait_until(reload: false) { !find_element(:submit_button).disabled? }
- click_element(:submit_button)
+ click_element_coordinates(:submit_button)
wait_until(reload: false) do
has_no_element?(:file_name_field)
end
diff --git a/qa/qa/page/file/form.rb b/qa/qa/page/file/form.rb
index a6251f185f9..bb8934db498 100644
--- a/qa/qa/page/file/form.rb
+++ b/qa/qa/page/file/form.rb
@@ -4,8 +4,9 @@ module QA
module Page
module File
class Form < Page::Base
- include Shared::CommitMessage
include Page::Component::DropdownFilter
+ include Page::Component::BlobContent
+ include Shared::CommitMessage
include Shared::CommitButton
include Shared::Editor
diff --git a/qa/qa/page/group/settings/group_deploy_tokens.rb b/qa/qa/page/group/settings/group_deploy_tokens.rb
index 65ee3fc72eb..7d908f473de 100644
--- a/qa/qa/page/group/settings/group_deploy_tokens.rb
+++ b/qa/qa/page/group/settings/group_deploy_tokens.rb
@@ -30,10 +30,10 @@ module QA
end
def fill_scopes(read_repository: false, read_registry: false, read_package_registry: false, write_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
- check_element(:deploy_token_write_package_registry_checkbox) if write_package_registry
+ check_element(:deploy_token_read_repository_checkbox, true) if read_repository
+ check_element(:deploy_token_read_package_registry_checkbox, true) if read_package_registry
+ check_element(:deploy_token_read_registry_checkbox, true) if read_registry
+ check_element(:deploy_token_write_package_registry_checkbox, true) if write_package_registry
end
def add_token
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb
index d8b7bb90437..f3ee627c41e 100644
--- a/qa/qa/page/main/login.rb
+++ b/qa/qa/page/main/login.rb
@@ -30,9 +30,8 @@ module QA
element :register_tab
end
- view 'app/views/devise/shared/_tabs_normal.html.haml' do
+ view 'app/views/devise/shared/_tab_single.html.haml' do
element :sign_in_tab
- element :register_tab
end
view 'app/helpers/auth_helper.rb' do
@@ -134,6 +133,14 @@ module QA
has_css?('[name="arkose_labs_token"][value]', visible: false)
end
+ def has_accept_all_cookies_button?
+ has_button?('Accept All Cookies')
+ end
+
+ def click_accept_all_cookies
+ click_button('Accept All Cookies')
+ end
+
def switch_to_sign_in_tab
click_element :sign_in_tab
end
@@ -180,6 +187,7 @@ module QA
fill_element :password_field, user.password
if Runtime::Env.running_on_dot_com?
+ click_accept_all_cookies if has_accept_all_cookies_button?
# Arkose only appears in staging.gitlab.com, gitlab.com, etc...
# Wait until the ArkoseLabs challenge has initialized
diff --git a/qa/qa/page/merge_request/index.rb b/qa/qa/page/merge_request/index.rb
new file mode 100644
index 00000000000..ae024c16566
--- /dev/null
+++ b/qa/qa/page/merge_request/index.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module MergeRequest
+ class Index < Page::Base
+ view 'app/views/shared/empty_states/_merge_requests.html.haml' do
+ element :new_merge_request_button
+ end
+
+ def click_new_merge_request
+ click_element(:new_merge_request_button)
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/merge_request/new.rb b/qa/qa/page/merge_request/new.rb
index bcc60a8275d..b19a0d1a830 100644
--- a/qa/qa/page/merge_request/new.rb
+++ b/qa/qa/page/merge_request/new.rb
@@ -12,6 +12,11 @@ module QA
element :issuable_form_description
end
+ view 'app/views/projects/merge_requests/creations/_new_compare.html.haml' do
+ element :compare_branches_button
+ element :source_branch_dropdown
+ end
+
view 'app/views/projects/merge_requests/show.html.haml' do
element :diffs_tab
end
@@ -27,6 +32,10 @@ module QA
"to customize #{scanner_name} settings."
end
+ def click_compare_branches_and_continue
+ click_element(:compare_branches_button)
+ end
+
def create_merge_request
click_element(:issuable_create_button, Page::MergeRequest::Show)
end
@@ -43,6 +52,12 @@ module QA
def has_file?(file_name)
has_element?(:file_name_content, text: file_name)
end
+
+ def select_source_branch(branch)
+ click_element(:source_branch_dropdown)
+ fill_element(:dropdown_input_field, branch)
+ click_via_capybara(:click_on, branch)
+ end
end
end
end
diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb
index 689b3dba286..8f5ac62d127 100644
--- a/qa/qa/page/merge_request/show.rb
+++ b/qa/qa/page/merge_request/show.rb
@@ -49,8 +49,8 @@ module QA
element :comment_now_button
end
- view 'app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue' do
- element :download_dropdown
+ view 'app/views/projects/merge_requests/_code_dropdown.html.haml' do
+ element :mr_code_dropdown
element :download_email_patches_menu_item
element :download_plain_diff_menu_item
element :open_in_web_ide_button
@@ -343,12 +343,12 @@ module QA
end
def view_email_patches
- click_element(:download_dropdown)
+ click_element(:mr_code_dropdown)
visit_link_in_element(:download_email_patches_menu_item)
end
def view_plain_diff
- click_element(:download_dropdown)
+ click_element(:mr_code_dropdown)
visit_link_in_element(:download_plain_diff_menu_item)
end
@@ -359,6 +359,7 @@ module QA
end
def click_open_in_web_ide
+ click_element(:mr_code_dropdown)
click_element(:open_in_web_ide_button)
wait_for_requests
end
diff --git a/qa/qa/page/project/pipeline/new.rb b/qa/qa/page/project/pipeline/new.rb
index 96a48e6240a..6cf5c3b1134 100644
--- a/qa/qa/page/project/pipeline/new.rb
+++ b/qa/qa/page/project/pipeline/new.rb
@@ -16,9 +16,9 @@ module QA
click_element(:run_pipeline_button, Page::Project::Pipeline::Show)
end
- def add_variable(key, value, row_index: 0)
+ def configure_variable(key: nil, value: 'foo', row_index: 0)
within_element_by_index(:ci_variable_row_container, row_index) do
- fill_element(:ci_variable_key_field, key)
+ fill_element(:ci_variable_key_field, key) unless key.nil?
fill_element(:ci_variable_value_field, value)
end
end
diff --git a/qa/qa/page/project/pipeline/show.rb b/qa/qa/page/project/pipeline/show.rb
index f499b748fb4..3f1cc2f1257 100644
--- a/qa/qa/page/project/pipeline/show.rb
+++ b/qa/qa/page/project/pipeline/show.rb
@@ -74,7 +74,11 @@ module QA
end
def has_linked_pipeline?(title: nil)
- title ? find_linked_pipeline_by_title(title) : has_element?(:linked_pipeline_container)
+ # If the pipeline page has loaded linked pipelines should appear, but it can take a little while,
+ # especially on busier environments.
+ retry_until(reload: true, message: 'Waiting for linked pipeline to appear') do
+ title ? find_linked_pipeline_by_title(title) : has_element?(:linked_pipeline_container)
+ end
end
alias_method :has_child_pipeline?, :has_linked_pipeline?
diff --git a/qa/qa/page/project/pipeline_editor/show.rb b/qa/qa/page/project/pipeline_editor/show.rb
index 1a8e1e07994..197fd8fd9fb 100644
--- a/qa/qa/page/project/pipeline_editor/show.rb
+++ b/qa/qa/page/project/pipeline_editor/show.rb
@@ -5,6 +5,10 @@ module QA
module Project
module PipelineEditor
class Show < QA::Page::Base
+ view 'app/assets/javascripts/pipeline_editor/pipeline_editor_app.vue' do
+ element :pipeline_editor_app, required: true
+ end
+
view 'app/assets/javascripts/pipeline_editor/components/file_nav/branch_switcher.vue' do
element :branch_selector_button, required: true
element :branch_menu_item_button
@@ -12,7 +16,7 @@ module QA
end
view 'app/assets/javascripts/pipeline_editor/components/commit/commit_form.vue' do
- element :target_branch_field, required: true
+ element :source_branch_field, required: true
end
view 'app/assets/javascripts/pipeline_editor/components/editor/ci_editor_header.vue' do
@@ -46,7 +50,23 @@ module QA
element :file_editor_container
end
+ view 'app/assets/javascripts/pipeline_editor/components/popovers/file_tree_popover.vue' do
+ element :file_tree_popover
+ end
+
+ def initialize
+ dismiss_file_tree_popover if has_element?(:file_tree_popover)
+
+ super
+ end
+
+ def dismiss_file_tree_popover
+ # clicking outside the popover will dismiss it
+ click_element(:pipeline_editor_app)
+ end
+
def open_branch_selector_dropdown
+ dismiss_file_tree_popover if has_element?(:file_tree_popover, wait: 1)
click_element(:branch_selector_button)
end
@@ -57,8 +77,8 @@ module QA
wait_for_requests
end
- def target_branch_name
- find_element(:target_branch_field).value
+ def source_branch_name
+ find_element(:source_branch_field).value
end
def editing_content
@@ -76,8 +96,8 @@ module QA
wait_for_requests
end
- def set_target_branch(name)
- find_element(:target_branch_field).fill_in(with: name)
+ def set_source_branch(name)
+ find_element(:source_branch_field).fill_in(with: name)
end
def current_branch
diff --git a/qa/qa/page/project/settings/ci_cd.rb b/qa/qa/page/project/settings/ci_cd.rb
index 6df285cdd93..c5fad2efcfe 100644
--- a/qa/qa/page/project/settings/ci_cd.rb
+++ b/qa/qa/page/project/settings/ci_cd.rb
@@ -11,13 +11,6 @@ module QA
element :autodevops_settings_content
element :runners_settings_content
element :variables_settings_content
- element :general_pipelines_settings_content
- end
-
- def expand_general_pipelines(&block)
- expand_content(:general_pipelines_settings_content) do
- Settings::GeneralPipelines.perform(&block)
- end
end
def expand_runners_settings(&block)
diff --git a/qa/qa/page/project/settings/deploy_tokens.rb b/qa/qa/page/project/settings/deploy_tokens.rb
index 407d57bc54e..cf25f4a0568 100644
--- a/qa/qa/page/project/settings/deploy_tokens.rb
+++ b/qa/qa/page/project/settings/deploy_tokens.rb
@@ -31,11 +31,25 @@ module QA
end
def fill_scopes(scopes)
- check_element(:deploy_token_read_repository_checkbox) if scopes.include? :read_repository
- check_element(:deploy_token_read_package_registry_checkbox) if scopes.include? :read_package_registry
- check_element(:deploy_token_write_package_registry_checkbox) if scopes.include? :write_package_registry
- check_element(:deploy_token_read_registry_checkbox) if scopes.include? :read_registry
- check_element(:deploy_token_write_registry_checkbox) if scopes.include? :write_registry
+ if scopes.include? :read_repository
+ check_element(:deploy_token_read_repository_checkbox, true)
+ end
+
+ if scopes.include? :read_package_registry
+ check_element(:deploy_token_read_package_registry_checkbox, true)
+ end
+
+ if scopes.include? :write_package_registry
+ check_element(:deploy_token_write_package_registry_checkbox, true)
+ end
+
+ if scopes.include? :read_registry
+ check_element(:deploy_token_read_registry_checkbox, true)
+ end
+
+ if scopes.include? :write_registry
+ check_element(:deploy_token_write_registry_checkbox, true)
+ end
end
def add_token
diff --git a/qa/qa/page/project/settings/general_pipelines.rb b/qa/qa/page/project/settings/general_pipelines.rb
deleted file mode 100644
index 5a98849a41d..00000000000
--- a/qa/qa/page/project/settings/general_pipelines.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Page
- module Project
- module Settings
- class GeneralPipelines < Page::Base
- include QA::Page::Settings::Common
-
- view 'app/views/projects/settings/ci_cd/_form.html.haml' do
- element :build_coverage_regex_field
- element :save_general_pipelines_changes_button
- end
-
- def configure_coverage_regex(pattern)
- fill_element :build_coverage_regex_field, pattern
- click_element :save_general_pipelines_changes_button
- end
- end
- end
- end
- end
-end
diff --git a/qa/qa/page/project/settings/merge_request.rb b/qa/qa/page/project/settings/merge_request.rb
index dbe804bfdd0..0d5d4df9f34 100644
--- a/qa/qa/page/project/settings/merge_request.rb
+++ b/qa/qa/page/project/settings/merge_request.rb
@@ -29,7 +29,7 @@ module QA
end
def enable_merge_if_all_disscussions_are_resolved
- check_element(:allow_merge_if_all_discussions_are_resolved_checkbox)
+ check_element(:allow_merge_if_all_discussions_are_resolved_checkbox, true)
click_save_changes
end
end
diff --git a/qa/qa/page/project/settings/services/prometheus.rb b/qa/qa/page/project/settings/services/prometheus.rb
index 8ae4ded535e..2e3c385a27d 100644
--- a/qa/qa/page/project/settings/services/prometheus.rb
+++ b/qa/qa/page/project/settings/services/prometheus.rb
@@ -8,7 +8,7 @@ module QA
class Prometheus < Page::Base
include Page::Component::CustomMetric
- view 'app/views/projects/services/prometheus/_custom_metrics.html.haml' do
+ view 'app/views/shared/integrations/prometheus/_custom_metrics.html.haml' do
element :custom_metrics_container
element :new_metric_button
end
diff --git a/qa/qa/page/project/show.rb b/qa/qa/page/project/show.rb
index b234a9ba986..9983ee2a33d 100644
--- a/qa/qa/page/project/show.rb
+++ b/qa/qa/page/project/show.rb
@@ -120,6 +120,10 @@ module QA
click_element(:new_issue_link)
end
+ def has_create_merge_request_button?
+ has_css?(element_selector_css(:create_merge_request))
+ end
+
def has_file?(name)
return false unless has_element?(:file_tree_table)
@@ -144,7 +148,7 @@ module QA
def new_merge_request
wait_until(reload: true) do
- has_css?(element_selector_css(:create_merge_request))
+ has_create_merge_request_button?
end
click_element :create_merge_request