diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-12-22 13:01:12 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-12-22 13:01:12 +0100 |
commit | 856917520de2b1b254400b4501b4b98991280736 (patch) | |
tree | 991706d7ea813730026f74f469ed2be26eebad3e /qa/qa/page/element.rb | |
parent | 208411ee6242931670bdef5a8c92d34dee18498e (diff) | |
download | gitlab-ce-856917520de2b1b254400b4501b4b98991280736.tar.gz |
Add domain specific language to define QA page elements
Diffstat (limited to 'qa/qa/page/element.rb')
-rw-r--r-- | qa/qa/page/element.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/qa/qa/page/element.rb b/qa/qa/page/element.rb index c634e834c96..e8e537070cb 100644 --- a/qa/qa/page/element.rb +++ b/qa/qa/page/element.rb @@ -1,6 +1,32 @@ module QA module Page class Element + attr_reader :name + + def initialize(name, pattern) + @name = name + @pattern = pattern + end + + def self.evaluate(&block) + Page::Element::DSL.new.tap do |evaluator| + evaluator.instance_exec(&block) + + return evaluator.elements + end + end + + class DSL + attr_reader :elements + + def initialize + @elements = [] + end + + def element(name, pattern) + @elements.push(Page::Element.new(name, pattern)) + end + end end end end |