summaryrefslogtreecommitdiff
path: root/qa/qa/page/validatable.rb
diff options
context:
space:
mode:
authorddavison <ddavison@gitlab.com>2019-03-01 18:03:43 -0800
committerddavison <ddavison@gitlab.com>2019-05-20 12:35:51 -0700
commit7d5b68d837545909204e6caf2352f34ac2f1ba7a (patch)
tree2c646c34cfdb635ff671647562a480af247f5bbb /qa/qa/page/validatable.rb
parent4063b7e811050c0870d782072664673e16eafdfe (diff)
downloadgitlab-ce-7d5b68d837545909204e6caf2352f34ac2f1ba7a.tar.gz
Implement dynamic validation on QA Pages
Elements now have the ability to be required on pages or not Currently using the default wait mechanism Altered the ElementWithPattern Cop to fit new splat for init
Diffstat (limited to 'qa/qa/page/validatable.rb')
-rw-r--r--qa/qa/page/validatable.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/qa/qa/page/validatable.rb b/qa/qa/page/validatable.rb
new file mode 100644
index 00000000000..7cc7f1a128e
--- /dev/null
+++ b/qa/qa/page/validatable.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Validatable
+ PageValidationError = Class.new(StandardError)
+
+ def validate_elements_present!
+ base_page = self.new
+
+ elements.each do |element|
+ next unless element.required?
+
+ # TODO: this wait needs to be replaced by the wait class
+ unless base_page.has_element?(element.name, wait: 10)
+ raise Validatable::PageValidationError, "#{element.name} did not appear on #{self.name} as expected"
+ end
+ end
+ end
+ end
+ end
+end