Class: TestCentricity::PageSection
- Includes:
- Capybara::DSL, Capybara::Node::Matchers, RSpec::Matchers, Test::Unit::Assertions
- Defined in:
- lib/testcentricity_web/page_sections_helper.rb
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
-
#locator ⇒ Object
readonly
Returns the value of attribute locator.
-
#parent ⇒ Object
Returns the value of attribute parent.
Class Method Summary collapse
- .button(element_name, locator) ⇒ Object
- .checkbox(element_name, locator) ⇒ Object
- .element(element_name, locator) ⇒ Object
- .image(element_name, locator) ⇒ Object
- .label(element_name, locator) ⇒ Object
- .link(element_name, locator) ⇒ Object
- .section(section_name, class_name, locator = nil) ⇒ Object
- .selectlist(element_name, locator) ⇒ Object
- .table(element_name, locator) ⇒ Object
- .textfield(element_name, locator) ⇒ Object
- .trait(trait_name, &block) ⇒ Object
Instance Method Summary collapse
- #exists? ⇒ Boolean
- #get_locator ⇒ Object
- #hidden? ⇒ Boolean
-
#initialize(parent, locator, context) ⇒ PageSection
constructor
A new instance of PageSection.
- #set_parent(parent) ⇒ Object
- #verify_ui_states(ui_states) ⇒ Object
- #visible? ⇒ Boolean
- #wait_until_exists(seconds) ⇒ Object
- #wait_until_gone(seconds) ⇒ Object
Constructor Details
#initialize(parent, locator, context) ⇒ PageSection
Returns a new instance of PageSection.
13 14 15 16 17 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 13 def initialize(parent, locator, context) @parent = parent @locator = locator @context = context end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
10 11 12 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 10 def context @context end |
#locator ⇒ Object (readonly)
Returns the value of attribute locator.
10 11 12 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 10 def locator @locator end |
#parent ⇒ Object
Returns the value of attribute parent.
11 12 13 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 11 def parent @parent end |
Class Method Details
.button(element_name, locator) ⇒ Object
27 28 29 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 27 def self.(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :button);end)) end |
.checkbox(element_name, locator) ⇒ Object
35 36 37 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 35 def self.checkbox(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :checkbox);end)) end |
.element(element_name, locator) ⇒ Object
23 24 25 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 23 def self.element(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, nil);end)) end |
.image(element_name, locator) ⇒ Object
55 56 57 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 55 def self.image(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :image);end)) end |
.label(element_name, locator) ⇒ Object
39 40 41 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 39 def self.label(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :label);end)) end |
.link(element_name, locator) ⇒ Object
43 44 45 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 43 def self.link(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :link);end)) end |
.section(section_name, class_name, locator = nil) ⇒ Object
59 60 61 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 59 def self.section(section_name, class_name, locator = nil) class_eval(%Q(def #{section_name.to_s};@#{section_name.to_s} ||= #{class_name.to_s}.new(self, "#{locator}", :section);end)) end |
.selectlist(element_name, locator) ⇒ Object
51 52 53 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 51 def self.selectlist(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :selectlist);end)) end |
.table(element_name, locator) ⇒ Object
47 48 49 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 47 def self.table(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :table);end)) end |
.textfield(element_name, locator) ⇒ Object
31 32 33 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 31 def self.textfield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :textfield);end)) end |
.trait(trait_name, &block) ⇒ Object
19 20 21 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 19 def self.trait(trait_name, &block) define_method(trait_name.to_s, &block) end |
Instance Method Details
#exists? ⇒ Boolean
72 73 74 75 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 72 def exists? section, _ = find_section section != nil end |
#get_locator ⇒ Object
63 64 65 66 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 63 def get_locator (@locator.empty? && defined?(section_locator)) ? locator = section_locator : locator = @locator (@context == :section && !@parent.nil? && !@parent.get_locator.nil?) ? "#{@parent.get_locator}#{locator}" : locator end |
#hidden? ⇒ Boolean
97 98 99 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 97 def hidden? not visible? end |
#set_parent(parent) ⇒ Object
68 69 70 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 68 def set_parent(parent) @parent = parent end |
#verify_ui_states(ui_states) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 117 def verify_ui_states(ui_states) ui_states.each do | ui_object, object_states | object_states.each do | property, state | case property when :exists actual = ui_object.exists? when :enabled actual = ui_object.enabled? when :visible actual = ui_object.visible? when :readonly actual = ui_object.read_only? when :checked actual = ui_object.checked? when :value actual = ui_object.get_value when :maxlength actual = ui_object.get_max_length when :options actual = ui_object. when :siebel_options actual = ui_object. else if property.to_s.start_with? ('cell_') cell = property.to_s.gsub('cell_', '') cell = cell.split('_') actual = ui_object.get_table_cell(cell[0].to_i, cell[1].to_i) end end ExceptionQueue.enqueue_assert_equal(state, actual, "Expected #{ui_object.get_locator} #{property.to_s} property") end end ExceptionQueue.post_exceptions end |
#visible? ⇒ Boolean
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 77 def visible? section, type = find_section exists = section invisible = false if type == :css Capybara.using_wait_time 0.1 do # is section itself hidden with .ui-helper-hidden class? self_hidden = page.has_css?("#{@locator}.ui-helper-hidden") # is parent of section hidden, thus hiding the section? parent_hidden = page.has_css?(".ui-helper-hidden > #{@locator}") # is grandparent of section, or any other ancestor, hidden? other_ancestor_hidden = page.has_css?(".ui-helper-hidden * #{@locator}") # if any of the above conditions are true, then section is invisible invisible = self_hidden || parent_hidden || other_ancestor_hidden end end # the section is visible if it exists and it is not invisible (exists && !invisible) ? true : false end |
#wait_until_exists(seconds) ⇒ Object
101 102 103 104 105 106 107 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 101 def wait_until_exists(seconds) timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { exists? } rescue raise "Could not find section #{get_locator} after #{timeout} seconds" unless exists? end |
#wait_until_gone(seconds) ⇒ Object
109 110 111 112 113 114 115 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 109 def wait_until_gone(seconds) timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { !exists? } rescue raise "Section #{get_locator} remained visible after #{timeout} seconds" if exists? end |