summaryrefslogtreecommitdiff
path: root/qa/qa/page
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 18:18:33 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 18:18:33 +0000
commitf64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch)
treea2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /qa/qa/page
parentbfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff)
downloadgitlab-ce-f64a639bcfa1fc2bc89ca7db268f594306edfd7c.tar.gz
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'qa/qa/page')
-rw-r--r--qa/qa/page/admin/settings/component/ip_limits.rb6
-rw-r--r--qa/qa/page/admin/settings/component/outbound_requests.rb2
-rw-r--r--qa/qa/page/admin/settings/component/performance_bar.rb2
-rw-r--r--qa/qa/page/admin/settings/component/sign_up_restrictions.rb8
-rw-r--r--qa/qa/page/base.rb23
-rw-r--r--qa/qa/page/component/invite_members_modal.rb80
-rw-r--r--qa/qa/page/component/issue_board/show.rb8
-rw-r--r--qa/qa/page/component/new_snippet.rb6
-rw-r--r--qa/qa/page/component/note.rb3
-rw-r--r--qa/qa/page/component/wiki.rb74
-rw-r--r--qa/qa/page/component/wiki_page_form.rb52
-rw-r--r--qa/qa/page/component/wiki_sidebar.rb48
-rw-r--r--qa/qa/page/dashboard/snippet/edit.rb6
-rw-r--r--qa/qa/page/group/members.rb29
-rw-r--r--qa/qa/page/group/menu.rb13
-rw-r--r--qa/qa/page/group/settings/general.rb48
-rw-r--r--qa/qa/page/group/settings/package_registries.rb42
-rw-r--r--qa/qa/page/main/login.rb2
-rw-r--r--qa/qa/page/merge_request/show.rb72
-rw-r--r--qa/qa/page/project/import/github.rb39
-rw-r--r--qa/qa/page/project/issue/index.rb14
-rw-r--r--qa/qa/page/project/members.rb35
-rw-r--r--qa/qa/page/project/new.rb2
-rw-r--r--qa/qa/page/project/operations/kubernetes/add_existing.rb2
-rw-r--r--qa/qa/page/project/operations/kubernetes/index.rb4
-rw-r--r--qa/qa/page/project/registry/show.rb40
-rw-r--r--qa/qa/page/project/settings/auto_devops.rb4
-rw-r--r--qa/qa/page/project/settings/ci_variables.rb1
-rw-r--r--qa/qa/page/project/settings/incidents.rb2
-rw-r--r--qa/qa/page/project/settings/main.rb13
-rw-r--r--qa/qa/page/project/settings/merge_request.rb10
-rw-r--r--qa/qa/page/project/sub_menus/packages.rb19
-rw-r--r--qa/qa/page/project/sub_menus/settings.rb2
-rw-r--r--qa/qa/page/project/web_ide/edit.rb4
-rw-r--r--qa/qa/page/project/wiki/edit.rb40
-rw-r--r--qa/qa/page/project/wiki/show.rb64
-rw-r--r--qa/qa/page/project/wiki/sidebar.rb50
37 files changed, 554 insertions, 315 deletions
diff --git a/qa/qa/page/admin/settings/component/ip_limits.rb b/qa/qa/page/admin/settings/component/ip_limits.rb
index 9db2ae8ba58..1f9bd113cab 100644
--- a/qa/qa/page/admin/settings/component/ip_limits.rb
+++ b/qa/qa/page/admin/settings/component/ip_limits.rb
@@ -14,9 +14,9 @@ module QA
end
def enable_throttles
- check_element :throttle_unauthenticated_checkbox
- check_element :throttle_authenticated_api_checkbox
- check_element :throttle_authenticated_web_checkbox
+ check_element(:throttle_unauthenticated_checkbox)
+ check_element(:throttle_authenticated_api_checkbox)
+ check_element(:throttle_authenticated_web_checkbox)
end
def save_settings
diff --git a/qa/qa/page/admin/settings/component/outbound_requests.rb b/qa/qa/page/admin/settings/component/outbound_requests.rb
index 248ea5b6715..c812c05f9c1 100644
--- a/qa/qa/page/admin/settings/component/outbound_requests.rb
+++ b/qa/qa/page/admin/settings/component/outbound_requests.rb
@@ -19,7 +19,7 @@ module QA
private
def check_allow_requests_to_local_network_from_services_checkbox
- check_element :allow_requests_from_services_checkbox
+ check_element(:allow_requests_from_services_checkbox)
end
def click_save_changes_button
diff --git a/qa/qa/page/admin/settings/component/performance_bar.rb b/qa/qa/page/admin/settings/component/performance_bar.rb
index bc29efb64c0..9e92fa362fb 100644
--- a/qa/qa/page/admin/settings/component/performance_bar.rb
+++ b/qa/qa/page/admin/settings/component/performance_bar.rb
@@ -12,7 +12,7 @@ module QA
end
def enable_performance_bar
- click_element :enable_performance_bar_checkbox
+ check_element(:enable_performance_bar_checkbox)
Capybara.current_session.driver.browser.manage.add_cookie(name: 'perf_bar_enabled', value: 'true')
end
diff --git a/qa/qa/page/admin/settings/component/sign_up_restrictions.rb b/qa/qa/page/admin/settings/component/sign_up_restrictions.rb
index 9526faf4126..9909155641f 100644
--- a/qa/qa/page/admin/settings/component/sign_up_restrictions.rb
+++ b/qa/qa/page/admin/settings/component/sign_up_restrictions.rb
@@ -13,13 +13,13 @@ module QA
end
def require_admin_approval_after_user_signup
- check_element :require_admin_approval_after_user_signup_checkbox
- click_element :save_changes_button
+ check_element(:require_admin_approval_after_user_signup_checkbox)
+ click_element(:save_changes_button)
end
def disable_signups
- uncheck_element :signup_enabled_checkbox
- click_element :save_changes_button
+ uncheck_element(:signup_enabled_checkbox)
+ click_element(:save_changes_button)
end
end
end
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index 99f73bbba48..d1b556b58fb 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -133,9 +133,15 @@ module QA
end
def check_element(name)
+ if find_element(name, visible: false).checked?
+ QA::Runtime::Logger.debug("#{name} is already checked")
+
+ return
+ end
+
retry_until(sleep_interval: 1) do
- find_element(name).set(true)
- checked = find_element(name).checked?
+ find_element(name, visible: false).click
+ checked = find_element(name, visible: false).checked?
QA::Runtime::Logger.debug(checked ? "#{name} was checked" : "#{name} was not checked")
@@ -144,10 +150,19 @@ module QA
end
def uncheck_element(name)
+ unless find_element(name, visible: false).checked?
+ QA::Runtime::Logger.debug("#{name} is already unchecked")
+
+ return
+ end
+
retry_until(sleep_interval: 1) do
- find_element(name).set(false)
+ find_element(name, visible: false).click
+ unchecked = !find_element(name, visible: false).checked?
+
+ QA::Runtime::Logger.debug(unchecked ? "#{name} was unchecked" : "#{name} was not unchecked")
- !find_element(name).checked?
+ unchecked
end
end
diff --git a/qa/qa/page/component/invite_members_modal.rb b/qa/qa/page/component/invite_members_modal.rb
new file mode 100644
index 00000000000..fbddb37f15e
--- /dev/null
+++ b/qa/qa/page/component/invite_members_modal.rb
@@ -0,0 +1,80 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module InviteMembersModal
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/assets/javascripts/invite_members/components/invite_members_modal.vue' do
+ element :invite_button
+ element :access_level_dropdown
+ element :invite_members_modal_content
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/group_select.vue' do
+ element :group_select_dropdown_search_field
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do
+ element :invite_a_group_button
+ end
+
+ base.view 'app/assets/javascripts/invite_members/components/invite_members_trigger.vue' do
+ element :invite_members_button
+ end
+ end
+
+ def open_invite_members_modal
+ click_element :invite_members_button
+ end
+
+ def open_invite_group_modal
+ click_element :invite_a_group_button
+ end
+
+ def add_member(username, access_level = Resource::Members::AccessLevel::DEVELOPER)
+ open_invite_members_modal
+
+ within_element(:invite_members_modal_content) do
+ fill_element :access_level_dropdown, with: access_level
+
+ fill_in 'Search for members to invite', with: username
+
+ Support::WaitForRequests.wait_for_requests
+
+ click_button username
+
+ click_element :invite_button
+ end
+
+ Support::WaitForRequests.wait_for_requests
+
+ page.refresh
+ end
+
+ def invite_group(group_name, group_access = Resource::Members::AccessLevel::GUEST)
+ open_invite_group_modal
+
+ fill_element :access_level_dropdown, with: group_access
+
+ click_button 'Select a group'
+ fill_element :group_select_dropdown_search_field, group_name
+
+ Support::WaitForRequests.wait_for_requests
+
+ click_button group_name
+
+ click_element :invite_button
+
+ Support::WaitForRequests.wait_for_requests
+
+ page.refresh
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/issue_board/show.rb b/qa/qa/page/component/issue_board/show.rb
index 4c1f03fbe86..d7dfb0757bc 100644
--- a/qa/qa/page/component/issue_board/show.rb
+++ b/qa/qa/page/component/issue_board/show.rb
@@ -43,6 +43,10 @@ module QA
element :focus_mode_button
end
+ view 'app/assets/javascripts/boards/components/config_toggle.vue' do
+ element :boards_config_button
+ end
+
# The `focused_board` method does not use `find_element` with an element defined
# with the attribute `data-qa-selector` since such element is not unique when the
# `is-focused` class is not set, and it was not possible to find a better solution.
@@ -82,6 +86,10 @@ module QA
end
end
+ def click_boards_config_button
+ click_element(:boards_config_button)
+ end
+
def click_boards_dropdown_button
# The dropdown button comes from the `GlDropdown` component of `@gitlab/ui`,
# so it wasn't possible to add a `data-qa-selector` to it.
diff --git a/qa/qa/page/component/new_snippet.rb b/qa/qa/page/component/new_snippet.rb
index 741a3feb73b..673bc7ba44c 100644
--- a/qa/qa/page/component/new_snippet.rb
+++ b/qa/qa/page/component/new_snippet.rb
@@ -32,6 +32,10 @@ module QA
# This 'element' is here only to ensure the changes in the view source aren't mistakenly changed
element :_, "qa_selector = local_assigns.fetch(:qa_selector, '')" # rubocop:disable QA/ElementWithPattern
end
+
+ base.view 'app/assets/javascripts/snippets/components/snippet_visibility_edit.vue' do
+ element :visibility_content
+ end
end
def fill_title(title)
@@ -44,7 +48,7 @@ module QA
end
def set_visibility(visibility)
- choose visibility
+ click_element(:visibility_content, visibility: visibility)
end
def fill_file_name(name, file_number = nil)
diff --git a/qa/qa/page/component/note.rb b/qa/qa/page/component/note.rb
index 50567796bdb..67583f71bf3 100644
--- a/qa/qa/page/component/note.rb
+++ b/qa/qa/page/component/note.rb
@@ -17,7 +17,6 @@ module QA
element :comment_button
element :comment_field
element :discussion_menu_item
- element :note_dropdown
end
base.view 'app/assets/javascripts/notes/components/discussion_actions.vue' do
@@ -146,7 +145,7 @@ module QA
def start_discussion(text)
fill_element :comment_field, text
- click_element :note_dropdown
+ within_element(:comment_button) { click_button(class: 'dropdown-toggle-split') }
click_element :discussion_menu_item
click_element :comment_button
diff --git a/qa/qa/page/component/wiki.rb b/qa/qa/page/component/wiki.rb
new file mode 100644
index 00000000000..92eb25af247
--- /dev/null
+++ b/qa/qa/page/component/wiki.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module Wiki
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/views/shared/wikis/show.html.haml' do
+ element :wiki_page_title
+ element :wiki_page_content
+ element :edit_page_button
+ end
+
+ base.view 'app/views/shared/wikis/_main_links.html.haml' do
+ element :new_page_button
+ element :page_history_button
+ end
+
+ base.view 'app/views/shared/empty_states/_wikis.html.haml' do
+ element :create_first_page_link
+ end
+
+ base.view 'app/views/shared/empty_states/_wikis_layout.html.haml' do
+ element :svg_content
+ end
+ end
+
+ def click_create_your_first_page
+ # The svg takes a fraction of a second to load after which the
+ # "Create your first page" button shifts up a bit. This can cause
+ # webdriver to miss the hit so we wait for the svg to load before
+ # clicking the button.
+ within_element(:svg_content) do
+ has_element?(:js_lazy_loaded)
+ end
+
+ click_element(:create_first_page_link)
+ end
+
+ def click_new_page
+ click_element(:new_page_button)
+ end
+
+ def click_page_history
+ click_element(:page_history_button)
+ end
+
+ def click_edit
+ click_element(:edit_page_button)
+ end
+
+ def has_title?(title)
+ has_element?(:wiki_page_title, title)
+ end
+
+ def has_content?(content)
+ has_element?(:wiki_page_content, content)
+ end
+
+ def has_no_content?(content)
+ has_no_element?(:wiki_page_content, content)
+ end
+
+ def has_no_page?
+ has_element?(:create_first_page_link)
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/wiki_page_form.rb b/qa/qa/page/component/wiki_page_form.rb
new file mode 100644
index 00000000000..e24b1b67af1
--- /dev/null
+++ b/qa/qa/page/component/wiki_page_form.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module WikiPageForm
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/views/shared/wikis/_form.html.haml' do
+ element :wiki_title_textbox
+ element :wiki_content_textarea
+ element :wiki_message_textbox
+ element :save_changes_button
+ element :create_page_button
+ end
+
+ base.view 'app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue' do
+ element :delete_button
+ end
+ end
+
+ def set_title(title)
+ fill_element(:wiki_title_textbox, title)
+ end
+
+ def set_content(content)
+ fill_element(:wiki_content_textarea, content)
+ end
+
+ def set_message(message)
+ fill_element(:wiki_message_textbox, message)
+ end
+
+ def click_save_changes
+ click_element(:save_changes_button)
+ end
+
+ def click_create_page
+ click_element(:create_page_button)
+ end
+
+ def delete_page
+ click_element(:delete_button, Page::Modal::DeleteWiki)
+ Page::Modal::DeleteWiki.perform(&:confirm_deletion)
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/wiki_sidebar.rb b/qa/qa/page/component/wiki_sidebar.rb
new file mode 100644
index 00000000000..dfb912a1d0b
--- /dev/null
+++ b/qa/qa/page/component/wiki_sidebar.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module WikiSidebar
+ extend QA::Page::PageConcern
+
+ def self.included(base)
+ super
+
+ base.view 'app/views/shared/wikis/_sidebar.html.haml' do
+ element :clone_repository_link
+ element :view_all_pages_button
+ end
+
+ base.view 'app/views/shared/wikis/_sidebar_wiki_page.html.haml' do
+ element :wiki_page_link
+ end
+
+ base.view 'app/views/shared/wikis/_wiki_directory.html.haml' do
+ element :wiki_directory_content
+ end
+ end
+
+ def click_clone_repository
+ click_element(:clone_repository_link)
+ end
+
+ def click_view_all_pages
+ click_element(:view_all_pages_button)
+ end
+
+ def click_page_link(page_title)
+ click_element(:wiki_page_link, page_name: page_title)
+ end
+
+ def has_page_listed?(page_title)
+ has_element?(:wiki_page_link, page_name: page_title)
+ end
+
+ def has_directory?(directory)
+ has_element?(:wiki_directory_content, text: directory)
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/dashboard/snippet/edit.rb b/qa/qa/page/dashboard/snippet/edit.rb
index 40add146e97..cd8ac77ae04 100644
--- a/qa/qa/page/dashboard/snippet/edit.rb
+++ b/qa/qa/page/dashboard/snippet/edit.rb
@@ -18,13 +18,17 @@ module QA
element :delete_file_button
end
+ view 'app/assets/javascripts/snippets/components/snippet_visibility_edit.vue' do
+ element :visibility_content
+ end
+
def add_to_file_content(content)
text_area.set content
text_area.has_text?(content) # wait for changes to take effect
end
def change_visibility_to(visibility_type)
- choose(visibility_type)
+ click_element(:visibility_content, visibility: visibility_type)
end
def click_add_file
diff --git a/qa/qa/page/group/members.rb b/qa/qa/page/group/members.rb
index 87423ae9d75..68a169d5a7f 100644
--- a/qa/qa/page/group/members.rb
+++ b/qa/qa/page/group/members.rb
@@ -4,18 +4,13 @@ module QA
module Page
module Group
class Members < Page::Base
- include QA::Page::Component::Select2
+ include Page::Component::InviteMembersModal
include Page::Component::UsersSelect
view 'app/assets/javascripts/vue_shared/components/remove_member_modal.vue' do
element :remove_member_modal_content
end
- view 'app/views/shared/members/_invite_member.html.haml' do
- element :member_select_field
- element :invite_member_button
- end
-
view 'app/assets/javascripts/pages/groups/group_members/index.js' do
element :member_row
element :groups_list
@@ -32,31 +27,9 @@ module QA
end
view 'app/views/groups/group_members/index.html.haml' do
- element :invite_group_tab
element :groups_list_tab
end
- view 'app/views/shared/members/_invite_group.html.haml' do
- element :group_select_field
- element :invite_group_button
- end
-
- def select_group(group_name)
- click_element :group_select_field
- search_and_select(group_name)
- end
-
- def invite_group(group_name)
- click_element :invite_group_tab
- select_group(group_name)
- click_element :invite_group_button
- end
-
- def add_member(username)
- select_user :member_select_field, username
- click_element :invite_member_button
- end
-
def update_access_level(username, access_level)
within_element(:member_row, text: username) do
click_element :access_level_dropdown
diff --git a/qa/qa/page/group/menu.rb b/qa/qa/page/group/menu.rb
index 7689dd7e5c8..10c0ee1f0a9 100644
--- a/qa/qa/page/group/menu.rb
+++ b/qa/qa/page/group/menu.rb
@@ -14,6 +14,10 @@ module QA
element :group_settings_item
end
+ view 'app/views/groups/sidebar/_packages_settings.html.haml' do
+ element :group_package_settings_link
+ end
+
view 'app/views/layouts/nav/sidebar/_analytics_links.html.haml' do
element :analytics_link
element :analytics_sidebar_submenu
@@ -55,6 +59,15 @@ module QA
end
end
+ def go_to_package_settings
+ scroll_to_element(:group_settings_item)
+ hover_element(:group_settings_item) do
+ within_submenu(:group_sidebar_submenu) do
+ click_element(:group_package_settings_link)
+ end
+ end
+ end
+
private
def hover_issues
diff --git a/qa/qa/page/group/settings/general.rb b/qa/qa/page/group/settings/general.rb
index 8f5267c3362..ced8bd5c812 100644
--- a/qa/qa/page/group/settings/general.rb
+++ b/qa/qa/page/group/settings/general.rb
@@ -54,57 +54,57 @@ module QA
end
def set_lfs_enabled
- expand_content :permission_lfs_2fa_content
- check_element :lfs_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ check_element(:lfs_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_lfs_disabled
- expand_content :permission_lfs_2fa_content
- uncheck_element :lfs_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ uncheck_element(:lfs_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_request_access_enabled
- expand_content :permission_lfs_2fa_content
- check_element :request_access_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ check_element(:request_access_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_request_access_disabled
- expand_content :permission_lfs_2fa_content
- uncheck_element :request_access_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ uncheck_element(:request_access_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_require_2fa_enabled
- expand_content :permission_lfs_2fa_content
- check_element :require_2fa_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ check_element(:require_2fa_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_require_2fa_disabled
- expand_content :permission_lfs_2fa_content
- uncheck_element :require_2fa_checkbox
- click_element :save_permissions_changes_button
+ expand_content(:permission_lfs_2fa_content)
+ uncheck_element(:require_2fa_checkbox)
+ click_element(:save_permissions_changes_button)
end
def set_project_creation_level(value)
- expand_content :permission_lfs_2fa_content
+ expand_content(:permission_lfs_2fa_content)
select_element(:project_creation_level_dropdown, value)
- click_element :save_permissions_changes_button
+ click_element(:save_permissions_changes_button)
end
def toggle_request_access
- expand_content :permission_lfs_2fa_content
+ expand_content(:permission_lfs_2fa_content)
if find_element(:request_access_checkbox).checked?
- uncheck_element :request_access_checkbox
+ uncheck_element(:request_access_checkbox)
else
- check_element :request_access_checkbox
+ check_element(:request_access_checkbox)
end
- click_element :save_permissions_changes_button
+ click_element(:save_permissions_changes_button)
end
end
end
diff --git a/qa/qa/page/group/settings/package_registries.rb b/qa/qa/page/group/settings/package_registries.rb
new file mode 100644
index 00000000000..ee5ca849a47
--- /dev/null
+++ b/qa/qa/page/group/settings/package_registries.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Group
+ module Settings
+ class PackageRegistries < QA::Page::Base
+ include ::QA::Page::Settings::Common
+
+ view 'app/assets/javascripts/packages_and_registries/settings/group/components/group_settings_app.vue' do
+ element :package_registry_settings_content
+ end
+
+ view 'app/assets/javascripts/packages_and_registries/settings/group/components/maven_settings.vue' do
+ element :allow_duplicates_toggle
+ element :allow_duplicates_label
+ end
+
+ def set_allow_duplicates_disabled
+ expand_content :package_registry_settings_content do
+ click_element(:allow_duplicates_toggle) if duplicates_enabled?
+ end
+ end
+
+ def set_allow_duplicates_enabled
+ expand_content :package_registry_settings_content do
+ click_element(:allow_duplicates_toggle) if duplicates_disabled?
+ end
+ end
+
+ def duplicates_enabled?
+ has_element?(:allow_duplicates_label, text: 'Allow duplicates')
+ end
+
+ def duplicates_disabled?
+ has_element?(:allow_duplicates_label, text: 'Do not allow duplicates')
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb
index 265e2b7573c..048119d65cb 100644
--- a/qa/qa/page/main/login.rb
+++ b/qa/qa/page/main/login.rb
@@ -52,7 +52,7 @@ module QA
using_wait_time 0 do
set_initial_password_if_present
- raise NotImplementedError if Runtime::User.ldap_user? && user&.credentials_given?
+ raise 'If an LDAP user is provided, it must be used for sign-in', QA::Resource::User::InvalidUserError if Runtime::User.ldap_user? && user && user.username != Runtime::User.ldap_username
if Runtime::User.ldap_user?
sign_in_using_ldap_credentials(user: user || Runtime::User)
diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb
index 18676807fd6..0b6a3085a3a 100644
--- a/qa/qa/page/merge_request/show.rb
+++ b/qa/qa/page/merge_request/show.rb
@@ -9,8 +9,8 @@ module QA
view 'app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue' do
element :download_dropdown
- element :download_email_patches
- element :download_plain_diff
+ element :download_email_patches_menu_item
+ element :download_plain_diff_menu_item
element :open_in_web_ide_button
end
@@ -21,9 +21,13 @@ module QA
view 'app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue' do
element :merge_button
- element :fast_forward_message, 'Fast-forward merge without a merge commit' # rubocop:disable QA/ElementWithPattern
+ element :fast_forward_message_content
element :merge_moment_dropdown
- element :merge_immediately_option
+ element :merge_immediately_menu_item
+ end
+
+ view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue' do
+ element :merge_request_status_content
end
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue' do
@@ -36,7 +40,7 @@ module QA
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue' do
element :mr_rebase_button
- element :no_fast_forward_message, 'Fast-forward merge is not possible' # rubocop:disable QA/ElementWithPattern
+ element :no_fast_forward_message_content
end
view 'app/assets/javascripts/vue_merge_request_widget/components/states/squash_before_merge.vue' do
@@ -64,7 +68,8 @@ module QA
end
view 'app/assets/javascripts/diffs/components/inline_diff_table_row.vue' do
- element :new_diff_line
+ element :diff_comment_button
+ element :new_diff_line_link
end
view 'app/views/projects/merge_requests/_mr_title.html.haml' do
@@ -72,11 +77,11 @@ module QA
end
view 'app/assets/javascripts/batch_comments/components/publish_button.vue' do
- element :submit_review
+ element :submit_review_button
end
view 'app/assets/javascripts/batch_comments/components/review_bar.vue' do
- element :review_bar
+ element :review_bar_content
end
view 'app/assets/javascripts/notes/components/note_form.vue' do
@@ -124,18 +129,18 @@ module QA
end
def submit_pending_reviews
- within_element(:review_bar) do
+ within_element(:review_bar_content) do
click_element(:review_preview_toggle)
- click_element(:submit_review)
+ click_element(:submit_review_button)
# After clicking the button, wait for it to disappear
# before moving on to the next part of the test
- has_no_element?(:submit_review)
+ has_no_element?(:submit_review_button)
end
end
def discard_pending_reviews
- within_element(:review_bar) do
+ within_element(:review_bar_content) do
click_element(:discard_review)
end
click_element(:modal_delete_pending_comments)
@@ -154,8 +159,8 @@ module QA
wait_until(sleep_interval: 5) do
has_css?('a[data-linenumber="1"]')
end
- all_elements(:new_diff_line, minimum: 1).first.hover
- click_element(:diff_comment)
+ all_elements(:new_diff_line_link, minimum: 1).first.hover
+ click_element(:diff_comment_button)
fill_element(:reply_field, text)
end
@@ -179,7 +184,11 @@ module QA
end
def fast_forward_possible?
- has_no_text?('Fast-forward merge is not possible')
+ has_element?(:fast_forward_message_content)
+ end
+
+ def fast_forward_not_possible?
+ has_element?(:no_fast_forward_message_content)
end
def has_file?(file_name)
@@ -220,12 +229,12 @@ module QA
!find_element(:squash_checkbox).disabled?
end
+ # TODO: Fix workaround for data-qa-selector failure
click_element(:squash_checkbox)
end
def merge!
- wait_until_ready_to_merge
- click_element(:merge_button)
+ try_to_merge!
finished_loading?
raise "Merge did not appear to be successful" unless merged?
@@ -233,11 +242,21 @@ module QA
def merge_immediately!
click_element(:merge_moment_dropdown)
- click_element(:merge_immediately_option)
+ click_element(:merge_immediately_menu_item)
+ end
+
+ def merge_when_pipeline_succeeds!
+ wait_until_ready_to_merge
+
+ click_element(:merge_button, text: 'Merge when pipeline succeeds')
end
def merged?
- has_element?(:merged_status_content, text: 'The changes were merged into', wait: 60)
+ # Revisit after merge page re-architect is done https://gitlab.com/gitlab-org/gitlab/-/issues/300042
+ # To remove page refresh logic if possible
+ retry_until(max_attempts: 3, reload: true) do
+ has_element?(:merged_status_content, text: 'The changes were merged into', wait: 20)
+ end
end
# Check if the MR is able to be merged
@@ -249,6 +268,10 @@ module QA
has_element?(:merge_button, disabled: false)
end
+ def merge_request_status
+ find_element(:merge_request_status_content).text
+ end
+
# Waits up 60 seconds and raises an error if unable to merge
def wait_until_ready_to_merge
has_element?(:merge_button)
@@ -273,26 +296,29 @@ module QA
click_element(:mr_rebase_button)
success = wait_until do
- has_text?('Fast-forward merge without a merge commit')
+ fast_forward_possible?
end
raise "Rebase did not appear to be successful" unless success
end
def try_to_merge!
+ # Revisit after merge page re-architect is done https://gitlab.com/gitlab-org/gitlab/-/issues/300042
+ # To remove page refresh logic if possible
wait_until_ready_to_merge
+ wait_until { !find_element(:merge_button).has_text?("when pipeline succeeds") }
click_element(:merge_button)
end
def view_email_patches
click_element(:download_dropdown)
- visit_link_in_element(:download_email_patches)
+ visit_link_in_element(:download_email_patches_menu_item)
end
def view_plain_diff
click_element(:download_dropdown)
- visit_link_in_element(:download_plain_diff)
+ visit_link_in_element(:download_plain_diff_menu_item)
end
def wait_for_merge_request_error_message
@@ -315,7 +341,7 @@ module QA
def add_suggestion_to_diff(suggestion, line)
find("a[data-linenumber='#{line}']").hover
- click_element(:diff_comment)
+ click_element(:diff_comment_button)
click_element(:suggestion_button)
initial_content = find_element(:reply_field).value
fill_element(:reply_field, '')
diff --git a/qa/qa/page/project/import/github.rb b/qa/qa/page/project/import/github.rb
index 6890c7de9f8..58c82fa14c1 100644
--- a/qa/qa/page/project/import/github.rb
+++ b/qa/qa/page/project/import/github.rb
@@ -17,28 +17,34 @@ module QA
element :project_namespace_select
element :project_path_field
element :import_button
+ element :project_path_content
+ element :go_to_project_button
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
+ return unless has_element?(:personal_access_token_field)
+
fill_element(:personal_access_token_field, personal_access_token)
click_element(:authenticate_button)
finished_loading?
end
def import!(full_path, name)
- choose_test_namespace(full_path)
- set_path(full_path, name)
- import_project(full_path)
- wait_for_success
+ unless already_imported(full_path)
+ choose_test_namespace(full_path)
+ set_path(full_path, name)
+ import_project(full_path)
+ wait_for_success
+ end
+
+ go_to_project(name)
end
private
def within_repo_path(full_path)
- wait_until(reload: false) do
- has_element?(:project_import_row, text: full_path)
- end
-
project_import_row = find_element(:project_import_row, text: full_path)
within(project_import_row) do
@@ -68,9 +74,22 @@ module QA
def wait_for_success
# TODO: set reload:false and remove skip_finished_loading_check_on_refresh when
- # https://gitlab.com/gitlab-org/gitlab/-/issues/231542 is fixed
+ # https://gitlab.com/gitlab-org/gitlab/-/issues/292861 is fixed
wait_until(max_duration: 60, sleep_interval: 5.0, reload: true, skip_finished_loading_check_on_refresh: true) do
- page.has_content?('Done', wait: 1.0)
+ page.has_no_content?('Importing 1 repository', 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
+
+ def already_imported(full_path)
+ within_repo_path(full_path) do
+ has_element?(:project_path_content) && has_element?(:go_to_project_button)
end
end
end
diff --git a/qa/qa/page/project/issue/index.rb b/qa/qa/page/project/issue/index.rb
index e85d10e4eb8..10ddd52719a 100644
--- a/qa/qa/page/project/issue/index.rb
+++ b/qa/qa/page/project/issue/index.rb
@@ -15,18 +15,14 @@ module QA
element :avatar_counter_content
end
- view 'app/views/shared/issuable/csv_export/_button.html.haml' do
- element :export_as_csv_button
- end
-
- view 'app/views/shared/issuable/csv_export/_modal.html.haml' do
- element :export_issues_button
+ view 'app/assets/javascripts/issuable/components/csv_export_modal.vue' do
element :export_issuable_modal
end
- view 'app/views/projects/issues/import_csv/_button.html.haml' do
- element :import_issues_button
+ view 'app/assets/javascripts/issuable/components/csv_import_export_buttons.vue' do
+ element :export_as_csv_button
element :import_from_jira_link
+ element :import_issues_dropdown
end
view 'app/views/shared/issuable/_nav.html.haml' do
@@ -60,7 +56,7 @@ module QA
def click_import_issues_dropdown
# When there are no issues, the image that loads causes the buttons to jump
has_loaded_all_images?
- click_element(:import_issues_button)
+ click_element(:import_issues_dropdown)
end
def export_issues_modal
diff --git a/qa/qa/page/project/members.rb b/qa/qa/page/project/members.rb
index 7e722e02ad0..09264d95aed 100644
--- a/qa/qa/page/project/members.rb
+++ b/qa/qa/page/project/members.rb
@@ -4,21 +4,18 @@ module QA
module Page
module Project
class Members < Page::Base
- include QA::Page::Component::Select2
-
- view 'app/views/shared/members/_invite_member.html.haml' do
- element :member_select_field
- element :invite_member_button
- end
+ include QA::Page::Component::InviteMembersModal
view 'app/views/projects/project_members/index.html.haml' do
- element :invite_group_tab
element :groups_list_tab
end
- view 'app/views/shared/members/_invite_group.html.haml' do
- element :group_select_field
- element :invite_group_button
+ view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do
+ element :invite_a_group_button
+ end
+
+ view 'app/assets/javascripts/invite_members/components/invite_members_trigger.vue' do
+ element :invite_members_button
end
view 'app/assets/javascripts/pages/projects/project_members/index.js' do
@@ -33,25 +30,7 @@ module QA
element :remove_group_link_modal_content
end
- def select_group(group_name)
- click_element :group_select_field
- search_and_select(group_name)
- end
-
- def invite_group(group_name)
- click_element :invite_group_tab
- select_group(group_name)
- click_element :invite_group_button
- end
-
- def add_member(username)
- click_element :member_select_field
- search_and_select username
- click_element :invite_member_button
- end
-
def remove_group(group_name)
- click_element :invite_group_tab
click_element :groups_list_tab
within_element(:group_row, text: group_name) do
diff --git a/qa/qa/page/project/new.rb b/qa/qa/page/project/new.rb
index 7e296528795..d1033dbfca9 100644
--- a/qa/qa/page/project/new.rb
+++ b/qa/qa/page/project/new.rb
@@ -68,7 +68,7 @@ module QA
end
def enable_initialize_with_readme
- check_element :initialize_with_readme_checkbox
+ check_element(:initialize_with_readme_checkbox)
end
end
end
diff --git a/qa/qa/page/project/operations/kubernetes/add_existing.rb b/qa/qa/page/project/operations/kubernetes/add_existing.rb
index 1b9a451c47d..59f59ca9966 100644
--- a/qa/qa/page/project/operations/kubernetes/add_existing.rb
+++ b/qa/qa/page/project/operations/kubernetes/add_existing.rb
@@ -36,7 +36,7 @@ module QA
end
def uncheck_rbac!
- uncheck_element :rbac_checkbox
+ uncheck_element(:rbac_checkbox)
end
end
end
diff --git a/qa/qa/page/project/operations/kubernetes/index.rb b/qa/qa/page/project/operations/kubernetes/index.rb
index 114e3ddd46a..ca41dddaca2 100644
--- a/qa/qa/page/project/operations/kubernetes/index.rb
+++ b/qa/qa/page/project/operations/kubernetes/index.rb
@@ -7,11 +7,11 @@ module QA
module Kubernetes
class Index < Page::Base
view 'app/views/clusters/clusters/_empty_state.html.haml' do
- element :add_kubernetes_cluster_button, "link_to s_('ClusterIntegration|Integrate with a cluster certificate')" # rubocop:disable QA/ElementWithPattern
+ element :add_kubernetes_cluster_link
end
def add_kubernetes_cluster
- click_on 'Connect cluster with certificate'
+ click_element :add_kubernetes_cluster_link
end
def has_cluster?(cluster)
diff --git a/qa/qa/page/project/registry/show.rb b/qa/qa/page/project/registry/show.rb
new file mode 100644
index 00000000000..dffdb9eebba
--- /dev/null
+++ b/qa/qa/page/project/registry/show.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Project
+ module Registry
+ class Show < QA::Page::Base
+ view 'app/assets/javascripts/registry/explorer/components/list_page/image_list_row.vue' do
+ element :registry_image_content
+ end
+
+ view 'app/assets/javascripts/registry/explorer/components/details_page/tags_list_row.vue' do
+ element :tag_delete_button
+ end
+
+ def has_registry_repository?(name)
+ find_element(:registry_image_content, text: name)
+ end
+
+ def click_on_image(name)
+ click_element(:registry_image_content, text: name)
+ end
+
+ def has_tag?(tag_name)
+ has_button?(tag_name)
+ end
+
+ def has_no_tag?(tag_name)
+ has_no_button?(tag_name)
+ end
+
+ def click_delete
+ click_element(:tag_delete_button)
+ find_button('Confirm').click
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/project/settings/auto_devops.rb b/qa/qa/page/project/settings/auto_devops.rb
index 827d5b072c3..9dffa010805 100644
--- a/qa/qa/page/project/settings/auto_devops.rb
+++ b/qa/qa/page/project/settings/auto_devops.rb
@@ -11,8 +11,8 @@ module QA
end
def enable_autodevops
- check_element :enable_autodevops_checkbox
- click_element :save_changes_button
+ check_element(:enable_autodevops_checkbox)
+ click_element(:save_changes_button)
end
end
end
diff --git a/qa/qa/page/project/settings/ci_variables.rb b/qa/qa/page/project/settings/ci_variables.rb
index f2ced668a60..2b8fad64afb 100644
--- a/qa/qa/page/project/settings/ci_variables.rb
+++ b/qa/qa/page/project/settings/ci_variables.rb
@@ -10,7 +10,6 @@ module QA
view 'app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue' do
element :ci_variable_key_field
element :ci_variable_value_field
- element :ci_variable_masked_checkbox
element :ci_variable_save_button
element :ci_variable_delete_button
end
diff --git a/qa/qa/page/project/settings/incidents.rb b/qa/qa/page/project/settings/incidents.rb
index 9b523e2aa9e..610129851d9 100644
--- a/qa/qa/page/project/settings/incidents.rb
+++ b/qa/qa/page/project/settings/incidents.rb
@@ -13,7 +13,7 @@ module QA
end
def enable_issues_for_incidents
- check_element :create_issue_checkbox
+ check_element(:create_issue_checkbox)
end
def select_issue_template(template)
diff --git a/qa/qa/page/project/settings/main.rb b/qa/qa/page/project/settings/main.rb
index 4db66543a25..48af635bb79 100644
--- a/qa/qa/page/project/settings/main.rb
+++ b/qa/qa/page/project/settings/main.rb
@@ -11,8 +11,9 @@ module QA
include Component::Breadcrumbs
view 'app/views/projects/edit.html.haml' do
- element :advanced_settings
- element :merge_request_settings
+ element :advanced_settings_content
+ element :merge_request_settings_content
+ element :visibility_features_permissions_content
end
view 'app/views/projects/settings/_general.html.haml' do
@@ -20,10 +21,6 @@ module QA
element :save_naming_topics_avatar_button
end
- view 'app/views/projects/edit.html.haml' do
- element :visibility_features_permissions_content
- end
-
def rename_project_to(name)
fill_project_name(name)
click_save_changes
@@ -38,13 +35,13 @@ module QA
end
def expand_advanced_settings(&block)
- expand_content(:advanced_settings) do
+ expand_content(:advanced_settings_content) do
Advanced.perform(&block)
end
end
def expand_merge_requests_settings(&block)
- expand_content(:merge_request_settings) do
+ expand_content(:merge_request_settings_content) do
MergeRequest.perform(&block)
end
end
diff --git a/qa/qa/page/project/settings/merge_request.rb b/qa/qa/page/project/settings/merge_request.rb
index ec8d73df1b3..fe5d629effe 100644
--- a/qa/qa/page/project/settings/merge_request.rb
+++ b/qa/qa/page/project/settings/merge_request.rb
@@ -8,11 +8,11 @@ module QA
include QA::Page::Settings::Common
view 'app/views/projects/edit.html.haml' do
- element :save_merge_request_changes
+ element :save_merge_request_changes_button
end
view 'app/views/projects/_merge_request_merge_method_settings.html.haml' do
- element :radio_button_merge_ff
+ element :merge_ff_radio_button
end
view 'app/views/projects/_merge_request_merge_checks_settings.html.haml' do
@@ -20,16 +20,16 @@ module QA
end
def click_save_changes
- click_element :save_merge_request_changes
+ click_element :save_merge_request_changes_button
end
def enable_ff_only
- click_element :radio_button_merge_ff
+ click_element :merge_ff_radio_button
click_save_changes
end
def enable_merge_if_all_disscussions_are_resolved
- click_element :allow_merge_if_all_discussions_are_resolved_checkbox
+ check_element(:allow_merge_if_all_discussions_are_resolved_checkbox)
click_save_changes
end
end
diff --git a/qa/qa/page/project/sub_menus/packages.rb b/qa/qa/page/project/sub_menus/packages.rb
index 9ea045a99f5..46eae01e10d 100644
--- a/qa/qa/page/project/sub_menus/packages.rb
+++ b/qa/qa/page/project/sub_menus/packages.rb
@@ -22,6 +22,25 @@ module QA
click_element :packages_link
end
end
+
+ def go_to_container_registry
+ hover_registry do
+ within_submenu do
+ click_link('Container Registry')
+ end
+ end
+ end
+
+ private
+
+ def hover_registry
+ within_sidebar do
+ scroll_to_element(:packages_link)
+ find_element(:packages_link).hover
+
+ yield
+ end
+ end
end
end
end
diff --git a/qa/qa/page/project/sub_menus/settings.rb b/qa/qa/page/project/sub_menus/settings.rb
index 47274c8db54..b5058bacccd 100644
--- a/qa/qa/page/project/sub_menus/settings.rb
+++ b/qa/qa/page/project/sub_menus/settings.rb
@@ -25,7 +25,7 @@ module QA
def go_to_ci_cd_settings
hover_settings do
within_submenu do
- click_link('CI / CD')
+ click_link('CI/CD')
end
end
end
diff --git a/qa/qa/page/project/web_ide/edit.rb b/qa/qa/page/project/web_ide/edit.rb
index 45c46004790..fd68ac0de16 100644
--- a/qa/qa/page/project/web_ide/edit.rb
+++ b/qa/qa/page/project/web_ide/edit.rb
@@ -44,10 +44,6 @@ module QA
element :commit_button
end
- view 'app/assets/javascripts/ide/components/commit_sidebar/new_merge_request_option.vue' do
- element :start_new_mr_checkbox
- end
-
view 'app/assets/javascripts/ide/components/repo_editor.vue' do
element :editor_container
end
diff --git a/qa/qa/page/project/wiki/edit.rb b/qa/qa/page/project/wiki/edit.rb
index 6f3be904eb3..70aa10cc43e 100644
--- a/qa/qa/page/project/wiki/edit.rb
+++ b/qa/qa/page/project/wiki/edit.rb
@@ -5,44 +5,8 @@ module QA
module Project
module Wiki
class Edit < Base
- include Wiki::Sidebar
-
- view 'app/views/shared/wikis/_form.html.haml' do
- element :wiki_title_textbox
- element :wiki_content_textarea
- element :wiki_message_textbox
- element :save_changes_button
- element :create_page_button
- end
-
- view 'app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue' do
- element :delete_button
- end
-
- def set_title(title)
- fill_element :wiki_title_textbox, title
- end
-
- def set_content(content)
- fill_element :wiki_content_textarea, content
- end
-
- def set_message(message)
- fill_element :wiki_message_textbox, message
- end
-
- def click_save_changes
- click_element :save_changes_button
- end
-
- def click_create_page
- click_element :create_page_button
- end
-
- def delete_page
- click_element :delete_button, Page::Modal::DeleteWiki
- Page::Modal::DeleteWiki.perform(&:confirm_deletion)
- end
+ include Page::Component::WikiPageForm
+ include Page::Component::WikiSidebar
end
end
end
diff --git a/qa/qa/page/project/wiki/show.rb b/qa/qa/page/project/wiki/show.rb
index d9e0783a581..f3573e3cdd3 100644
--- a/qa/qa/page/project/wiki/show.rb
+++ b/qa/qa/page/project/wiki/show.rb
@@ -5,67 +5,9 @@ module QA
module Project
module Wiki
class Show < Base
- include Wiki::Sidebar
- include Component::LazyLoader
-
- view 'app/views/shared/wikis/show.html.haml' do
- element :wiki_page_title
- element :wiki_page_content
- element :edit_page_button
- end
-
- view 'app/views/shared/wikis/_main_links.html.haml' do
- element :new_page_button
- element :page_history_button
- end
-
- view 'app/views/shared/empty_states/_wikis.html.haml' do
- element :create_first_page_link
- end
-
- view 'app/views/shared/empty_states/_wikis_layout.html.haml' do
- element :svg_content
- end
-
- def click_create_your_first_page
- # The svg takes a fraction of a second to load after which the
- # "Create your first page" button shifts up a bit. This can cause
- # webdriver to miss the hit so we wait for the svg to load before
- # clicking the button.
- within_element(:svg_content) do
- has_element? :js_lazy_loaded
- end
-
- click_element :create_first_page_link
- end
-
- def click_new_page
- click_element(:new_page_button)
- end
-
- def click_page_history
- click_element(:page_history_button)
- end
-
- def click_edit
- click_element(:edit_page_button)
- end
-
- def has_title?(title)
- has_element?(:wiki_page_title, title)
- end
-
- def has_content?(content)
- has_element?(:wiki_page_content, content)
- end
-
- def has_no_content?(content)
- has_no_element?(:wiki_page_content, content)
- end
-
- def has_no_page?
- has_element? :create_first_page_link
- end
+ include Page::Component::Wiki
+ include Page::Component::WikiSidebar
+ include Page::Component::LazyLoader
end
end
end
diff --git a/qa/qa/page/project/wiki/sidebar.rb b/qa/qa/page/project/wiki/sidebar.rb
deleted file mode 100644
index 3e1edcbbefb..00000000000
--- a/qa/qa/page/project/wiki/sidebar.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Page
- module Project
- module Wiki
- module Sidebar
- extend QA::Page::PageConcern
-
- def self.included(base)
- super
-
- base.view 'app/views/shared/wikis/_sidebar.html.haml' do
- element :clone_repository_link
- element :view_all_pages_button
- end
-
- base.view 'app/views/shared/wikis/_sidebar_wiki_page.html.haml' do
- element :wiki_page_link
- end
-
- base.view 'app/views/shared/wikis/_wiki_directory.html.haml' do
- element :wiki_directory_content
- end
- end
-
- def click_clone_repository
- click_element(:clone_repository_link)
- end
-
- def click_view_all_pages
- click_element(:view_all_pages_button)
- end
-
- def click_page_link(page_title)
- click_element :wiki_page_link, page_name: page_title
- end
-
- def has_page_listed?(page_title)
- has_element? :wiki_page_link, page_name: page_title
- end
-
- def has_directory?(directory)
- has_element? :wiki_directory_content, text: directory
- end
- end
- end
- end
- end
-end