page-object 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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