page-object 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +22 -12
  3. data/ChangeLog +10 -0
  4. data/Gemfile +4 -2
  5. data/Guardfile +1 -1
  6. data/README.md +2 -2
  7. data/lib/page-object/accessors.rb +57 -35
  8. data/lib/page-object/elements/element.rb +26 -0
  9. data/lib/page-object/locator_generator.rb +46 -0
  10. data/lib/page-object/platforms/selenium_webdriver/element.rb +6 -6
  11. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +14 -0
  12. data/lib/page-object/platforms/watir_webdriver/element.rb +0 -7
  13. data/lib/page-object/platforms/watir_webdriver/page_object.rb +16 -3
  14. data/lib/page-object/version.rb +1 -1
  15. data/page-object.gemspec +7 -10
  16. metadata +34 -375
  17. data/features/area.feature +0 -35
  18. data/features/async.feature +0 -21
  19. data/features/audio.feature +0 -64
  20. data/features/bold.feature +0 -21
  21. data/features/button.feature +0 -98
  22. data/features/canvas.feature +0 -37
  23. data/features/check_box.feature +0 -55
  24. data/features/div.feature +0 -45
  25. data/features/element.feature +0 -343
  26. data/features/file_field.feature +0 -40
  27. data/features/form.feature +0 -43
  28. data/features/frames.feature +0 -75
  29. data/features/generic_elements.feature +0 -29
  30. data/features/gxt_table_extension.feature +0 -23
  31. data/features/headings.feature +0 -97
  32. data/features/hidden_field.feature +0 -45
  33. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  34. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  35. data/features/html/async.html +0 -36
  36. data/features/html/double_click.html +0 -13
  37. data/features/html/failure.html +0 -8
  38. data/features/html/frame_1.html +0 -18
  39. data/features/html/frame_2.html +0 -16
  40. data/features/html/frame_3.html +0 -14
  41. data/features/html/frames.html +0 -12
  42. data/features/html/hover.html +0 -12
  43. data/features/html/iframes.html +0 -12
  44. data/features/html/images/circle.png +0 -0
  45. data/features/html/images/img_pulpit.jpg +0 -0
  46. data/features/html/images/submit.gif +0 -0
  47. data/features/html/indexed_property.html +0 -55
  48. data/features/html/modal.html +0 -17
  49. data/features/html/modal_1.html +0 -38
  50. data/features/html/modal_2.html +0 -27
  51. data/features/html/movie.mp4 +0 -0
  52. data/features/html/movie.ogg +0 -0
  53. data/features/html/multi_elements.html +0 -145
  54. data/features/html/nested_elements.html +0 -77
  55. data/features/html/nested_frame_1.html +0 -1
  56. data/features/html/nested_frame_2.html +0 -11
  57. data/features/html/nested_frame_3.html +0 -14
  58. data/features/html/nested_frames.html +0 -10
  59. data/features/html/planets.gif +0 -0
  60. data/features/html/static_elements.html +0 -194
  61. data/features/html/success.html +0 -8
  62. data/features/html/sun.gif +0 -0
  63. data/features/html/sun.html +0 -7
  64. data/features/html/widgets.html +0 -20
  65. data/features/image.feature +0 -50
  66. data/features/indexed_property.feature +0 -117
  67. data/features/italic.feature +0 -21
  68. data/features/javascript.feature +0 -28
  69. data/features/label.feature +0 -46
  70. data/features/link.feature +0 -52
  71. data/features/list_item.feature +0 -36
  72. data/features/modal_dialog.feature +0 -15
  73. data/features/multi_elements.feature +0 -498
  74. data/features/nested_elements.feature +0 -117
  75. data/features/ordered_list.feature +0 -56
  76. data/features/page_level_actions.feature +0 -90
  77. data/features/paragraph.feature +0 -35
  78. data/features/radio_button.feature +0 -58
  79. data/features/radio_button_group.feature +0 -29
  80. data/features/sample-app/public/audio_video.html +0 -23
  81. data/features/sample-app/public/jquery-1.3.2.js +0 -4376
  82. data/features/sample-app/public/jquery.html +0 -30
  83. data/features/sample-app/public/prototype-1.6.0.3.js +0 -4320
  84. data/features/sample-app/public/prototype.html +0 -35
  85. data/features/sample-app/sample_app.rb +0 -35
  86. data/features/section.feature +0 -136
  87. data/features/select_list.feature +0 -86
  88. data/features/span.feature +0 -37
  89. data/features/step_definitions/accessor_steps.rb +0 -64
  90. data/features/step_definitions/area_steps.rb +0 -19
  91. data/features/step_definitions/async_steps.rb +0 -83
  92. data/features/step_definitions/audio_steps.rb +0 -27
  93. data/features/step_definitions/bold_steps.rb +0 -12
  94. data/features/step_definitions/button_steps.rb +0 -48
  95. data/features/step_definitions/canvas_steps.rb +0 -15
  96. data/features/step_definitions/check_box_steps.rb +0 -35
  97. data/features/step_definitions/div_steps.rb +0 -19
  98. data/features/step_definitions/element_steps.rb +0 -294
  99. data/features/step_definitions/file_field_steps.rb +0 -19
  100. data/features/step_definitions/form_steps.rb +0 -19
  101. data/features/step_definitions/frames_steps.rb +0 -159
  102. data/features/step_definitions/generic_element_steps.rb +0 -31
  103. data/features/step_definitions/gxt_table_steps.rb +0 -53
  104. data/features/step_definitions/headings_steps.rb +0 -12
  105. data/features/step_definitions/hidden_field_steps.rb +0 -27
  106. data/features/step_definitions/image_steps.rb +0 -27
  107. data/features/step_definitions/indexed_property_steps.rb +0 -163
  108. data/features/step_definitions/italic_steps.rb +0 -12
  109. data/features/step_definitions/javascript_steps.rb +0 -53
  110. data/features/step_definitions/label_steps.rb +0 -19
  111. data/features/step_definitions/link_steps.rb +0 -40
  112. data/features/step_definitions/list_item_steps.rb +0 -19
  113. data/features/step_definitions/modal_dialog_steps.rb +0 -62
  114. data/features/step_definitions/multi_elements_steps.rb +0 -554
  115. data/features/step_definitions/nested_elements_steps.rb +0 -212
  116. data/features/step_definitions/ordered_list_steps.rb +0 -23
  117. data/features/step_definitions/page_level_actions_steps.rb +0 -135
  118. data/features/step_definitions/page_traversal_steps.rb +0 -8
  119. data/features/step_definitions/paragraph_steps.rb +0 -28
  120. data/features/step_definitions/radio_button_group_steps.rb +0 -36
  121. data/features/step_definitions/radio_button_steps.rb +0 -27
  122. data/features/step_definitions/section_steps.rb +0 -277
  123. data/features/step_definitions/select_list_steps.rb +0 -65
  124. data/features/step_definitions/span_steps.rb +0 -19
  125. data/features/step_definitions/table_cell_steps.rb +0 -15
  126. data/features/step_definitions/table_row_steps.rb +0 -23
  127. data/features/step_definitions/table_steps.rb +0 -70
  128. data/features/step_definitions/text_area_steps.rb +0 -35
  129. data/features/step_definitions/text_field_steps.rb +0 -35
  130. data/features/step_definitions/unordered_list_steps.rb +0 -23
  131. data/features/step_definitions/video_steps.rb +0 -45
  132. data/features/support/ajax_text_environment.rb +0 -26
  133. data/features/support/audio_video_page.rb +0 -24
  134. data/features/support/env.rb +0 -8
  135. data/features/support/hooks.rb +0 -8
  136. data/features/support/page.rb +0 -373
  137. data/features/support/persistent_browser.rb +0 -70
  138. data/features/support/targets/firefox14_osx.rb +0 -6
  139. data/features/support/targets/firefox14_windows7.rb +0 -6
  140. data/features/support/url_helper.rb +0 -61
  141. data/features/table.feature +0 -122
  142. data/features/table_cell.feature +0 -45
  143. data/features/table_row.feature +0 -43
  144. data/features/text_area.feature +0 -51
  145. data/features/text_field.feature +0 -70
  146. data/features/unordered_list.feature +0 -56
  147. data/features/video.feature +0 -69
  148. data/spec/page-object/accessors_spec.rb +0 -40
  149. data/spec/page-object/element_locators_spec.rb +0 -1144
  150. data/spec/page-object/elements/area_spec.rb +0 -45
  151. data/spec/page-object/elements/bold_spec.rb +0 -29
  152. data/spec/page-object/elements/button_spec.rb +0 -64
  153. data/spec/page-object/elements/canvas_spec.rb +0 -41
  154. data/spec/page-object/elements/check_box_spec.rb +0 -49
  155. data/spec/page-object/elements/div_spec.rb +0 -28
  156. data/spec/page-object/elements/element_spec.rb +0 -196
  157. data/spec/page-object/elements/file_field_spec.rb +0 -39
  158. data/spec/page-object/elements/form_spec.rb +0 -28
  159. data/spec/page-object/elements/heading_spec.rb +0 -48
  160. data/spec/page-object/elements/hidden_field_spec.rb +0 -28
  161. data/spec/page-object/elements/image_spec.rb +0 -66
  162. data/spec/page-object/elements/italic_spec.rb +0 -29
  163. data/spec/page-object/elements/label_spec.rb +0 -29
  164. data/spec/page-object/elements/link_spec.rb +0 -49
  165. data/spec/page-object/elements/list_item_spec.rb +0 -29
  166. data/spec/page-object/elements/media_spec.rb +0 -63
  167. data/spec/page-object/elements/nested_element_spec.rb +0 -254
  168. data/spec/page-object/elements/option_spec.rb +0 -11
  169. data/spec/page-object/elements/ordered_list_spec.rb +0 -78
  170. data/spec/page-object/elements/paragraph_spec.rb +0 -27
  171. data/spec/page-object/elements/select_list_spec.rb +0 -142
  172. data/spec/page-object/elements/selenium/radio_button_spec.rb +0 -44
  173. data/spec/page-object/elements/selenium/text_field_spec.rb +0 -49
  174. data/spec/page-object/elements/selenium_element_spec.rb +0 -218
  175. data/spec/page-object/elements/span_spec.rb +0 -26
  176. data/spec/page-object/elements/table_cell_spec.rb +0 -21
  177. data/spec/page-object/elements/table_row_spec.rb +0 -70
  178. data/spec/page-object/elements/table_spec.rb +0 -98
  179. data/spec/page-object/elements/text_area_spec.rb +0 -39
  180. data/spec/page-object/elements/unordered_list_spec.rb +0 -77
  181. data/spec/page-object/elements/video_spec.rb +0 -33
  182. data/spec/page-object/elements/watir_element_spec.rb +0 -193
  183. data/spec/page-object/javascript_framework_facade_spec.rb +0 -61
  184. data/spec/page-object/loads_platform_spec.rb +0 -53
  185. data/spec/page-object/page-object_spec.rb +0 -435
  186. data/spec/page-object/page_factory_spec.rb +0 -238
  187. data/spec/page-object/page_populator_spec.rb +0 -122
  188. data/spec/page-object/page_section_spec.rb +0 -80
  189. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +0 -68
  190. data/spec/page-object/platforms/selenium_webdriver_spec.rb +0 -29
  191. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +0 -29
  192. data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -9
  193. data/spec/page-object/selenium_accessors_spec.rb +0 -628
  194. data/spec/page-object/watir_accessors_spec.rb +0 -1191
  195. data/spec/page-object/widget_spec.rb +0 -226
  196. data/spec/spec_helper.rb +0 -43
@@ -1,45 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Area do
5
- let(:area) { PageObject::Elements::Area }
6
-
7
- context "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath].each do |t|
10
- identifier = area.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :index, :name, :xpath].each do |t|
17
- key, value = area.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- context "implementation" do
24
- let(:area_element) { double('area_element') }
25
-
26
- context "when using selenium" do
27
- let(:selenium_area) { PageObject::Elements::Area.new(area_element, :platform => :selenium_webdriver) }
28
-
29
- it "should know its coords" do
30
- expect(area_element).to receive(:attribute).with(:coords).and_return("1,2,3,4")
31
- expect(selenium_area.coords).to eql "1,2,3,4"
32
- end
33
-
34
- it "should know its shape" do
35
- expect(area_element).to receive(:attribute).with(:shape).and_return('circle')
36
- expect(selenium_area.shape).to eql 'circle'
37
- end
38
-
39
- it "should know its href" do
40
- expect(area_element).to receive(:attribute).with(:href).and_return('twitter.com')
41
- expect(selenium_area.href).to eql 'twitter.com'
42
- end
43
- end
44
- end
45
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Bold do
5
- let(:bold) { PageObject::Elements::Bold }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath].each do |t|
10
- identifier = bold.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :index, :name, :xpath].each do |t|
17
- key, value = bold.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- describe "interface" do
24
-
25
- it "should register with tag :b" do
26
- expect(::PageObject::Elements.element_class_for(:b)).to eql ::PageObject::Elements::Bold
27
- end
28
- end
29
- end
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Button do
5
- let(:button) { PageObject::Elements::Button }
6
-
7
- context "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :value, :xpath, :src, :alt, :css].each do |t|
10
- identifier = button.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :index, :name, :value, :xpath, :src, :alt, :css].each do |t|
17
- key, value = button.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- describe "interface" do
24
- let(:button_element) { double('button_element') }
25
-
26
- it "should register with type :submit" do
27
- expect(::PageObject::Elements.element_class_for(:input, :submit)).to eql ::PageObject::Elements::Button
28
- end
29
-
30
- it "should register with type :image" do
31
- expect(::PageObject::Elements.element_class_for(:input, :image)).to eql ::PageObject::Elements::Button
32
- end
33
-
34
- it "should register with type :button" do
35
- expect(::PageObject::Elements.element_class_for(:input, :button)).to eql ::PageObject::Elements::Button
36
- end
37
-
38
- it "should retisger with type :reset" do
39
- expect(::PageObject::Elements.element_class_for(:input, :reset)).to eql ::PageObject::Elements::Button
40
- end
41
-
42
- context "for selenium" do
43
- it "should return error when asked for its' text" do
44
- button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
45
- expect(lambda { button.text }).to raise_error
46
- end
47
-
48
- it "should return text for a button tag button" do
49
- allow(button_element).to receive(:tag_name).and_return('button')
50
- allow(button_element).to receive(:text).and_return('button?')
51
- button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
52
- expect(button.text).to eq 'button?'
53
- end
54
-
55
- it "should return text for an input tag button" do
56
- allow(button_element).to receive(:tag_name).and_return('input')
57
- allow(button_element).to receive(:attribute).with('value').and_return('button!')
58
- button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
59
- expect(button.text).to eq 'button!'
60
- end
61
- end
62
- end
63
-
64
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Canvas do
5
- let(:area) { PageObject::Elements::Canvas }
6
-
7
- context "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath].each do |t|
10
- identifier = area.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :index, :name, :xpath].each do |t|
17
- key, value = area.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- context "implementation" do
24
- let(:canvas_element) { double('canvas_element') }
25
- let(:wd) { double('wd') }
26
-
27
- context "when using selenium" do
28
- let(:selenium_canvas) { PageObject::Elements::Canvas.new(canvas_element, :platform => :selenium_webdriver) }
29
-
30
- it "should know its width" do
31
- expect(canvas_element).to receive(:size).and_return({'width' => 400})
32
- expect(selenium_canvas.width).to eql 400
33
- end
34
-
35
- it "should know its height" do
36
- expect(canvas_element).to receive(:size).and_return({'height' => 100})
37
- expect(selenium_canvas.height).to eql 100
38
- end
39
- end
40
- end
41
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::CheckBox do
5
- let(:checkbox) { PageObject::Elements::CheckBox }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath, :value].each do |t|
10
- identifier = checkbox.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
- it "should map selenium types to same" do
15
- [:class, :id, :name, :xpath, :index, :value].each do |t|
16
- key, value = checkbox.selenium_identifier_for t => 'value'
17
- expect(key).to eql t
18
- end
19
- end
20
- end
21
-
22
- describe "interface" do
23
- let(:check_box) { double('check_box') }
24
- let(:selenium_cb) { PageObject::Elements::CheckBox.new(check_box, :platform => :selenium_webdriver) }
25
-
26
- it "should register with type :checkbox" do
27
- expect(::PageObject::Elements.element_class_for(:input, :checkbox)).to eql ::PageObject::Elements::CheckBox
28
- end
29
-
30
- context "for selenium" do
31
- it "should check" do
32
- expect(check_box).to receive(:click)
33
- expect(check_box).to receive(:selected?).and_return(false)
34
- selenium_cb.check
35
- end
36
-
37
- it "should uncheck" do
38
- expect(check_box).to receive(:click)
39
- expect(check_box).to receive(:selected?).and_return(true)
40
- selenium_cb.uncheck
41
- end
42
-
43
- it "should know if it is checked" do
44
- expect(check_box).to receive(:selected?).and_return(true)
45
- expect(selenium_cb).to be_checked
46
- end
47
- end
48
- end
49
- end
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Div do
5
- let(:div) { PageObject::Elements::Div }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :text, :index, :xpath, :name, :title, :css].each do |t|
10
- identifier = div.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :text, :index, :name, :xpath, :title, :css].each do |t|
17
- key, value = div.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
-
22
- describe "interface" do
23
- it "should register with tag :div" do
24
- expect(::PageObject::Elements.element_class_for(:div)).to eql ::PageObject::Elements::Div
25
- end
26
- end
27
- end
28
- end
@@ -1,196 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
-
5
- describe "Element" do
6
-
7
- context "when building the identifiers for Watir" do
8
- it "should build xpath when finding elements by name where not supported" do
9
- ['table', 'span', 'div', 'td', 'li', 'ol', 'ul'].each do |tag|
10
- how = {:tag_name => tag, :name => 'blah'}
11
- result = PageObject::Elements::Element.watir_identifier_for how
12
- expect(result[:xpath]).to eql ".//#{tag}[@name='blah']"
13
- end
14
- end
15
- end
16
-
17
- context "when building the identifiers for Selenium" do
18
- def all_basic_elements
19
- ['textarea', 'select', 'a', 'div', 'span', 'table', 'td', 'img', 'form', 'li', 'ul', 'ol']
20
- end
21
-
22
- def all_input_elements
23
- ['text', 'hidden', 'checkbox', 'radio']
24
- end
25
-
26
- it "should build xpath when index is provided for basic elements" do
27
- all_basic_elements.each do |tag|
28
- identifier = {:tag_name => tag, :index => 1}
29
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
30
- expect(how).to eql :xpath
31
- expect(what).to eql "(.//#{tag})[2]"
32
- end
33
- end
34
-
35
- it "should should build xpath when index is provided for input elements" do
36
- all_input_elements.each do |tag|
37
- identifier = {:tag_name => 'input', :type => tag, :index => 1}
38
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
39
- expect(how).to eql :xpath
40
- expect(what).to include "(.//input[@type='#{tag}'])[2]"
41
- end
42
- end
43
-
44
- it "should build xpath when locating basic elements by name and index" do
45
- all_basic_elements.each do |tag|
46
- identifier = {:tag_name => tag, :name => 'blah', :index => 0}
47
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
48
- expect(how).to eql :xpath
49
- expect(what).to eql "(.//#{tag}[@name='blah'])[1]"
50
- end
51
- end
52
-
53
- it "should build xpath when locating input elements by name and index" do
54
- all_input_elements.each do |type|
55
- identifier = {:tag_name => 'input', :type => "#{type}", :name => 'blah', :index => 0}
56
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
57
- expect(how).to eql :xpath
58
- expect(what).to include "(.//input[@type='#{type}' and @name='blah'])[1]"
59
- end
60
- end
61
-
62
- it "should build xpath when locating basic elements by name and class" do
63
- all_basic_elements.each do |tag|
64
- identifier = {:tag_name => tag, :class => 'bar', :name => 'foo'}
65
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
66
- expect(how).to eql :xpath
67
- expect(what).to eql ".//#{tag}[@class='bar' and @name='foo']"
68
- end
69
- end
70
-
71
- it "should build xpath when locating input elements by name and class" do
72
- all_input_elements.each do |type|
73
- identifier = {:tag_name => 'input', :type => "#{type}", :class => 'bar', :name => 'foo'}
74
- how, what = PageObject::Elements::Element.selenium_identifier_for identifier
75
- expect(what).to include ".//input[@type='#{type}' and @class='bar' and @name='foo']"
76
- end
77
- end
78
- end
79
-
80
- context "interaction with native element" do
81
- let(:wd) { double('') }
82
- let(:native) { double(wd: wd) }
83
- let(:element) { PageObject::Elements::Element.new(native, :platform => :watir_webdriver) }
84
-
85
- it "should check if native is enabled" do
86
- expect(native).to receive(:enabled?).and_return(true)
87
- expect(element).to be_enabled
88
- end
89
-
90
- it "should click the native" do
91
- expect(native).to receive(:click)
92
- element.click
93
- end
94
-
95
- it "should double click the native" do
96
- expect(native).to receive(:double_click)
97
- element.double_click
98
- end
99
-
100
- it "should inspect the native" do
101
- expect(native).to receive(:inspect)
102
- element.inspect
103
- end
104
-
105
- it "should retrieve the native's style" do
106
- expect(native).to receive(:style).with('foo').and_return("cheezy_style")
107
- expect(element.style('foo')).to eql 'cheezy_style'
108
- end
109
-
110
- it "should know if a native is disabled" do
111
- expect(native).to receive(:enabled?).and_return(false)
112
- expect(element).to be_disabled
113
- end
114
-
115
- it "should know if a native is visible" do
116
- expect(native).to receive(:present?).and_return(false)
117
- expect(element.visible?).to eq(false)
118
- end
119
-
120
- it "should know if a native exists" do
121
- expect(native).to receive(:exists?).and_return(true)
122
- expect(element).to exist
123
- end
124
-
125
- it "should flash the native" do
126
- expect(native).to receive(:flash)
127
- element.flash
128
- end
129
-
130
- it "should inspect the native's text" do
131
- expect(native).to receive(:text).and_return('My value is 42')
132
- expect(element.text).to eq('My value is 42')
133
- end
134
-
135
- it "should inspect the native's html" do
136
- expect(native).to receive(:html).and_return('<p>42</p>')
137
- expect(element.html).to eq('<p>42</p>')
138
- end
139
-
140
- it "should inspect the native's value" do
141
- expect(native).to receive(:html).and_return('42')
142
- expect(element.html).to eq('42')
143
- end
144
-
145
- it "should inspect the native's tag name" do
146
- expect(native).to receive(:attribute_value).and_return('bar')
147
- expect(element.attribute('foo')).to eq('bar')
148
- end
149
-
150
- it "should fire the native's event" do
151
- expect(native).to receive(:fire_event).with('hello')
152
- element.fire_event('hello')
153
- end
154
-
155
- it "should hover" do
156
- expect(native).to receive(:hover)
157
- element.hover
158
- end
159
-
160
- it "should focus" do
161
- expect(native).to receive(:focus)
162
- element.focus
163
- end
164
-
165
- it "should select the native's text" do
166
- expect(native).to receive(:select_text).with('hello')
167
- element.select_text('hello')
168
- end
169
-
170
- it "should wait until present" do
171
- expect(native).to receive(:wait_until_present).with(42)
172
- element.wait_until_present(42)
173
- end
174
-
175
- it "should send keys" do
176
- expect(native).to receive(:send_keys).with('foo bar')
177
- element.send_keys('foo bar')
178
- end
179
-
180
- it "should clear" do
181
- expect(native).to receive(:clear)
182
- element.clear
183
- end
184
-
185
- it "should inspect the native's id" do
186
- expect(native).to receive(:id).and_return('element123')
187
- expect(element.id).to eq('element123')
188
- end
189
-
190
- it "should inspect the native's id" do
191
- expect(wd).to receive(:location_once_scrolled_into_view)
192
- expect(native).to receive(:wd).and_return(wd)
193
- element.scroll_into_view
194
- end
195
- end
196
- end