summaryrefslogtreecommitdiff
path: root/qa/qa/page/base.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /qa/qa/page/base.rb
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
downloadgitlab-ce-4555e1b21c365ed8303ffb7a3325d773c9b8bf31.tar.gz
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'qa/qa/page/base.rb')
-rw-r--r--qa/qa/page/base.rb41
1 files changed, 23 insertions, 18 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index 289094268b6..66040bb9849 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -132,16 +132,16 @@ module QA
all(element_selector_css(name), **kwargs)
end
- def check_element(name, click_by_js = false)
- if find_element(name, visible: false).checked?
+ def check_element(name, click_by_js = false, visibility = false)
+ if find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug("#{name} is already checked")
return
end
retry_until(sleep_interval: 1) do
- click_checkbox_or_radio(name, click_by_js)
- checked = find_element(name, visible: false).checked?
+ click_checkbox_or_radio(name, click_by_js, visibility)
+ checked = find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug(checked ? "#{name} was checked" : "#{name} was not checked")
@@ -149,16 +149,16 @@ module QA
end
end
- def uncheck_element(name, click_by_js = false)
- unless find_element(name, visible: false).checked?
+ def uncheck_element(name, click_by_js = false, visibility = false)
+ unless find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug("#{name} is already unchecked")
return
end
retry_until(sleep_interval: 1) do
- click_checkbox_or_radio(name, click_by_js)
- unchecked = !find_element(name, visible: false).checked?
+ click_checkbox_or_radio(name, click_by_js, visibility)
+ unchecked = !find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug(unchecked ? "#{name} was unchecked" : "#{name} was not unchecked")
@@ -167,21 +167,22 @@ module QA
end
# Method for selecting radios
- def choose_element(name, click_by_js = false)
- if find_element(name, visible: false).checked?
+ def choose_element(name, click_by_js = false, visibility = false)
+ if find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug("#{name} is already selected")
return
end
retry_until(sleep_interval: 1) do
- click_checkbox_or_radio(name, click_by_js)
- selected = find_element(name, visible: false).checked?
+ click_checkbox_or_radio(name, click_by_js, visibility)
+ selected = find_element(name, visible: visibility).checked?
QA::Runtime::Logger.debug(selected ? "#{name} was selected" : "#{name} was not selected")
selected
end
+ wait_for_requests
end
# Use this to simulate moving the pointer to an element's coordinate
@@ -226,10 +227,12 @@ module QA
wait = kwargs.delete(:wait) || Capybara.default_max_wait_time
text = kwargs.delete(:text)
klass = kwargs.delete(:class)
+ visible = kwargs.delete(:visible)
+ visible = visible.nil? && true
try_find_element = ->(wait) do
if disabled.nil?
- has_css?(element_selector_css(name, kwargs), text: text, wait: wait, class: klass)
+ has_css?(element_selector_css(name, kwargs), text: text, wait: wait, class: klass, visible: visible)
else
find_element(name, original_kwargs).disabled? == disabled
end
@@ -337,8 +340,10 @@ module QA
end
end
- def scroll_to_element(name, *args)
- scroll_to(element_selector_css(name), *args)
+ def scroll_to_element(name, *kwargs)
+ text = kwargs.delete(:text)
+
+ scroll_to(element_selector_css(name, kwargs), text: text)
end
def element_selector_css(name, *attributes)
@@ -399,7 +404,7 @@ module QA
end
def visible?
- raise NoRequiredElementsError.new(self.class) if self.class.required_elements.empty?
+ raise NoRequiredElementsError, self.class if self.class.required_elements.empty?
self.class.required_elements.each do |required_element|
return false if has_no_element? required_element
@@ -424,8 +429,8 @@ module QA
private
- def click_checkbox_or_radio(name, click_by_js)
- box = find_element(name, visible: false)
+ def click_checkbox_or_radio(name, click_by_js, visibility)
+ box = find_element(name, visible: visibility)
# Some checkboxes and radio buttons are hidden by their labels and cannot be clicked directly
click_by_js ? page.execute_script("arguments[0].click();", box) : box.click
end