Commit 3420cef1 authored by Sanad Liaquat's avatar Sanad Liaquat

Merge branch 'qa-shl-replace-click-body' into 'master'

Replace click_body with native mouse pointer move and click events

See merge request gitlab-org/gitlab!39816
parents 63c36995 95bbe9e5
- return unless can?(current_user, :archive_project, @project) - return unless can?(current_user, :archive_project, @project)
.sub-section .sub-section{ data: { qa_selector: 'archive_project_content' } }
%h4.warning-title %h4.warning-title
- if @project.archived? - if @project.archived?
= _('Unarchive project') = _('Unarchive project')
......
...@@ -44,10 +44,6 @@ module QA ...@@ -44,10 +44,6 @@ module QA
wait_for_requests wait_for_requests
end end
def click_body
page.find("body").click
end
def wait_until(max_duration: 60, sleep_interval: 0.1, reload: true, raise_on_failure: true) def wait_until(max_duration: 60, sleep_interval: 0.1, reload: true, raise_on_failure: true)
Support::Waiter.wait_until(max_duration: max_duration, sleep_interval: sleep_interval, raise_on_failure: raise_on_failure) do Support::Waiter.wait_until(max_duration: max_duration, sleep_interval: sleep_interval, raise_on_failure: raise_on_failure) do
yield || (reload && refresh && false) yield || (reload && refresh && false)
...@@ -145,6 +141,15 @@ module QA ...@@ -145,6 +141,15 @@ module QA
end end
end end
# Use this to simulate moving the pointer to an element's coordinate
# and sending a click event.
# This is a helpful workaround when there is a transparent element overlapping
# the target element and so, normal `click_element` on target would raise
# Selenium::WebDriver::Error::ElementClickInterceptedError
def click_element_coordinates(name)
page.driver.browser.action.move_to(find_element(name).native).click.perform
end
# replace with (..., page = self.class) # replace with (..., page = self.class)
def click_element(name, page = nil, **kwargs) def click_element(name, page = nil, **kwargs)
wait_for_requests wait_for_requests
......
...@@ -17,6 +17,7 @@ module QA ...@@ -17,6 +17,7 @@ module QA
view 'app/views/projects/settings/_archive.html.haml' do view 'app/views/projects/settings/_archive.html.haml' do
element :archive_project_link element :archive_project_link
element :unarchive_project_link element :unarchive_project_link
element :archive_project_content
end end
view 'app/views/projects/_export.html.haml' do view 'app/views/projects/_export.html.haml' do
...@@ -45,7 +46,7 @@ module QA ...@@ -45,7 +46,7 @@ module QA
# Retry added here due to seldom seen inconsistent UI state issue: # Retry added here due to seldom seen inconsistent UI state issue:
# https://gitlab.com/gitlab-org/gitlab/-/issues/231242 # https://gitlab.com/gitlab-org/gitlab/-/issues/231242
retry_on_exception do retry_on_exception do
click_body click_element_coordinates(:archive_project_content)
expand_select_list expand_select_list
# Workaround for a failure to search when there are no spaces around the / # Workaround for a failure to search when there are no spaces around the /
# https://gitlab.com/gitlab-org/gitlab/-/issues/218965 # https://gitlab.com/gitlab-org/gitlab/-/issues/218965
......
...@@ -64,6 +64,12 @@ module QA ...@@ -64,6 +64,12 @@ module QA
super super
end end
def click_element_coordinates(name)
log(%Q(clicking the coordinates of :#{name}))
super
end
def click_element(name, page = nil, **kwargs) def click_element(name, page = nil, **kwargs)
msg = ["clicking :#{name}"] msg = ["clicking :#{name}"]
msg << ", expecting to be at #{page.class}" if page msg << ", expecting to be at #{page.class}" if page
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment