summaryrefslogtreecommitdiff
path: root/qa/qa/page/base.rb
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-12-07 13:40:25 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-12-07 13:40:25 +0100
commitfc00d739fcf86b5dbd22cf0eb3c57072ea5b439f (patch)
tree4b4b52c67dd8a04ed9e725c105d65c263a9d7115 /qa/qa/page/base.rb
parent4c37cf684d75297a88db2dd1c286a68fd8aec701 (diff)
parentfe62860e05ca6e3ef7125fe92fdf52cd6f7b63df (diff)
downloadgitlab-ce-fc00d739fcf86b5dbd22cf0eb3c57072ea5b439f.tar.gz
Merge branch 'master' into qa/gb/selenium-handle-domain-sessions
* master: (694 commits) Conflicts: qa/qa/page/base.rb qa/qa/page/main/entry.rb
Diffstat (limited to 'qa/qa/page/base.rb')
-rw-r--r--qa/qa/page/base.rb19
1 files changed, 17 insertions, 2 deletions
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index 69f14386223..1d4a5c54969 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -1,3 +1,5 @@
+require 'capybara/dsl'
+
module QA
module Page
class Base
@@ -9,8 +11,6 @@ module QA
end
def wait(css = '.application', time: 60)
- # This resolves cold boot / background tasks problems
- #
Time.now.tap do |start|
while Time.now - start < time
break if page.has_css?(css, wait: 5)
@@ -25,6 +25,21 @@ module QA
def self.address
raise NotImplementedError
end
+
+ def scroll_to(selector, text: nil)
+ page.execute_script <<~JS
+ var elements = Array.from(document.querySelectorAll('#{selector}'));
+ var text = '#{text}';
+
+ if (text.length > 0) {
+ elements.find(e => e.textContent === text).scrollIntoView();
+ } else {
+ elements[0].scrollIntoView();
+ }
+ JS
+
+ page.within(selector) { yield } if block_given?
+ end
end
end
end