summaryrefslogtreecommitdiff
path: root/qa/qa/page/project
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/page/project')
-rw-r--r--qa/qa/page/project/fork/new.rb16
-rw-r--r--qa/qa/page/project/pipeline/new.rb2
-rw-r--r--qa/qa/page/project/settings/alerts.rb25
-rw-r--r--qa/qa/page/project/settings/ci_variables.rb2
-rw-r--r--qa/qa/page/project/settings/protected_branches.rb9
-rw-r--r--qa/qa/page/project/show.rb11
-rw-r--r--qa/qa/page/project/web_ide/vscode.rb68
7 files changed, 113 insertions, 20 deletions
diff --git a/qa/qa/page/project/fork/new.rb b/qa/qa/page/project/fork/new.rb
index b622b341685..2b36766d996 100644
--- a/qa/qa/page/project/fork/new.rb
+++ b/qa/qa/page/project/fork/new.rb
@@ -5,6 +5,8 @@ module QA
module Project
module Fork
class New < Page::Base
+ include ::QA::Page::Component::Dropdown
+
view 'app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue' do
element :fork_project_button
element :fork_privacy_button
@@ -12,9 +14,6 @@ module QA
view 'app/assets/javascripts/pages/projects/forks/new/components/project_namespace.vue' do
element :select_namespace_dropdown
- element :select_namespace_dropdown_item
- element :select_namespace_dropdown_search_field
- element :select_namespace_dropdown_item
end
def fork_project(namespace = Runtime::Namespace.path)
@@ -25,20 +24,13 @@ module QA
def get_list_of_namespaces
click_element(:select_namespace_dropdown)
- wait_until(reload: false) do
- has_element?(:select_namespace_dropdown_item)
- end
- all_elements(:select_namespace_dropdown_item, minimum: 1).map(&:text)
+ all_items
end
def choose_namespace(namespace)
retry_on_exception do
click_element(:select_namespace_dropdown)
- fill_element(:select_namespace_dropdown_search_field, namespace)
- wait_until(reload: false) do
- has_element?(:select_namespace_dropdown_item, text: namespace)
- end
- click_button(namespace)
+ search_and_select(namespace)
end
end
end
diff --git a/qa/qa/page/project/pipeline/new.rb b/qa/qa/page/project/pipeline/new.rb
index 1d85d072e34..54c3bb0ddeb 100644
--- a/qa/qa/page/project/pipeline/new.rb
+++ b/qa/qa/page/project/pipeline/new.rb
@@ -5,7 +5,7 @@ module QA
module Project
module Pipeline
class New < QA::Page::Base
- view 'app/assets/javascripts/pipeline_new/components/pipeline_new_form.vue' do
+ view 'app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue' do
element :run_pipeline_button, required: true
element :ci_variable_row_container
element :ci_variable_key_field
diff --git a/qa/qa/page/project/settings/alerts.rb b/qa/qa/page/project/settings/alerts.rb
index a74a227d697..7b1d738ec3c 100644
--- a/qa/qa/page/project/settings/alerts.rb
+++ b/qa/qa/page/project/settings/alerts.rb
@@ -23,6 +23,7 @@ module QA
element :save_and_create_alert_button
element :test_payload_field
element :send_test_alert_button
+ element :prometheus_url_field
end
def enable_incident_for_alert
@@ -59,10 +60,22 @@ module QA
click_element(:integration_name_field)
end
+ def select_prometheus
+ click_element(:integration_type_dropdown)
+ find("option[value='PROMETHEUS']").click
+
+ # Click outside of the list to close it
+ click_element(:prometheus_url_field)
+ end
+
def enter_integration_name(name)
fill_element(:integration_name_field, name)
end
+ def fill_in_prometheus_url(url = Runtime::Scenario.gitlab_address)
+ fill_element(:prometheus_url_field, url)
+ end
+
def activate_integration
within_element(:active_toggle_container) do
find('.gl-toggle').click
@@ -82,6 +95,18 @@ module QA
def send_test_alert
click_element(:send_test_alert_button)
end
+
+ def go_to_view_credentials
+ click_link_with_text('View credentials')
+ end
+
+ def webhook_url
+ find('input[id="url"]').value
+ end
+
+ def authorization_key
+ find('input[id="authorization-key"]').value
+ end
end
end
end
diff --git a/qa/qa/page/project/settings/ci_variables.rb b/qa/qa/page/project/settings/ci_variables.rb
index 316920ffa90..8df0aaa9f27 100644
--- a/qa/qa/page/project/settings/ci_variables.rb
+++ b/qa/qa/page/project/settings/ci_variables.rb
@@ -7,7 +7,7 @@ module QA
class CiVariables < Page::Base
include QA::Page::Settings::Common
- view 'app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue' do
+ view 'app/assets/javascripts/ci/ci_variable_list/components/ci_variable_modal.vue' do
element :ci_variable_key_field
element :ci_variable_value_field
element :ci_variable_save_button
diff --git a/qa/qa/page/project/settings/protected_branches.rb b/qa/qa/page/project/settings/protected_branches.rb
index 659fe198d49..3eddd0fd33a 100644
--- a/qa/qa/page/project/settings/protected_branches.rb
+++ b/qa/qa/page/project/settings/protected_branches.rb
@@ -51,10 +51,15 @@ module QA
within_element(:"allowed_to_#{action}_dropdown_content") do
click_on allowed[:roles][:description]
- allowed[:users].each { |user| click_on user.username } if allowed.key?(:users)
- allowed[:groups].each { |group| click_on group.name } if allowed.key?(:groups)
+ allowed[:users].each { |user| select_name user.username } if allowed.key?(:users)
+ allowed[:groups].each { |group| select_name group.name } if allowed.key?(:groups)
end
end
+
+ def select_name(name)
+ fill_element(:dropdown_input_field, name)
+ click_on name
+ end
end
end
end
diff --git a/qa/qa/page/project/show.rb b/qa/qa/page/project/show.rb
index 168bfd6aa0a..3c2b8d56f1d 100644
--- a/qa/qa/page/project/show.rb
+++ b/qa/qa/page/project/show.rb
@@ -47,13 +47,12 @@ module QA
element :tree_holder, '.tree-holder' # rubocop:disable QA/ElementWithPattern
end
- view 'app/views/projects/_fork_info.html.haml' do
+ view 'app/assets/javascripts/repository/components/fork_info.vue' do
element :forked_from_link
end
view 'app/views/projects/buttons/_fork.html.haml' do
- element :fork_label, "%span= s_('ProjectOverview|Fork')" # rubocop:disable QA/ElementWithPattern
- element :fork_link, "link_to new_project_fork_path(@project)" # rubocop:disable QA/ElementWithPattern
+ element :fork_button
end
view 'app/views/projects/empty.html.haml' do
@@ -97,8 +96,12 @@ module QA
click_element :new_file_menu_item
end
+ # Click by JS is needed to bypass the VSCode Web IDE popover
+ # Change back to regular click_element when vscode_web_ide FF is removed
+ # Rollout issue: https://gitlab.com/gitlab-org/gitlab/-/issues/371084
def fork_project
- click_on 'Fork'
+ fork_button = find_element(:fork_button)
+ click_by_javascript(fork_button)
end
def forked_from?(parent_project_name)
diff --git a/qa/qa/page/project/web_ide/vscode.rb b/qa/qa/page/project/web_ide/vscode.rb
new file mode 100644
index 00000000000..dd5222cfd93
--- /dev/null
+++ b/qa/qa/page/project/web_ide/vscode.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+# VSCode WebIDE is built off an iFrame application therefore we are uanble to use `qa-selectors`
+module QA
+ module Page
+ module Project
+ module WebIDE
+ class VSCode < Page::Base
+ # Use to Pass Test::Sanity::Selectors temporarily until iframe [data-qa-* selector added
+ view 'app/views/shared/_broadcast_message.html.haml' do
+ element :broadcast_notification_container
+ element :close_button
+ end
+
+ # Used for stablility, due to feature_caching of vscode_web_ide
+ def wait_for_ide_to_load
+ page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
+ wait_for_requests
+ Support::Waiter.wait_until(max_duration: 60, reload_page: page, retry_on_exception: true) do
+ within_vscode_editor do
+ # vscode file_explorer element
+ page.has_css?('.explorer-folders-view', visible: true)
+ end
+ end
+ end
+
+ def within_vscode_editor(&block)
+ iframe = find('#ide iframe')
+ page.within_frame(iframe, &block)
+ end
+
+ def create_new_folder(name)
+ within_vscode_editor do
+ # Use for stability, WebIDE inside an iframe is finnicky
+ Support::Waiter.wait_until(max_duration: 60, retry_on_exception: true) do
+ page.find('.explorer-folders-view').right_click
+ # new_folder_button
+ page.has_css?('[aria-label="New Folder..."]', visible: true)
+ end
+
+ # Additonal wait for stability, webdriver sometimes moves too fast
+ Support::Waiter.wait_until(max_duration: 60, retry_on_exception: true) do
+ page.find('[aria-label="New Folder..."]').click
+ # Verify New Folder button is triggered and textbox is waiting for input
+ page.find('.explorer-item-edited', visible: true)
+ send_keys(name, :enter)
+ page.has_content?(name)
+ end
+ end
+ end
+
+ def commit_and_push(folder_name)
+ within_vscode_editor do
+ # Commit Tab
+ page.find('a.codicon-source-control-view-icon').click
+ send_keys(folder_name)
+ page.has_content?(folder_name)
+
+ # Commit Button
+ page.find('a.monaco-description-button').click
+ page.has_css?('.notification-list-item-details-row', visible: true)
+ end
+ end
+ end
+ end
+ end
+ end
+end