page-object-lds 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (281) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +10 -0
  7. data/ChangeLog +799 -0
  8. data/Gemfile +13 -0
  9. data/Guardfile +20 -0
  10. data/LICENSE +20 -0
  11. data/README.md +111 -0
  12. data/Rakefile +35 -0
  13. data/cucumber.yml +10 -0
  14. data/features/area.feature +35 -0
  15. data/features/async.feature +30 -0
  16. data/features/audio.feature +68 -0
  17. data/features/bold.feature +21 -0
  18. data/features/button.feature +88 -0
  19. data/features/canvas.feature +37 -0
  20. data/features/check_box.feature +55 -0
  21. data/features/div.feature +45 -0
  22. data/features/element.feature +322 -0
  23. data/features/file_field.feature +40 -0
  24. data/features/form.feature +43 -0
  25. data/features/frames.feature +75 -0
  26. data/features/generic_elements.feature +29 -0
  27. data/features/gxt_table_extension.feature +24 -0
  28. data/features/headings.feature +97 -0
  29. data/features/hidden_field.feature +45 -0
  30. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  31. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  32. data/features/html/async.html +36 -0
  33. data/features/html/double_click.html +13 -0
  34. data/features/html/failure.html +8 -0
  35. data/features/html/frame_1.html +18 -0
  36. data/features/html/frame_2.html +16 -0
  37. data/features/html/frame_3.html +14 -0
  38. data/features/html/frames.html +12 -0
  39. data/features/html/hover.html +12 -0
  40. data/features/html/iframes.html +12 -0
  41. data/features/html/images/circle.png +0 -0
  42. data/features/html/images/img_pulpit.jpg +0 -0
  43. data/features/html/images/submit.gif +0 -0
  44. data/features/html/indexed_property.html +52 -0
  45. data/features/html/modal.html +17 -0
  46. data/features/html/modal_1.html +38 -0
  47. data/features/html/modal_2.html +27 -0
  48. data/features/html/movie.mp4 +0 -0
  49. data/features/html/movie.ogg +0 -0
  50. data/features/html/multi_elements.html +144 -0
  51. data/features/html/nested_elements.html +77 -0
  52. data/features/html/nested_frame_1.html +1 -0
  53. data/features/html/nested_frame_2.html +11 -0
  54. data/features/html/nested_frame_3.html +14 -0
  55. data/features/html/nested_frames.html +10 -0
  56. data/features/html/planets.gif +0 -0
  57. data/features/html/static_elements.html +205 -0
  58. data/features/html/success.html +8 -0
  59. data/features/html/sun.gif +0 -0
  60. data/features/html/sun.html +7 -0
  61. data/features/image.feature +50 -0
  62. data/features/indexed_property.feature +98 -0
  63. data/features/javascript.feature +28 -0
  64. data/features/label.feature +46 -0
  65. data/features/link.feature +52 -0
  66. data/features/list_item.feature +36 -0
  67. data/features/modal_dialog.feature +15 -0
  68. data/features/multi_elements.feature +492 -0
  69. data/features/nested_elements.feature +117 -0
  70. data/features/ordered_list.feature +56 -0
  71. data/features/page_level_actions.feature +90 -0
  72. data/features/paragraph.feature +35 -0
  73. data/features/radio_button.feature +58 -0
  74. data/features/radio_button_group.feature +29 -0
  75. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  76. data/features/sample-app/public/jquery.html +30 -0
  77. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  78. data/features/sample-app/public/prototype.html +35 -0
  79. data/features/sample-app/sample_app.rb +35 -0
  80. data/features/select_list.feature +86 -0
  81. data/features/span.feature +37 -0
  82. data/features/step_definitions/accessor_steps.rb +60 -0
  83. data/features/step_definitions/area_steps.rb +19 -0
  84. data/features/step_definitions/async_steps.rb +83 -0
  85. data/features/step_definitions/audio_steps.rb +27 -0
  86. data/features/step_definitions/bold_steps.rb +12 -0
  87. data/features/step_definitions/button_steps.rb +43 -0
  88. data/features/step_definitions/canvas_steps.rb +15 -0
  89. data/features/step_definitions/check_box_steps.rb +35 -0
  90. data/features/step_definitions/div_steps.rb +19 -0
  91. data/features/step_definitions/element_steps.rb +266 -0
  92. data/features/step_definitions/file_field_steps.rb +19 -0
  93. data/features/step_definitions/form_steps.rb +19 -0
  94. data/features/step_definitions/frames_steps.rb +159 -0
  95. data/features/step_definitions/generic_element_steps.rb +31 -0
  96. data/features/step_definitions/gxt_table_steps.rb +58 -0
  97. data/features/step_definitions/headings_steps.rb +12 -0
  98. data/features/step_definitions/hidden_field_steps.rb +27 -0
  99. data/features/step_definitions/image_steps.rb +27 -0
  100. data/features/step_definitions/indexed_property_steps.rb +129 -0
  101. data/features/step_definitions/javascript_steps.rb +53 -0
  102. data/features/step_definitions/label_steps.rb +19 -0
  103. data/features/step_definitions/link_steps.rb +40 -0
  104. data/features/step_definitions/list_item_steps.rb +19 -0
  105. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  106. data/features/step_definitions/multi_elements_steps.rb +541 -0
  107. data/features/step_definitions/nested_elements_steps.rb +212 -0
  108. data/features/step_definitions/ordered_list_steps.rb +23 -0
  109. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  110. data/features/step_definitions/page_traversal_steps.rb +4 -0
  111. data/features/step_definitions/paragraph_steps.rb +28 -0
  112. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  113. data/features/step_definitions/radio_button_steps.rb +27 -0
  114. data/features/step_definitions/select_list_steps.rb +65 -0
  115. data/features/step_definitions/span_steps.rb +19 -0
  116. data/features/step_definitions/table_cell_steps.rb +15 -0
  117. data/features/step_definitions/table_steps.rb +70 -0
  118. data/features/step_definitions/text_area_steps.rb +35 -0
  119. data/features/step_definitions/text_field_steps.rb +35 -0
  120. data/features/step_definitions/unordered_list_steps.rb +23 -0
  121. data/features/step_definitions/video_steps.rb +45 -0
  122. data/features/support/ajax_text_environment.rb +26 -0
  123. data/features/support/env.rb +8 -0
  124. data/features/support/hooks.rb +8 -0
  125. data/features/support/page.rb +373 -0
  126. data/features/support/persistent_browser.rb +70 -0
  127. data/features/support/targets/firefox14_osx.rb +6 -0
  128. data/features/support/targets/firefox14_windows7.rb +6 -0
  129. data/features/support/url_helper.rb +57 -0
  130. data/features/table.feature +122 -0
  131. data/features/table_cell.feature +45 -0
  132. data/features/text_area.feature +51 -0
  133. data/features/text_field.feature +70 -0
  134. data/features/unordered_list.feature +56 -0
  135. data/features/video.feature +73 -0
  136. data/lib/page-object-lds.rb +421 -0
  137. data/lib/page-object/accessors.rb +1334 -0
  138. data/lib/page-object/core_ext/string.rb +5 -0
  139. data/lib/page-object/element_locators.rb +21 -0
  140. data/lib/page-object/elements/area.rb +31 -0
  141. data/lib/page-object/elements/audio.rb +9 -0
  142. data/lib/page-object/elements/bold.rb +11 -0
  143. data/lib/page-object/elements/button.rb +35 -0
  144. data/lib/page-object/elements/canvas.rb +23 -0
  145. data/lib/page-object/elements/check_box.rb +40 -0
  146. data/lib/page-object/elements/div.rb +19 -0
  147. data/lib/page-object/elements/element.rb +225 -0
  148. data/lib/page-object/elements/file_field.rb +41 -0
  149. data/lib/page-object/elements/form.rb +39 -0
  150. data/lib/page-object/elements/heading.rb +15 -0
  151. data/lib/page-object/elements/hidden_field.rb +22 -0
  152. data/lib/page-object/elements/image.rb +39 -0
  153. data/lib/page-object/elements/label.rb +19 -0
  154. data/lib/page-object/elements/link.rb +49 -0
  155. data/lib/page-object/elements/list_item.rb +19 -0
  156. data/lib/page-object/elements/media.rb +45 -0
  157. data/lib/page-object/elements/option.rb +10 -0
  158. data/lib/page-object/elements/ordered_list.rb +53 -0
  159. data/lib/page-object/elements/paragraph.rb +9 -0
  160. data/lib/page-object/elements/radio_button.rb +40 -0
  161. data/lib/page-object/elements/select_list.rb +45 -0
  162. data/lib/page-object/elements/span.rb +19 -0
  163. data/lib/page-object/elements/table.rb +82 -0
  164. data/lib/page-object/elements/table_cell.rb +28 -0
  165. data/lib/page-object/elements/table_row.rb +53 -0
  166. data/lib/page-object/elements/text_area.rb +41 -0
  167. data/lib/page-object/elements/text_field.rb +45 -0
  168. data/lib/page-object/elements/unordered_list.rb +54 -0
  169. data/lib/page-object/elements/video.rb +18 -0
  170. data/lib/page-object/indexed_properties.rb +36 -0
  171. data/lib/page-object/javascript/angularjs.rb +14 -0
  172. data/lib/page-object/javascript/jquery.rb +14 -0
  173. data/lib/page-object/javascript/prototype.rb +14 -0
  174. data/lib/page-object/javascript/yui.rb +19 -0
  175. data/lib/page-object/javascript_framework_facade.rb +80 -0
  176. data/lib/page-object/loads_platform.rb +26 -0
  177. data/lib/page-object/locator_generator.rb +130 -0
  178. data/lib/page-object/nested_elements.rb +17 -0
  179. data/lib/page-object/page_factory.rb +108 -0
  180. data/lib/page-object/page_populator.rb +83 -0
  181. data/lib/page-object/platforms.rb +19 -0
  182. data/lib/page-object/platforms/lds_watir_webdriver.rb +17 -0
  183. data/lib/page-object/platforms/lds_watir_webdriver/check_box.rb +29 -0
  184. data/lib/page-object/platforms/lds_watir_webdriver/element.rb +249 -0
  185. data/lib/page-object/platforms/lds_watir_webdriver/file_field.rb +16 -0
  186. data/lib/page-object/platforms/lds_watir_webdriver/form.rb +16 -0
  187. data/lib/page-object/platforms/lds_watir_webdriver/image.rb +22 -0
  188. data/lib/page-object/platforms/lds_watir_webdriver/link.rb +15 -0
  189. data/lib/page-object/platforms/lds_watir_webdriver/ordered_list.rb +35 -0
  190. data/lib/page-object/platforms/lds_watir_webdriver/page_object.rb +1044 -0
  191. data/lib/page-object/platforms/lds_watir_webdriver/radio_button.rb +22 -0
  192. data/lib/page-object/platforms/lds_watir_webdriver/select_list.rb +74 -0
  193. data/lib/page-object/platforms/lds_watir_webdriver/table.rb +38 -0
  194. data/lib/page-object/platforms/lds_watir_webdriver/table_row.rb +37 -0
  195. data/lib/page-object/platforms/lds_watir_webdriver/text_area.rb +23 -0
  196. data/lib/page-object/platforms/lds_watir_webdriver/text_field.rb +16 -0
  197. data/lib/page-object/platforms/lds_watir_webdriver/unordered_list.rb +36 -0
  198. data/lib/page-object/platforms/selenium_webdriver.rb +17 -0
  199. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  200. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  201. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  202. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  203. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  204. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  205. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  206. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  207. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1162 -0
  208. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  209. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  210. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  211. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  212. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  213. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  214. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  215. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  216. data/lib/page-object/platforms/watir_webdriver.rb +17 -0
  217. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  218. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  219. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  220. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  221. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  222. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  223. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  224. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1044 -0
  225. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  226. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  227. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  228. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  229. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  230. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  231. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  232. data/lib/page-object/version.rb +4 -0
  233. data/lib/page-object/widgets.rb +134 -0
  234. data/page-object-lds.gemspec +33 -0
  235. data/pageobject.gems +1 -0
  236. data/spec/page-object/accessors_spec.rb +40 -0
  237. data/spec/page-object/element_locators_spec.rb +1100 -0
  238. data/spec/page-object/elements/area_spec.rb +45 -0
  239. data/spec/page-object/elements/bold_spec.rb +29 -0
  240. data/spec/page-object/elements/button_spec.rb +50 -0
  241. data/spec/page-object/elements/canvas_spec.rb +40 -0
  242. data/spec/page-object/elements/check_box_spec.rb +49 -0
  243. data/spec/page-object/elements/div_spec.rb +28 -0
  244. data/spec/page-object/elements/element_spec.rb +114 -0
  245. data/spec/page-object/elements/file_field_spec.rb +39 -0
  246. data/spec/page-object/elements/form_spec.rb +28 -0
  247. data/spec/page-object/elements/heading_spec.rb +48 -0
  248. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  249. data/spec/page-object/elements/image_spec.rb +66 -0
  250. data/spec/page-object/elements/label_spec.rb +29 -0
  251. data/spec/page-object/elements/link_spec.rb +49 -0
  252. data/spec/page-object/elements/list_item_spec.rb +29 -0
  253. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  254. data/spec/page-object/elements/option_spec.rb +11 -0
  255. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  256. data/spec/page-object/elements/paragraph_spec.rb +27 -0
  257. data/spec/page-object/elements/select_list_spec.rb +142 -0
  258. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  259. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  260. data/spec/page-object/elements/selenium_element_spec.rb +172 -0
  261. data/spec/page-object/elements/span_spec.rb +26 -0
  262. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  263. data/spec/page-object/elements/table_row_spec.rb +70 -0
  264. data/spec/page-object/elements/table_spec.rb +98 -0
  265. data/spec/page-object/elements/text_area_spec.rb +39 -0
  266. data/spec/page-object/elements/unordered_list_spec.rb +94 -0
  267. data/spec/page-object/elements/watir_element_spec.rb +141 -0
  268. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  269. data/spec/page-object/loads_platform_spec.rb +53 -0
  270. data/spec/page-object/page-object_spec.rb +413 -0
  271. data/spec/page-object/page_factory_spec.rb +238 -0
  272. data/spec/page-object/page_populator_spec.rb +122 -0
  273. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  274. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  275. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  276. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  277. data/spec/page-object/selenium_accessors_spec.rb +609 -0
  278. data/spec/page-object/watir_accessors_spec.rb +1134 -0
  279. data/spec/page-object/widget_spec.rb +226 -0
  280. data/spec/spec_helper.rb +44 -0
  281. metadata +430 -0
@@ -0,0 +1,1134 @@
1
+ require 'spec_helper'
2
+
3
+ class WatirAccessorsTestPageObject
4
+ include PageObject
5
+
6
+ page_url "http://apple.com"
7
+ expected_title "Expected Title"
8
+ expected_element :google_search
9
+ link(:google_search, :link => 'Google Search')
10
+ text_field(:first_name, :id => 'first_name')
11
+ hidden_field(:social_security_number, :id => 'ssn')
12
+ text_area(:address, :id => 'address')
13
+ select_list(:state, :id => 'state')
14
+ checkbox(:active, :id => 'is_active_id')
15
+ radio_button(:first, :id => 'first_choice')
16
+ button(:click_me, :id => 'button_submit')
17
+ div(:message, :id => 'message_id')
18
+ table(:cart, :id => 'cart_id')
19
+ cell(:total, :id => 'total')
20
+ span(:alert_span, :id => 'alert_id')
21
+ image(:logo, :id => 'logo')
22
+ form(:login, :id => 'login')
23
+ list_item(:item_one, :id => 'one')
24
+ unordered_list(:menu, :id => 'main_menu')
25
+ ordered_list(:top_five, :id => 'top')
26
+ h1(:heading1, :id => 'main_heading')
27
+ h2(:heading2, :id => 'main_heading')
28
+ h3(:heading3, :id => 'main_heading')
29
+ h4(:heading4, :id => 'main_heading')
30
+ h5(:heading5, :id => 'main_heading')
31
+ h6(:heading6, :id => 'main_heading')
32
+ paragraph(:first_para, :id => 'first')
33
+ file_field(:upload_me, :id => 'the_file')
34
+ area(:img_area, :id => 'area')
35
+ canvas(:my_canvas, :id => 'canvas_id')
36
+ audio(:acdc, :id => 'audio_id')
37
+ video(:movie, :id => 'video_id')
38
+ b(:bold,:id=>'bold')
39
+ end
40
+
41
+ class WatirBlockPageObject
42
+ include PageObject
43
+
44
+ attr_reader :value
45
+
46
+ text_field :first_name do |element|
47
+ "text_field"
48
+ end
49
+ hidden_field :secret do |element|
50
+ "hidden_field"
51
+ end
52
+ text_area :address do |element|
53
+ "text_area"
54
+ end
55
+ select_list :state do |element|
56
+ "select_list"
57
+ end
58
+ link :continue do |element|
59
+ "link"
60
+ end
61
+ checkbox :active do |element|
62
+ "checkbox"
63
+ end
64
+ radio_button :first do |element|
65
+ "radio_button"
66
+ end
67
+ button :click_me do |element|
68
+ "button"
69
+ end
70
+ div :footer do |element|
71
+ "div"
72
+ end
73
+ span :alert_span do |element|
74
+ "span"
75
+ end
76
+ table :cart do |element|
77
+ "table"
78
+ end
79
+ cell :total do |element|
80
+ "cell"
81
+ end
82
+ image :logo do |element|
83
+ "image"
84
+ end
85
+ form :login do |element|
86
+ "form"
87
+ end
88
+ list_item :item_one do |element|
89
+ "list_item"
90
+ end
91
+ unordered_list :menu do |element|
92
+ "unordered_list"
93
+ end
94
+ ordered_list :top_five do |element|
95
+ "ordered_list"
96
+ end
97
+ h1 :heading1 do |element|
98
+ "h1"
99
+ end
100
+ h2 :heading2 do |element|
101
+ "h2"
102
+ end
103
+ h3 :heading3 do |element|
104
+ "h3"
105
+ end
106
+ h4 :heading4 do |element|
107
+ "h4"
108
+ end
109
+ h5 :heading5 do |element|
110
+ "h5"
111
+ end
112
+ h6 :heading6 do |element|
113
+ "h6"
114
+ end
115
+ paragraph :first_para do |element|
116
+ "p"
117
+ end
118
+ file_field :a_file do |element|
119
+ "file_field"
120
+ end
121
+ area :img_area do |element|
122
+ "area"
123
+ end
124
+ canvas :my_canvas do |element|
125
+ "canvas"
126
+ end
127
+ audio :acdc do |element|
128
+ "audio"
129
+ end
130
+ video :movie do |element|
131
+ "video"
132
+ end
133
+ b :bold do |element|
134
+ "b"
135
+ end
136
+ end
137
+
138
+ describe PageObject::Accessors do
139
+ let(:watir_browser) { mock_watir_browser }
140
+ let(:watir_page_object) { WatirAccessorsTestPageObject.new(watir_browser) }
141
+ let(:block_page_object) { WatirBlockPageObject.new(watir_browser) }
142
+
143
+ context "goto a page" do
144
+
145
+ it "should navigate to a page when requested" do
146
+ expect(watir_browser).to receive(:goto)
147
+ WatirAccessorsTestPageObject.new(watir_browser, true)
148
+ end
149
+
150
+ it "should call a method when page_url called with a symbol" do
151
+ class SymbolPageUrl
152
+ include PageObject
153
+ page_url :custom_url
154
+
155
+ attr_reader :custom_url
156
+ def initialize(b, v, url)
157
+ @custom_url = url
158
+ super(b, v)
159
+ end
160
+ end
161
+ expect(watir_browser).to receive(:goto).with('custom')
162
+ SymbolPageUrl.new(watir_browser, true, 'custom')
163
+
164
+ expect(watir_browser).to receive(:goto).with('different')
165
+ SymbolPageUrl.new(watir_browser, true, 'different')
166
+ end
167
+
168
+ it "should not navigate to a page when not requested" do
169
+ expect(watir_browser).not_to receive(:goto)
170
+ WatirAccessorsTestPageObject.new(watir_browser)
171
+ end
172
+
173
+ it "should not navigate to a page when 'page_url' not specified" do
174
+ expect(watir_browser).not_to receive(:goto)
175
+ WatirBlockPageObject.new(watir_browser, true)
176
+ end
177
+
178
+ it "should provide the page url" do
179
+ expect(watir_page_object.page_url_value).to eql 'http://apple.com'
180
+ end
181
+ end
182
+
183
+ context "validating the page title" do
184
+ it "should validate the title" do
185
+ expect(watir_browser).to receive(:title).and_return("Expected Title")
186
+ expect(watir_page_object).to have_expected_title
187
+ end
188
+
189
+ it "should validate the by regexp" do
190
+ class RegexpExpectedTitle
191
+ include PageObject
192
+ expected_title /\w+ \w+/
193
+ end
194
+ expect(watir_browser).to receive(:title).and_return("Expected Title")
195
+ expect(RegexpExpectedTitle.new(watir_browser)).to have_expected_title
196
+ end
197
+
198
+ it "should raise error when it does not have expected title" do
199
+ expect(watir_browser).to receive(:title).once.and_return("Not Expected")
200
+ expect { watir_page_object.has_expected_title? }.to raise_error
201
+ end
202
+ end
203
+
204
+ context "validating the existence of an element" do
205
+ it "should validate an element exists" do
206
+ expect(watir_page_object).to receive(:google_search_element).and_return(watir_browser)
207
+ expect(watir_browser).to receive(:when_present).and_return(true)
208
+ watir_page_object.has_expected_element?
209
+ end
210
+
211
+ it "should handle non-existent elements gracefully" do
212
+ class FakePage
213
+ include PageObject
214
+ expected_element :foo
215
+ end
216
+ expect(FakePage.new(watir_browser)).not_to have_expected_element
217
+ end
218
+ end
219
+
220
+ context "using default identifiers" do
221
+ class WatirDefaultIdentifier
222
+ include PageObject
223
+ text_field(:default_tf)
224
+ hidden_field(:default_hf)
225
+ text_area(:default_ta)
226
+ select_list(:default_sl)
227
+ link(:default_link)
228
+ checkbox(:default_cb)
229
+ radio_button(:default_rb)
230
+ button(:default_but)
231
+ div(:default_div)
232
+ span(:default_span)
233
+ table(:default_tab)
234
+ cell(:default_cell)
235
+ image(:default_im)
236
+ form(:default_form)
237
+ list_item(:default_li)
238
+ unordered_list(:default_ul)
239
+ ordered_list(:default_ol)
240
+ h1(:default_h1)
241
+ h2(:default_h2)
242
+ h3(:default_h3)
243
+ h4(:default_h4)
244
+ h5(:default_h5)
245
+ h6(:default_h6)
246
+ paragraph(:default_p)
247
+ file_field(:default_ff)
248
+ label(:default_lab)
249
+ element(:default_el, :audio)
250
+ end
251
+
252
+ let(:default_identifier) { WatirDefaultIdentifier.new(watir_browser) }
253
+
254
+ def mock_driver_for(tag)
255
+ expect(watir_browser).to receive(tag).with(:index => 0).and_return(watir_browser)
256
+ end
257
+
258
+ it "should work with a text_field" do
259
+ mock_driver_for :text_field
260
+ default_identifier.default_tf?
261
+ end
262
+
263
+ it "should work with a hidden field" do
264
+ mock_driver_for :hidden
265
+ default_identifier.default_hf?
266
+ end
267
+
268
+ it "should work with a text area" do
269
+ mock_driver_for :textarea
270
+ default_identifier.default_ta?
271
+ end
272
+
273
+ it "should work with a select list" do
274
+ mock_driver_for :select_list
275
+ default_identifier.default_sl?
276
+ end
277
+
278
+ it "should work with a link" do
279
+ mock_driver_for :link
280
+ default_identifier.default_link?
281
+ end
282
+
283
+ it "should work with a checkbox" do
284
+ mock_driver_for :checkbox
285
+ default_identifier.default_cb?
286
+ end
287
+
288
+ it "should work with a radio button" do
289
+ mock_driver_for :radio
290
+ default_identifier.default_rb?
291
+ end
292
+
293
+ it "should work with a button" do
294
+ mock_driver_for :button
295
+ default_identifier.default_but?
296
+ end
297
+
298
+ it "should work with a div" do
299
+ mock_driver_for :div
300
+ default_identifier.default_div?
301
+ end
302
+
303
+ it "should work with a span" do
304
+ mock_driver_for :span
305
+ default_identifier.default_span?
306
+ end
307
+
308
+ it "should work for a table" do
309
+ mock_driver_for :table
310
+ expect(default_identifier.default_tab_element).not_to be_nil
311
+ end
312
+
313
+ it "should work for a cell" do
314
+ mock_driver_for :td
315
+ default_identifier.default_cell?
316
+ end
317
+
318
+ it "should work for an image" do
319
+ mock_driver_for :image
320
+ default_identifier.default_im?
321
+ end
322
+
323
+ it "should work for a form" do
324
+ mock_driver_for :form
325
+ default_identifier.default_form?
326
+ end
327
+
328
+ it "should work for a list item" do
329
+ mock_driver_for :li
330
+ default_identifier.default_li?
331
+ end
332
+
333
+ it "should work for unordered lists" do
334
+ mock_driver_for :ul
335
+ default_identifier.default_ul?
336
+ end
337
+
338
+ it "should work for ordered lists" do
339
+ mock_driver_for :ol
340
+ default_identifier.default_ol?
341
+ end
342
+
343
+ it "should work for h1" do
344
+ mock_driver_for :h1
345
+ default_identifier.default_h1?
346
+ end
347
+
348
+ it "should work for h2" do
349
+ mock_driver_for :h2
350
+ default_identifier.default_h2?
351
+ end
352
+
353
+ it "should work for h3" do
354
+ mock_driver_for :h3
355
+ default_identifier.default_h3?
356
+ end
357
+
358
+ it "should work for a h4" do
359
+ mock_driver_for :h4
360
+ default_identifier.default_h4?
361
+ end
362
+
363
+ it "should work for a h5" do
364
+ mock_driver_for :h5
365
+ default_identifier.default_h5?
366
+ end
367
+
368
+ it "should work for a h6" do
369
+ mock_driver_for :h6
370
+ default_identifier.default_h6?
371
+ end
372
+
373
+ it "should work with a paragraph" do
374
+ mock_driver_for :p
375
+ default_identifier.default_p?
376
+ end
377
+
378
+ it "should work with a file_field" do
379
+ mock_driver_for :file_field
380
+ default_identifier.default_ff?
381
+ end
382
+
383
+ it "should work with a label" do
384
+ mock_driver_for :label
385
+ default_identifier.default_lab?
386
+ end
387
+
388
+ it "should work with an element" do
389
+ mock_driver_for :audio
390
+ default_identifier.default_el?
391
+ end
392
+
393
+ end
394
+
395
+ context "link accessors" do
396
+ context "when called on a page object" do
397
+ it "should generate accessor methods" do
398
+ expect(watir_page_object).to respond_to(:google_search)
399
+ expect(watir_page_object).to respond_to(:google_search_element)
400
+ end
401
+
402
+ it "should call a block on the element method when present" do
403
+ expect(block_page_object.continue_element).to eql "link"
404
+ end
405
+ end
406
+
407
+ it "should select a link" do
408
+ expect(watir_browser).to receive_messages(link: watir_browser, click: watir_browser)
409
+ watir_page_object.google_search
410
+ end
411
+
412
+ it "should return a link element" do
413
+ expect(watir_browser).to receive(:link).and_return(watir_browser)
414
+ element = watir_page_object.google_search_element
415
+ expect(element).to be_instance_of PageObject::Elements::Link
416
+ end
417
+ end
418
+
419
+
420
+ describe "text_field accessors" do
421
+ context "when called on a page object" do
422
+ it "should generate accessor methods" do
423
+ expect(watir_page_object).to respond_to(:first_name)
424
+ expect(watir_page_object).to respond_to(:first_name=)
425
+ expect(watir_page_object).to respond_to(:first_name_element)
426
+ expect(watir_page_object).to respond_to(:first_name?)
427
+ end
428
+
429
+ it "should call a block on the element method when present" do
430
+ expect(block_page_object.first_name_element).to eql "text_field"
431
+ end
432
+ end
433
+
434
+ it "should get the text from the text field element" do
435
+ expect(watir_browser).to receive(:text_field).and_return(watir_browser)
436
+ expect(watir_browser).to receive(:value).and_return('Kim')
437
+ expect(watir_page_object.first_name).to eql 'Kim'
438
+ end
439
+
440
+ it "should set some text on a text field element" do
441
+ expect(watir_browser).to receive(:text_field).and_return(watir_browser)
442
+ expect(watir_browser).to receive(:set).with('Kim')
443
+ watir_page_object.first_name = 'Kim'
444
+ end
445
+
446
+ it "should retrieve a text field element" do
447
+ expect(watir_browser).to receive(:text_field).and_return(watir_browser)
448
+ element = watir_page_object.first_name_element
449
+ expect(element).to be_instance_of PageObject::Elements::TextField
450
+ end
451
+ end
452
+
453
+
454
+ describe "hidden field accessors" do
455
+ context "when called on a page object" do
456
+ it "should generate accessor methods" do
457
+ expect(watir_page_object).to respond_to(:social_security_number)
458
+ expect(watir_page_object).to respond_to(:social_security_number_element)
459
+ end
460
+
461
+ it "should call a block on the element method when present" do
462
+ expect(block_page_object.secret_element).to eql "hidden_field"
463
+ end
464
+ end
465
+
466
+ it "should get the text from a hidden field" do
467
+ expect(watir_browser).to receive(:hidden).and_return(watir_browser)
468
+ expect(watir_browser).to receive(:value).and_return("value")
469
+ expect(watir_page_object.social_security_number).to eql "value"
470
+ end
471
+
472
+ it "should retrieve a hidden field element" do
473
+ expect(watir_browser).to receive(:hidden).and_return(watir_browser)
474
+ element = watir_page_object.social_security_number_element
475
+ expect(element).to be_instance_of(PageObject::Elements::HiddenField)
476
+ end
477
+ end
478
+
479
+ describe "text area accessors" do
480
+ context "when called on a page object" do
481
+ it "should generate accessor methods" do
482
+ expect(watir_page_object).to respond_to(:address)
483
+ expect(watir_page_object).to respond_to(:address=)
484
+ expect(watir_page_object).to respond_to(:address_element)
485
+ end
486
+
487
+ it "should call a block on the element method when present" do
488
+ expect(block_page_object.address_element).to eql "text_area"
489
+ end
490
+ end
491
+
492
+ it "should set some text on the text area" do
493
+ expect(watir_browser).to receive(:textarea).and_return(watir_browser)
494
+ expect(watir_browser).to receive(:set).with("123 main street")
495
+ watir_page_object.address = "123 main street"
496
+ end
497
+
498
+ it "should get the text from the text area" do
499
+ expect(watir_browser).to receive(:textarea).and_return(watir_browser)
500
+ expect(watir_browser).to receive(:value).and_return("123 main street")
501
+ expect(watir_page_object.address).to eql "123 main street"
502
+ end
503
+
504
+ it "should retrieve a text area element" do
505
+ expect(watir_browser).to receive(:textarea).and_return(watir_browser)
506
+ element = watir_page_object.address_element
507
+ expect(element).to be_instance_of PageObject::Elements::TextArea
508
+ end
509
+ end
510
+
511
+ describe "select_list accessors" do
512
+ context "when called on a page object" do
513
+ it "should generate accessor methods" do
514
+ expect(watir_page_object).to respond_to :state
515
+ expect(watir_page_object).to respond_to :state=
516
+ expect(watir_page_object).to respond_to(:state_element)
517
+ end
518
+
519
+ it "should call a block on the element method when present" do
520
+ expect(block_page_object.state_element).to eql "select_list"
521
+ end
522
+ end
523
+
524
+ it "should get the current item from a select list" do
525
+ selected = "OH"
526
+ expect(selected).to receive(:selected?).and_return(selected)
527
+ expect(selected).to receive(:text).and_return("OH")
528
+ expect(watir_browser).to receive(:select_list).and_return watir_browser
529
+ expect(watir_browser).to receive(:options).and_return([selected])
530
+ expect(watir_page_object.state).to eql "OH"
531
+ end
532
+
533
+ it "should set the current item of a select list" do
534
+ expect(watir_browser).to receive(:select_list).and_return watir_browser
535
+ expect(watir_browser).to receive(:select).with("OH")
536
+ watir_page_object.state = "OH"
537
+ end
538
+
539
+ it "should retreive the select list element" do
540
+ expect(watir_browser).to receive(:select_list).and_return(watir_browser)
541
+ element = watir_page_object.state_element
542
+ expect(element).to be_instance_of PageObject::Elements::SelectList
543
+ end
544
+
545
+ it "should return list of selection options" do
546
+ option1 = double('option')
547
+ option2 = double('option')
548
+ expect(option1).to receive(:text).and_return("CA")
549
+ expect(option2).to receive(:text).and_return("OH")
550
+
551
+ select_element = double("select")
552
+ expect(select_element).to receive(:options).twice.and_return([option1, option2])
553
+ expect(watir_page_object).to receive(:state_element).and_return(select_element)
554
+
555
+ expect(watir_page_object.state_options).to eql ["CA","OH"]
556
+ end
557
+ end
558
+
559
+ describe "check_box accessors" do
560
+ context "when called on a page object" do
561
+ it "should generate accessor methods" do
562
+ expect(watir_page_object).to respond_to :check_active
563
+ expect(watir_page_object).to respond_to :uncheck_active
564
+ expect(watir_page_object).to respond_to :active_checked?
565
+ expect(watir_page_object).to respond_to :active_element
566
+ end
567
+
568
+ it "should call a block on the element method when present" do
569
+ expect(block_page_object.active_element).to eql "checkbox"
570
+ end
571
+ end
572
+
573
+ it "should check a check box element" do
574
+ expect(watir_browser).to receive(:checkbox).and_return(watir_browser)
575
+ expect(watir_browser).to receive(:set)
576
+ watir_page_object.check_active
577
+ end
578
+
579
+ it "should clear a check box element" do
580
+ expect(watir_browser).to receive(:checkbox).and_return(watir_browser)
581
+ expect(watir_browser).to receive(:clear)
582
+ watir_page_object.uncheck_active
583
+ end
584
+
585
+ it "should know if a check box element is selected" do
586
+ expect(watir_browser).to receive(:checkbox).and_return(watir_browser)
587
+ expect(watir_browser).to receive(:set?).and_return(true)
588
+ expect(watir_page_object.active_checked?).to be true
589
+ end
590
+
591
+ it "should retrieve a checkbox element" do
592
+ expect(watir_browser).to receive(:checkbox).and_return(watir_browser)
593
+ element = watir_page_object.active_element
594
+ expect(element).to be_instance_of PageObject::Elements::CheckBox
595
+ end
596
+ end
597
+
598
+
599
+ describe "radio accessors" do
600
+ context "when called on a page object" do
601
+ it "should generate accessor methods" do
602
+ expect(watir_page_object).to respond_to :select_first
603
+ expect(watir_page_object).to respond_to :first_selected?
604
+ expect(watir_page_object).to respond_to(:first_element)
605
+ end
606
+
607
+ it "should call a block on the element method when present" do
608
+ expect(block_page_object.first_element).to eql "radio_button"
609
+ end
610
+ end
611
+
612
+ it "should select a radio button" do
613
+ expect(watir_browser).to receive(:radio).and_return(watir_browser)
614
+ expect(watir_browser).to receive(:set)
615
+ watir_page_object.select_first
616
+ end
617
+
618
+ it "should determine if a radio is selected" do
619
+ expect(watir_browser).to receive(:radio).and_return(watir_browser)
620
+ expect(watir_browser).to receive(:set?)
621
+ watir_page_object.first_selected?
622
+ end
623
+
624
+ it "should retrieve a radio button element" do
625
+ expect(watir_browser).to receive(:radio).and_return(watir_browser)
626
+ element = watir_page_object.first_element
627
+ expect(element).to be_instance_of PageObject::Elements::RadioButton
628
+ end
629
+ end
630
+
631
+ describe "button accessors" do
632
+ context "when called on a page object" do
633
+ it "should generate accessor methods" do
634
+ expect(watir_page_object).to respond_to :click_me
635
+ expect(watir_page_object).to respond_to :click_me_element
636
+ end
637
+
638
+ it "should call a block on the element method when present" do
639
+ expect(block_page_object.click_me_element).to eql "button"
640
+ end
641
+ end
642
+
643
+ it "should be able to click a button" do
644
+ expect(watir_browser).to receive(:button).and_return(watir_browser)
645
+ expect(watir_browser).to receive(:click)
646
+ watir_page_object.click_me
647
+ end
648
+
649
+ it "should retrieve a button element" do
650
+ expect(watir_browser).to receive(:button).and_return(watir_browser)
651
+ element = watir_page_object.click_me_element
652
+ expect(element).to be_instance_of PageObject::Elements::Button
653
+ end
654
+ end
655
+
656
+ describe "div accessors" do
657
+ context "when called on a page object" do
658
+ it "should generate accessor methods" do
659
+ expect(watir_page_object).to respond_to(:message)
660
+ expect(watir_page_object).to respond_to(:message_element)
661
+ end
662
+
663
+ it "should call a block on the element method when present" do
664
+ expect(block_page_object.footer_element).to eql "div"
665
+ end
666
+ end
667
+
668
+ it "should retrieve the text from a div" do
669
+ expect(watir_browser).to receive(:div).and_return(watir_browser)
670
+ expect(watir_browser).to receive(:text).and_return("Message from div")
671
+ expect(watir_page_object.message).to eql "Message from div"
672
+ end
673
+
674
+ it "should retrieve the div element from the page" do
675
+ expect(watir_browser).to receive(:div).and_return(watir_browser)
676
+ element = watir_page_object.message_element
677
+ expect(element).to be_instance_of PageObject::Elements::Div
678
+ end
679
+ end
680
+
681
+ describe "span accessors" do
682
+ context "when called on a page object" do
683
+ it "should generate accessor methods" do
684
+ expect(watir_page_object).to respond_to(:alert_span)
685
+ expect(watir_page_object).to respond_to(:alert_span_element)
686
+ end
687
+
688
+ it "should call a block on the element method when present" do
689
+ expect(block_page_object.alert_span_element).to eql "span"
690
+ end
691
+ end
692
+
693
+ it "should retrieve the text from a span" do
694
+ expect(watir_browser).to receive(:span).and_return(watir_browser)
695
+ expect(watir_browser).to receive(:text).and_return("Alert")
696
+ expect(watir_page_object.alert_span).to eql "Alert"
697
+ end
698
+
699
+ it "should retrieve the span element from the page" do
700
+ expect(watir_browser).to receive(:span).and_return(watir_browser)
701
+ element = watir_page_object.alert_span_element
702
+ expect(element).to be_instance_of PageObject::Elements::Span
703
+ end
704
+ end
705
+
706
+ describe "table accessors" do
707
+ context "when called on a page object" do
708
+ it "should generate accessor methods" do
709
+ expect(watir_page_object).to respond_to(:cart)
710
+ expect(watir_page_object).to respond_to(:cart_element)
711
+ end
712
+
713
+ it "should call a block on the element method when present" do
714
+ expect(block_page_object.cart_element).to eql "table"
715
+ end
716
+ end
717
+
718
+ it "should retrieve the table element from the page" do
719
+ expect(watir_browser).to receive(:table).and_return(watir_browser)
720
+ element = watir_page_object.cart_element
721
+ expect(element).to be_instance_of PageObject::Elements::Table
722
+ end
723
+ end
724
+
725
+ describe "table cell accessors" do
726
+ context "when called on a page object" do
727
+ it "should generate accessor methods" do
728
+ expect(watir_page_object).to respond_to(:total)
729
+ expect(watir_page_object).to respond_to(:total_element)
730
+ end
731
+
732
+ it "should call a block on the element method when present" do
733
+ expect(block_page_object.total_element).to eql "cell"
734
+ end
735
+ end
736
+
737
+ it "should retrieve the text for the cell" do
738
+ expect(watir_browser).to receive(:td).and_return(watir_browser)
739
+ expect(watir_browser).to receive(:text).and_return('10.00')
740
+ expect(watir_page_object.total).to eql '10.00'
741
+ end
742
+
743
+ it "should retrieve the cell element from the page" do
744
+ expect(watir_browser).to receive(:td).and_return(watir_browser)
745
+ element = watir_page_object.total_element
746
+ expect(element).to be_instance_of PageObject::Elements::TableCell
747
+ end
748
+ end
749
+
750
+ describe "image accessors" do
751
+ context "when called on a page object" do
752
+ it "should generate accessor methods" do
753
+ expect(watir_page_object).to respond_to(:logo_element)
754
+ end
755
+
756
+ it "should call a block on the element method when present" do
757
+ expect(block_page_object.logo_element).to eql "image"
758
+ end
759
+ end
760
+
761
+ it "should retrieve the image element from the page" do
762
+ expect(watir_browser).to receive(:image).and_return(watir_browser)
763
+ element = watir_page_object.logo_element
764
+ expect(element).to be_instance_of PageObject::Elements::Image
765
+ end
766
+ end
767
+
768
+ describe "form accessors" do
769
+ context "when called on a page object" do
770
+ it "should generate accessor methods" do
771
+ expect(watir_page_object).to respond_to(:login_element)
772
+ end
773
+
774
+ it "should call a block on the element method when present" do
775
+ expect(block_page_object.login_element).to eql "form"
776
+ end
777
+ end
778
+
779
+ it "should retrieve the form element from the page" do
780
+ expect(watir_browser).to receive(:form).and_return(watir_browser)
781
+ element = watir_page_object.login_element
782
+ expect(element).to be_instance_of PageObject::Elements::Form
783
+ end
784
+ end
785
+
786
+ describe "list item accessors" do
787
+ context "when called on a page object" do
788
+ it "should generate accessor methods" do
789
+ expect(watir_page_object).to respond_to(:item_one)
790
+ expect(watir_page_object).to respond_to(:item_one_element)
791
+ end
792
+
793
+ it "should call a block on the element method when present" do
794
+ expect(block_page_object.item_one_element).to eql "list_item"
795
+ end
796
+ end
797
+
798
+ it "should retrieve the text from the list item" do
799
+ expect(watir_browser).to receive(:li).and_return(watir_browser)
800
+ expect(watir_browser).to receive(:text).and_return("value")
801
+ expect(watir_page_object.item_one).to eql "value"
802
+ end
803
+
804
+ it "should retrieve the list item element from the page" do
805
+ expect(watir_browser).to receive(:li).and_return(watir_browser)
806
+ element = watir_page_object.item_one_element
807
+ expect(element).to be_instance_of PageObject::Elements::ListItem
808
+ end
809
+ end
810
+
811
+ describe "unordered list accessors" do
812
+ context "when called on a page object" do
813
+ it "should generate accessor methods" do
814
+ expect(watir_page_object).to respond_to(:menu_element)
815
+ end
816
+
817
+ it "should call a block on the element method when present" do
818
+ expect(block_page_object.menu_element).to eql "unordered_list"
819
+ end
820
+ end
821
+
822
+ it "should retrieve the element from the page" do
823
+ expect(watir_browser).to receive(:ul).and_return(watir_browser)
824
+ element = watir_page_object.menu_element
825
+ expect(element).to be_instance_of PageObject::Elements::UnorderedList
826
+ end
827
+ end
828
+
829
+ describe "ordered list accessors" do
830
+ context "when called on a page object" do
831
+ it "should generate accessor methods" do
832
+ expect(watir_page_object).to respond_to(:top_five_element)
833
+ end
834
+
835
+ it "should call a block on the element method when present" do
836
+ expect(block_page_object.top_five_element).to eql "ordered_list"
837
+ end
838
+ end
839
+
840
+ it "should retrieve the element from the page" do
841
+ expect(watir_browser).to receive(:ol).and_return(watir_browser)
842
+ element = watir_page_object.top_five_element
843
+ expect(element).to be_instance_of PageObject::Elements::OrderedList
844
+ end
845
+ end
846
+
847
+ describe "h1 accessors" do
848
+ context "when called on a page object" do
849
+ it "should generate accessor methods" do
850
+ expect(watir_page_object).to respond_to(:heading1)
851
+ expect(watir_page_object).to respond_to(:heading1_element)
852
+ end
853
+
854
+ it "should call a block on the element method when present" do
855
+ expect(block_page_object.heading1_element).to eql "h1"
856
+ end
857
+ end
858
+
859
+ it "should retrieve the text from the h1" do
860
+ expect(watir_browser).to receive(:h1).and_return(watir_browser)
861
+ expect(watir_browser).to receive(:text).and_return("value")
862
+ expect(watir_page_object.heading1).to eql "value"
863
+ end
864
+
865
+ it "should retrieve the element from the page" do
866
+ expect(watir_browser).to receive(:h1).and_return(watir_browser)
867
+ element = watir_page_object.heading1_element
868
+ expect(element).to be_instance_of PageObject::Elements::Heading
869
+ end
870
+ end
871
+
872
+ describe "h2 accessors" do
873
+ context "when called on a page object" do
874
+ it "should generate accessor methods" do
875
+ expect(watir_page_object).to respond_to(:heading2)
876
+ expect(watir_page_object).to respond_to(:heading2_element)
877
+ end
878
+
879
+ it "should call a block on the element method when present" do
880
+ expect(block_page_object.heading2_element).to eql "h2"
881
+ end
882
+ end
883
+
884
+ it "should retrieve the text from the h2" do
885
+ expect(watir_browser).to receive(:h2).and_return(watir_browser)
886
+ expect(watir_browser).to receive(:text).and_return("value")
887
+ expect(watir_page_object.heading2).to eql "value"
888
+ end
889
+
890
+ it "should retrieve the element from the page" do
891
+ expect(watir_browser).to receive(:h2).and_return(watir_browser)
892
+ element = watir_page_object.heading2_element
893
+ expect(element).to be_instance_of PageObject::Elements::Heading
894
+ end
895
+ end
896
+
897
+ describe "h3 accessors" do
898
+ context "when called on a page object" do
899
+ it "should generate accessor methods" do
900
+ expect(watir_page_object).to respond_to(:heading3)
901
+ expect(watir_page_object).to respond_to(:heading3_element)
902
+ end
903
+
904
+ it "should call a block on the element method when present" do
905
+ expect(block_page_object.heading3_element).to eql "h3"
906
+ end
907
+ end
908
+
909
+ it "should retrieve the text from the h3" do
910
+ expect(watir_browser).to receive(:h3).and_return(watir_browser)
911
+ expect(watir_browser).to receive(:text).and_return("value")
912
+ expect(watir_page_object.heading3).to eql "value"
913
+ end
914
+
915
+ it "should retrieve the element from the page" do
916
+ expect(watir_browser).to receive(:h3).and_return(watir_browser)
917
+ element = watir_page_object.heading3_element
918
+ expect(element).to be_instance_of PageObject::Elements::Heading
919
+ end
920
+ end
921
+
922
+ describe "h4 accessors" do
923
+ context "when called on a page object" do
924
+ it "should generate accessor methods" do
925
+ expect(watir_page_object).to respond_to(:heading4)
926
+ expect(watir_page_object).to respond_to(:heading4_element)
927
+ end
928
+
929
+ it "should call a block on the element method when present" do
930
+ expect(block_page_object.heading4_element).to eql "h4"
931
+ end
932
+ end
933
+
934
+ it "should retrieve the text from the h4" do
935
+ expect(watir_browser).to receive(:h4).and_return(watir_browser)
936
+ expect(watir_browser).to receive(:text).and_return("value")
937
+ expect(watir_page_object.heading4).to eql "value"
938
+ end
939
+
940
+ it "should retrieve the element from the page" do
941
+ expect(watir_browser).to receive(:h4).and_return(watir_browser)
942
+ element = watir_page_object.heading4_element
943
+ expect(element).to be_instance_of PageObject::Elements::Heading
944
+ end
945
+ end
946
+
947
+ describe "h5 accessors" do
948
+ context "when called on a page object" do
949
+ it "should generate accessor methods" do
950
+ expect(watir_page_object).to respond_to(:heading5)
951
+ expect(watir_page_object).to respond_to(:heading5_element)
952
+ end
953
+
954
+ it "should call a block on the element method when present" do
955
+ expect(block_page_object.heading5_element).to eql "h5"
956
+ end
957
+ end
958
+
959
+ it "should retrieve the text from the h5" do
960
+ expect(watir_browser).to receive(:h5).and_return(watir_browser)
961
+ expect(watir_browser).to receive(:text).and_return("value")
962
+ expect(watir_page_object.heading5).to eql "value"
963
+ end
964
+
965
+ it "should retrieve the element from the page" do
966
+ expect(watir_browser).to receive(:h5).and_return(watir_browser)
967
+ element = watir_page_object.heading5_element
968
+ expect(element).to be_instance_of PageObject::Elements::Heading
969
+ end
970
+ end
971
+
972
+ describe "h6 accessors" do
973
+ context "when called on a page object" do
974
+ it "should generate accessor methods" do
975
+ expect(watir_page_object).to respond_to(:heading6)
976
+ expect(watir_page_object).to respond_to(:heading6_element)
977
+ end
978
+
979
+ it "should call a block on the element method when present" do
980
+ expect(block_page_object.heading6_element).to eql "h6"
981
+ end
982
+ end
983
+
984
+ it "should retrieve the text from the h6" do
985
+ expect(watir_browser).to receive(:h6).and_return(watir_browser)
986
+ expect(watir_browser).to receive(:text).and_return("value")
987
+ expect(watir_page_object.heading6).to eql "value"
988
+ end
989
+
990
+ it "should retrieve the element from the page" do
991
+ expect(watir_browser).to receive(:h6).and_return(watir_browser)
992
+ element = watir_page_object.heading6_element
993
+ expect(element).to be_instance_of PageObject::Elements::Heading
994
+ end
995
+ end
996
+
997
+
998
+ describe "p accessors" do
999
+ context "when called on a page object" do
1000
+ it "should generate accessor methods" do
1001
+ expect(watir_page_object).to respond_to(:first_para)
1002
+ expect(watir_page_object).to respond_to(:first_para_element)
1003
+ end
1004
+
1005
+ it "should call a block on the element method when present" do
1006
+ expect(block_page_object.first_para_element).to eql "p"
1007
+ end
1008
+ end
1009
+
1010
+ it "should retrieve the text from the p" do
1011
+ expect(watir_browser).to receive(:p).and_return(watir_browser)
1012
+ expect(watir_browser).to receive(:text).and_return("value")
1013
+ expect(watir_page_object.first_para).to eql "value"
1014
+ end
1015
+
1016
+ it "should retrieve the element from the page" do
1017
+ expect(watir_browser).to receive(:p).and_return(watir_browser)
1018
+ element = watir_page_object.first_para_element
1019
+ expect(element).to be_instance_of PageObject::Elements::Paragraph
1020
+ end
1021
+ end
1022
+
1023
+ describe "file_field accessors" do
1024
+ context "when called on a page object" do
1025
+ it "should generate accessor methods" do
1026
+ expect(watir_page_object).to respond_to(:upload_me=)
1027
+ expect(watir_page_object).to respond_to(:upload_me_element)
1028
+ end
1029
+
1030
+ it "should call a block on the element method when present" do
1031
+ expect(block_page_object.a_file_element).to eql "file_field"
1032
+ end
1033
+ end
1034
+
1035
+ it "should set the file name" do
1036
+ expect(watir_browser).to receive(:file_field).and_return(watir_browser)
1037
+ expect(watir_browser).to receive(:set).with('some_file')
1038
+ watir_page_object.upload_me = 'some_file'
1039
+ end
1040
+
1041
+ it "should retrieve a text field element" do
1042
+ expect(watir_browser).to receive(:file_field).and_return(watir_browser)
1043
+ element = watir_page_object.upload_me_element
1044
+ expect(element).to be_instance_of PageObject::Elements::FileField
1045
+ end
1046
+ end
1047
+
1048
+ describe "area accessors" do
1049
+ context "when called on a page object" do
1050
+ it "should generate accessor methods" do
1051
+ expect(watir_page_object).to respond_to(:img_area)
1052
+ expect(watir_page_object).to respond_to(:img_area_element)
1053
+ end
1054
+
1055
+ it "should call a block on the element method when present" do
1056
+ expect(block_page_object.img_area_element).to eql "area"
1057
+ end
1058
+ end
1059
+
1060
+ it "should click on the area" do
1061
+ expect(watir_browser).to receive(:area).and_return(watir_browser)
1062
+ expect(watir_browser).to receive(:click)
1063
+ watir_page_object.img_area
1064
+ end
1065
+
1066
+ it "should retrieve the element from the page" do
1067
+ expect(watir_browser).to receive(:area).and_return(watir_browser)
1068
+ element = watir_page_object.img_area_element
1069
+ expect(element).to be_instance_of PageObject::Elements::Area
1070
+ end
1071
+ end
1072
+
1073
+ describe "canvas accessors" do
1074
+ context "when called on a page object" do
1075
+ it "should generate accessor methods" do
1076
+ expect(watir_page_object).to respond_to(:my_canvas_element)
1077
+ end
1078
+
1079
+ it "should call a block on the element method when present" do
1080
+ expect(block_page_object.my_canvas_element).to eql "canvas"
1081
+ end
1082
+ end
1083
+ end
1084
+
1085
+ describe "audio accessors" do
1086
+ context "when called on a page object" do
1087
+ it "should generate accessor methods" do
1088
+ expect(watir_page_object).to respond_to(:acdc_element)
1089
+ end
1090
+
1091
+ it "should call a block on the element method when present" do
1092
+ expect(block_page_object.acdc_element).to eql "audio"
1093
+ end
1094
+ end
1095
+ end
1096
+
1097
+ describe "video accessors" do
1098
+ context "when called on a page object" do
1099
+ it "should generate accessor methods" do
1100
+ expect(watir_page_object).to respond_to(:movie_element)
1101
+ end
1102
+
1103
+ it "should call a block on the element method when present" do
1104
+ expect(block_page_object.movie_element).to eql "video"
1105
+ end
1106
+ end
1107
+ end
1108
+
1109
+ describe "b accessors" do
1110
+ context "when called on a page object" do
1111
+ it "should generate accessor methods" do
1112
+ expect(watir_page_object).to respond_to(:bold)
1113
+ expect(watir_page_object).to respond_to(:bold_element)
1114
+ end
1115
+
1116
+ it "should call a block on the element method when present" do
1117
+ expect(block_page_object.bold_element).to eql "b"
1118
+ end
1119
+ end
1120
+
1121
+ it "should retrieve the text from the b" do
1122
+ expect(watir_browser).to receive(:b).and_return(watir_browser)
1123
+ expect(watir_browser).to receive(:text).and_return("value")
1124
+ expect(watir_page_object.bold).to eql "value"
1125
+ end
1126
+
1127
+ it "should retrieve the element from the page" do
1128
+ expect(watir_browser).to receive(:b).and_return(watir_browser)
1129
+ element = watir_page_object.bold_element
1130
+ expect(element).to be_instance_of PageObject::Elements::Bold
1131
+ end
1132
+ end
1133
+
1134
+ end