diff options
author | ddavison <ddavison@gitlab.com> | 2019-03-01 18:03:43 -0800 |
---|---|---|
committer | ddavison <ddavison@gitlab.com> | 2019-05-20 12:35:51 -0700 |
commit | 7d5b68d837545909204e6caf2352f34ac2f1ba7a (patch) | |
tree | 2c646c34cfdb635ff671647562a480af247f5bbb /qa/qa/page/validatable.rb | |
parent | 4063b7e811050c0870d782072664673e16eafdfe (diff) | |
download | gitlab-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.rb | 22 |
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 |