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,26 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Span do
5
- let(:span) { PageObject::Elements::Span }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :text, :title, :xpath].each do |t|
10
- identifier = span.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, :text, :title, :xpath].each do |t|
17
- key, value = span.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- it "should register with tag_name :span" do
24
- expect(::PageObject::Elements.element_class_for(:span)).to eql ::PageObject::Elements::Span
25
- end
26
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::TableCell do
5
-
6
- context "interface" do
7
- it "should register with tag_name :td" do
8
- expect(::PageObject::Elements.element_class_for(:td)).to eql ::PageObject::Elements::TableCell
9
- end
10
-
11
- it "should register with tag_name :th" do
12
- expect(::PageObject::Elements.element_class_for(:th)).to eql ::PageObject::Elements::TableCell
13
- end
14
-
15
- it "should always be enabled" do
16
- table_cell_element = double('table_cell_element')
17
- table_cell = PageObject::Elements::TableCell.new(table_cell_element, :platform => :selenium_webdriver)
18
- expect(table_cell.enabled?).to be true
19
- end
20
- end
21
- end
@@ -1,70 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::TableRow do
5
- let(:table_cell) { double('table_cell') }
6
- let(:table_row_driver) { double('table_row_driver') }
7
-
8
- describe "interface" do
9
-
10
- it "should register with tag_name :tr" do
11
- expect(::PageObject::Elements.element_class_for(:tr)).to eql ::PageObject::Elements::TableRow
12
- end
13
-
14
- context "for selenium" do
15
- it "should return a table cell when indexed" do
16
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
17
- allow(table_row).to receive(:columns).and_return(2)
18
- expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_cell)
19
- expect(table_cell).to receive(:[]).and_return(table_cell)
20
- expect(table_row[0]).to be_instance_of PageObject::Elements::TableCell
21
- end
22
-
23
- it "should retrun the number of columns" do
24
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
25
- expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_row_driver)
26
- expect(table_row_driver).to receive(:size).and_return(3)
27
- expect(table_row.columns).to eql 3
28
- end
29
-
30
- it "should iterate over the table columns" do
31
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
32
- expect(table_row).to receive(:columns).and_return(2)
33
- allow(table_row).to receive(:[]).and_return(table_row_driver)
34
- count = 0
35
- table_row.each { |e| count += 1 }
36
- expect(count).to eql 2
37
- end
38
- end
39
-
40
- context "for watir" do
41
- before(:each) do
42
- allow(table_row_driver).to receive(:find_elements).and_return(table_row_driver)
43
- end
44
-
45
- it "should return a table cell when indexed" do
46
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
47
- allow(table_row).to receive(:columns).and_return(2)
48
- expect(table_row_driver).to receive(:[]).with(1).and_return(table_cell)
49
- expect(table_row[1]).to be_instance_of PageObject::Elements::TableCell
50
- end
51
-
52
- it "should return the number of columns" do
53
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
54
- allow(table_row_driver).to receive(:wd).and_return(table_row_driver)
55
- expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_row_driver)
56
- expect(table_row_driver).to receive(:size).and_return(3)
57
- expect(table_row.columns).to eql 3
58
- end
59
-
60
- it "should iterate over the table columns" do
61
- table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
62
- expect(table_row).to receive(:columns).and_return(2)
63
- allow(table_row).to receive(:[])
64
- count = 0
65
- table_row.each { |e| count += 1 }
66
- expect(count).to eql 2
67
- end
68
- end
69
- end
70
- end
@@ -1,98 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Table do
5
- describe "when mapping how to find an element" do
6
- it "should map watir types to same" do
7
- [:class, :id, :index, :xpath].each do |t|
8
- identifier = PageObject::Elements::Table.watir_identifier_for t => 'value'
9
- expect(identifier.keys.first).to eql t
10
- end
11
- end
12
-
13
- it "should map selenium types to same" do
14
- [:class, :id, :index, :name, :xpath].each do |t|
15
- key, value = PageObject::Elements::Table.selenium_identifier_for t => 'value'
16
- expect(key).to eql t
17
- end
18
- end
19
- end
20
-
21
- describe "interface" do
22
- let(:table_element) { double('table_element') }
23
-
24
- before(:each) do
25
- allow(table_element).to receive(:[]).and_return(table_element)
26
- allow(table_element).to receive(:find_elements).and_return(table_element)
27
- end
28
-
29
- it "should register with tag_name :table" do
30
- expect(::PageObject::Elements.element_class_for(:table)).to eql ::PageObject::Elements::Table
31
- end
32
-
33
- context "for watir" do
34
- let(:watir_table) { PageObject::Elements::Table.new(table_element, :platform => :watir_webdriver) }
35
-
36
- it "should return a table row when indexed" do
37
- allow(table_element).to receive(:[]).with(1).and_return(table_element)
38
- expect(watir_table[1]).to be_instance_of PageObject::Elements::TableRow
39
- end
40
-
41
- it "should return the first row" do
42
- allow(table_element).to receive(:[]).with(0).and_return(table_element)
43
- expect(watir_table.first_row).to be_instance_of PageObject::Elements::TableRow
44
- end
45
-
46
- it "shoudl return the last row" do
47
- allow(table_element).to receive(:[]).with(-1).and_return(table_element)
48
- expect(watir_table.last_row).to be_instance_of PageObject::Elements::TableRow
49
- end
50
-
51
- it "should return the number of rows" do
52
- allow(table_element).to receive(:wd).and_return(table_element)
53
- expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
54
- expect(table_element).to receive(:size).and_return(2)
55
- expect(watir_table.rows).to eql 2
56
- end
57
-
58
- it "should iterate over the table rows" do
59
- expect(watir_table).to receive(:rows).and_return(2)
60
- count = 0
61
- watir_table.each { |e| count += 1 }
62
- expect(count).to eql 2
63
- end
64
- end
65
-
66
- context "for selenium" do
67
- let(:selenium_table) { PageObject::Elements::Table.new(table_element, :platform => :selenium_webdriver) }
68
-
69
- it "should return a table row when indexed" do
70
- expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
71
- expect(selenium_table[1]).to be_instance_of PageObject::Elements::TableRow
72
- end
73
-
74
- it "should return the first row" do
75
- allow(table_element).to receive(:[]).with(0).and_return(table_element)
76
- expect(selenium_table.first_row).to be_instance_of PageObject::Elements::TableRow
77
- end
78
-
79
- it "shoudl return the last row" do
80
- allow(table_element).to receive(:[]).with(-1).and_return(table_element)
81
- expect(selenium_table.last_row).to be_instance_of PageObject::Elements::TableRow
82
- end
83
-
84
- it "should return the number of rows" do
85
- expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
86
- expect(table_element).to receive(:size).and_return(2)
87
- expect(selenium_table.rows).to eql 2
88
- end
89
-
90
- it "should iterate over the table rows" do
91
- allow(selenium_table).to receive(:rows).and_return(2)
92
- count = 0
93
- selenium_table.each { |e| count += 1 }
94
- expect(count).to eql 2
95
- end
96
- end
97
- end
98
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::TextArea do
5
- let(:textarea) { PageObject::Elements::TextArea }
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 = textarea.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, :name, :xpath, :index].each do |t|
17
- key, value = textarea.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_name :textarea" do
26
- expect(::PageObject::Elements.element_class_for(:textarea)).to eql ::PageObject::Elements::TextArea
27
- end
28
-
29
- context "for Selenium" do
30
- it "should set its' value" do
31
- text_area_element = double('text_area')
32
- text_area = PageObject::Elements::TextArea.new(text_area_element, :platform => :selenium_webdriver)
33
- expect(text_area_element).to receive(:clear)
34
- expect(text_area_element).to receive(:send_keys).with('Joseph')
35
- text_area.value = 'Joseph'
36
- end
37
- end
38
- end
39
- end
@@ -1,77 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::UnorderedList do
5
- let(:ul) { PageObject::Elements::UnorderedList }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :xpath].each do |t|
10
- identifier = ul.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 = ul.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- describe "interface" do
24
- let(:ul_element) { double('ul_element') }
25
-
26
- it "should register with tag_name :ul" do
27
- expect(::PageObject::Elements.element_class_for(:ul)).to eql ::PageObject::Elements::UnorderedList
28
- end
29
-
30
- context "for watir" do
31
- it "should return a list item when indexed" do
32
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
33
- allow(ul_element).to receive(:uls).and_return(ul_element)
34
- expect(ul_element).to receive(:[])
35
- ul[1]
36
- end
37
-
38
- it "should know how many items it contains" do
39
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
40
- allow(ul_element).to receive(:uls).and_return([ul_element])
41
- expect(ul.items).to eql 1
42
- end
43
-
44
- it "should know how to iterate over the items" do
45
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
46
- expect(ul).to receive(:items).and_return(5)
47
- allow(ul).to receive(:[])
48
- count = 0
49
- ul.each { |item| count += 1 }
50
- expect(count).to eql 5
51
- end
52
- end
53
-
54
- context "for selenium" do
55
- it "should return a list item when indexed" do
56
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
57
- expect(ul_element).to receive(:find_elements).and_return([ul_element, ul_element])
58
- ul[1]
59
- end
60
-
61
- it "should know how many items it contains" do
62
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
63
- expect(ul_element).to receive(:find_elements).and_return([ul_element])
64
- expect(ul.items).to eql 1
65
- end
66
-
67
- it "should know how to iterate over the items" do
68
- ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
69
- expect(ul).to receive(:items).and_return(5)
70
- allow(ul).to receive(:[])
71
- count = 0
72
- ul.each { |item| count += 1 }
73
- expect(count).to eql 5
74
- end
75
- end
76
- end
77
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Video do
5
-
6
- let(:video) { PageObject::Elements::Video.new(platform, :platform => :watir_webdriver) }
7
- let(:platform) { double('platform')}
8
- let(:wd) { double('wd') }
9
-
10
- before do
11
- allow(platform).to receive(:wd).and_return wd
12
- end
13
-
14
- it "should return height when present" do
15
- expect(wd).to receive(:size).and_return('height' => 20)
16
- expect(video.height).to eq(20)
17
- end
18
-
19
- it "should not return height when not present" do
20
- expect(wd).to receive(:size).and_return({})
21
- expect(video.height).to eq(nil)
22
- end
23
-
24
- it "should return width when present" do
25
- expect(wd).to receive(:size).and_return('width' => 20)
26
- expect(video.width).to eq(20)
27
- end
28
-
29
- it "should not return width when not present" do
30
- expect(wd).to receive(:size).and_return({})
31
- expect(video.width).to eq(nil)
32
- end
33
- end
@@ -1,193 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements/element'
3
-
4
- describe "Element for Watir" do
5
- let(:watir_driver) { double('watir_driver') }
6
- let(:watir_element) { ::PageObject::Elements::Element.new(watir_driver, :platform => :watir_webdriver) }
7
-
8
- before(:each) do
9
- allow(Selenium::WebDriver::Mouse).to receive(:new).and_return(watir_driver)
10
- end
11
-
12
- it "should know when it is visible" do
13
- allow(watir_driver).to receive(:present?).and_return(true)
14
- allow(watir_driver).to receive(:displayed?).and_return(true)
15
- expect(watir_element.visible?).to eql true
16
- end
17
-
18
- it "should know when it is not visible" do
19
- allow(watir_driver).to receive(:present?).and_return(false)
20
- allow(watir_driver).to receive(:displayed?).and_return(false)
21
- expect(watir_element.visible?).to eql false
22
- end
23
-
24
- it "should know when it exists" do
25
- allow(watir_driver).to receive(:exists?).and_return(true)
26
- expect(watir_element.exists?).to eql true
27
- end
28
-
29
- it "should know when it does not exist" do
30
- allow(watir_driver).to receive(:exists?).and_return(false)
31
- allow(watir_driver).to receive(:nil?).and_return(true)
32
- expect(watir_element.exists?).to eql false
33
- end
34
-
35
- it "should be able to return the text contained in the element" do
36
- expect(watir_driver).to receive(:text).and_return("my text")
37
- expect(watir_element.text).to eql "my text"
38
- end
39
-
40
- it "should know when it is equal to another" do
41
- expect(watir_driver).to receive(:==).and_return(true)
42
- expect(watir_element).to eq watir_element
43
- end
44
-
45
- it "should know when it is not equal to another" do
46
- expect(watir_element).not_to eq 'not an element'
47
- end
48
-
49
- it "should return its tag name" do
50
- expect(watir_driver).to receive(:tag_name).and_return("h1")
51
- expect(watir_element.tag_name).to eql "h1"
52
- end
53
-
54
- it "should know its value" do
55
- allow(watir_driver).to receive(:value).and_return("value")
56
- allow(watir_driver).to receive(:attribute).and_return("value")
57
- expect(watir_element.value).to eql "value"
58
- end
59
-
60
- it "should know how to retrieve the value of an attribute" do
61
- allow(watir_driver).to receive(:attribute_value).and_return(true)
62
- allow(watir_driver).to receive(:attribute).and_return(true)
63
- expect(watir_element.attribute("readonly")).to be true
64
- end
65
-
66
- it "should be clickable" do
67
- expect(watir_driver).to receive(:click)
68
- watir_element.click
69
- end
70
-
71
- it "should be double clickable" do
72
- expect(watir_driver).to receive(:double_click)
73
- watir_element.double_click
74
- end
75
-
76
- it "should be right clickable" do
77
- allow(watir_driver).to receive(:right_click)
78
- allow(watir_driver).to receive(:context_click)
79
- watir_element.right_click
80
- end
81
-
82
- it "should be able to block until it is present" do
83
- allow(watir_driver).to receive(:wait_until_present).with(10)
84
- watir_element.when_present(10)
85
- end
86
-
87
- it "should return the element when it is present" do
88
- allow(watir_driver).to receive(:wait_until_present).with(10)
89
- element = watir_element.when_present(10)
90
- expect(element).to equal watir_element
91
- end
92
-
93
- it "should use the overriden wait when set" do
94
- PageObject.default_element_wait = 20
95
- allow(watir_driver).to receive(:wait_until_present).with(20)
96
- watir_element.when_present
97
- end
98
-
99
- it "should be able to block until it is visible" do
100
- allow(::Watir::Wait).to receive(:until).with(10, "Element was not visible in 10 seconds")
101
- allow(watir_driver).to receive(:displayed?).and_return(true)
102
- watir_element.when_visible(10)
103
- end
104
-
105
- it "should return the element when it is visible" do
106
- allow(::Watir::Wait).to receive(:until).with(10, "Element was not visible in 10 seconds")
107
- allow(watir_driver).to receive(:displayed?).and_return(true)
108
- element = watir_element.when_visible(10)
109
- expect(element).to equal watir_element
110
- end
111
-
112
- it "should be able to block until it is not visible" do
113
- allow(::Watir::Wait).to receive(:while).with(10, "Element still visible after 10 seconds")
114
- allow(watir_driver).to receive(:displayed?).and_return(false)
115
- watir_element.when_not_visible(10)
116
- end
117
-
118
- it "should return the element when it is not visible" do
119
- allow(::Watir::Wait).to receive(:while).with(10, "Element still visible after 10 seconds")
120
- allow(watir_driver).to receive(:displayed?).and_return(false)
121
- element = watir_element.when_not_visible(10)
122
- expect(element).to equal watir_element
123
- end
124
-
125
- it "should be able to block until a user define event fires true" do
126
- allow(::Watir::Wait).to receive(:until).with(10, "Element blah")
127
- watir_element.wait_until(10, "Element blah") {true}
128
- end
129
-
130
- it "should send keys to the element" do
131
- expect(watir_driver).to receive(:send_keys).with([:control, 'a'])
132
- watir_element.send_keys([:control, 'a'])
133
- end
134
-
135
- it "should clear its' contents" do
136
- expect(watir_driver).to receive(:clear)
137
- watir_element.clear
138
- end
139
-
140
- it "should scroll into view" do
141
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
142
- expect(watir_driver).to receive(:location_once_scrolled_into_view)
143
- watir_element.scroll_into_view
144
- end
145
-
146
- it "should know its location" do
147
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
148
- expect(watir_driver).to receive(:location)
149
- watir_element.location
150
- end
151
-
152
- it "should know its size" do
153
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
154
- expect(watir_driver).to receive(:size)
155
- watir_element.size
156
- end
157
-
158
- it "should have a height" do
159
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
160
- expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
161
- expect(watir_element.height).to eql 20
162
- end
163
-
164
- it "should have a width" do
165
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
166
- expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
167
- expect(watir_element.width).to eql 30
168
- end
169
-
170
- it "should have a centre" do
171
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
172
- expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40})
173
- expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
174
- expect(watir_element.centre).to include(
175
- 'y' => 90,
176
- 'x' => 55
177
- )
178
- end
179
-
180
- it "should have a centre greater than y position" do
181
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
182
- expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
183
- expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
184
- expect(watir_element.centre['y']).to be > watir_element.location['y']
185
- end
186
-
187
- it "should have a centre greater than x position" do
188
- allow(watir_driver).to receive(:wd).and_return(watir_driver)
189
- expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
190
- expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
191
- expect(watir_element.centre['x']).to be > watir_element.location['x']
192
- end
193
- end