diff options
Diffstat (limited to 'qa/qa/page/project')
-rw-r--r-- | qa/qa/page/project/fork/new.rb | 16 | ||||
-rw-r--r-- | qa/qa/page/project/pipeline/new.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/project/settings/alerts.rb | 25 | ||||
-rw-r--r-- | qa/qa/page/project/settings/ci_variables.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/project/settings/protected_branches.rb | 9 | ||||
-rw-r--r-- | qa/qa/page/project/show.rb | 11 | ||||
-rw-r--r-- | qa/qa/page/project/web_ide/vscode.rb | 68 |
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 |