meeane-page-object 0.1.8

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 (262) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -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 +790 -0
  8. data/Gemfile +13 -0
  9. data/Guardfile +20 -0
  10. data/LICENSE +20 -0
  11. data/README.md +141 -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/button.feature +87 -0
  18. data/features/canvas.feature +37 -0
  19. data/features/check_box.feature +55 -0
  20. data/features/div.feature +45 -0
  21. data/features/element.feature +322 -0
  22. data/features/file_field.feature +40 -0
  23. data/features/form.feature +43 -0
  24. data/features/frames.feature +75 -0
  25. data/features/generic_elements.feature +29 -0
  26. data/features/gxt_table_extension.feature +24 -0
  27. data/features/headings.feature +97 -0
  28. data/features/hidden_field.feature +45 -0
  29. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  30. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  31. data/features/html/async.html +36 -0
  32. data/features/html/double_click.html +13 -0
  33. data/features/html/failure.html +8 -0
  34. data/features/html/frame_1.html +18 -0
  35. data/features/html/frame_2.html +16 -0
  36. data/features/html/frame_3.html +14 -0
  37. data/features/html/frames.html +12 -0
  38. data/features/html/hover.html +12 -0
  39. data/features/html/iframes.html +12 -0
  40. data/features/html/images/circle.png +0 -0
  41. data/features/html/images/img_pulpit.jpg +0 -0
  42. data/features/html/images/submit.gif +0 -0
  43. data/features/html/indexed_property.html +52 -0
  44. data/features/html/modal.html +17 -0
  45. data/features/html/modal_1.html +38 -0
  46. data/features/html/modal_2.html +27 -0
  47. data/features/html/movie.mp4 +0 -0
  48. data/features/html/movie.ogg +0 -0
  49. data/features/html/multi_elements.html +144 -0
  50. data/features/html/nested_elements.html +77 -0
  51. data/features/html/nested_frame_1.html +1 -0
  52. data/features/html/nested_frame_2.html +11 -0
  53. data/features/html/nested_frame_3.html +14 -0
  54. data/features/html/nested_frames.html +10 -0
  55. data/features/html/planets.gif +0 -0
  56. data/features/html/static_elements.html +206 -0
  57. data/features/html/success.html +8 -0
  58. data/features/html/sun.gif +0 -0
  59. data/features/html/sun.html +7 -0
  60. data/features/image.feature +50 -0
  61. data/features/indexed_property.feature +98 -0
  62. data/features/javascript.feature +28 -0
  63. data/features/label.feature +46 -0
  64. data/features/link.feature +52 -0
  65. data/features/list_item.feature +36 -0
  66. data/features/modal_dialog.feature +15 -0
  67. data/features/multi_elements.feature +486 -0
  68. data/features/nested_elements.feature +117 -0
  69. data/features/ordered_list.feature +56 -0
  70. data/features/page_level_actions.feature +90 -0
  71. data/features/paragraph.feature +35 -0
  72. data/features/radio_button.feature +58 -0
  73. data/features/radio_button_group.feature +29 -0
  74. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  75. data/features/sample-app/public/jquery.html +30 -0
  76. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  77. data/features/sample-app/public/prototype.html +35 -0
  78. data/features/sample-app/sample_app.rb +35 -0
  79. data/features/select_list.feature +86 -0
  80. data/features/span.feature +37 -0
  81. data/features/step_definitions/accessor_steps.rb +60 -0
  82. data/features/step_definitions/area_steps.rb +19 -0
  83. data/features/step_definitions/async_steps.rb +83 -0
  84. data/features/step_definitions/audio_steps.rb +27 -0
  85. data/features/step_definitions/button_steps.rb +43 -0
  86. data/features/step_definitions/canvas_steps.rb +15 -0
  87. data/features/step_definitions/check_box_steps.rb +35 -0
  88. data/features/step_definitions/div_steps.rb +19 -0
  89. data/features/step_definitions/element_steps.rb +266 -0
  90. data/features/step_definitions/file_field_steps.rb +19 -0
  91. data/features/step_definitions/form_steps.rb +19 -0
  92. data/features/step_definitions/frames_steps.rb +159 -0
  93. data/features/step_definitions/generic_element_steps.rb +31 -0
  94. data/features/step_definitions/gxt_table_steps.rb +58 -0
  95. data/features/step_definitions/headings_steps.rb +12 -0
  96. data/features/step_definitions/hidden_field_steps.rb +27 -0
  97. data/features/step_definitions/image_steps.rb +27 -0
  98. data/features/step_definitions/indexed_property_steps.rb +129 -0
  99. data/features/step_definitions/javascript_steps.rb +53 -0
  100. data/features/step_definitions/label_steps.rb +19 -0
  101. data/features/step_definitions/link_steps.rb +40 -0
  102. data/features/step_definitions/list_item_steps.rb +19 -0
  103. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  104. data/features/step_definitions/multi_elements_steps.rb +528 -0
  105. data/features/step_definitions/nested_elements_steps.rb +212 -0
  106. data/features/step_definitions/ordered_list_steps.rb +23 -0
  107. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  108. data/features/step_definitions/page_traversal_steps.rb +4 -0
  109. data/features/step_definitions/paragraph_steps.rb +28 -0
  110. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  111. data/features/step_definitions/radio_button_steps.rb +27 -0
  112. data/features/step_definitions/select_list_steps.rb +65 -0
  113. data/features/step_definitions/span_steps.rb +19 -0
  114. data/features/step_definitions/table_cell_steps.rb +15 -0
  115. data/features/step_definitions/table_steps.rb +66 -0
  116. data/features/step_definitions/text_area_steps.rb +35 -0
  117. data/features/step_definitions/text_field_steps.rb +35 -0
  118. data/features/step_definitions/unordered_list_steps.rb +23 -0
  119. data/features/step_definitions/video_steps.rb +45 -0
  120. data/features/support/ajax_text_environment.rb +26 -0
  121. data/features/support/env.rb +8 -0
  122. data/features/support/hooks.rb +8 -0
  123. data/features/support/page.rb +364 -0
  124. data/features/support/persistent_browser.rb +70 -0
  125. data/features/support/targets/firefox14_osx.rb +6 -0
  126. data/features/support/targets/firefox14_windows7.rb +6 -0
  127. data/features/support/url_helper.rb +57 -0
  128. data/features/table.feature +114 -0
  129. data/features/table_cell.feature +45 -0
  130. data/features/text_area.feature +51 -0
  131. data/features/text_field.feature +70 -0
  132. data/features/unordered_list.feature +56 -0
  133. data/features/video.feature +73 -0
  134. data/lib/page-object/accessors.rb +1313 -0
  135. data/lib/page-object/core_ext/string.rb +5 -0
  136. data/lib/page-object/element_locators.rb +21 -0
  137. data/lib/page-object/elements/area.rb +31 -0
  138. data/lib/page-object/elements/audio.rb +9 -0
  139. data/lib/page-object/elements/button.rb +35 -0
  140. data/lib/page-object/elements/canvas.rb +23 -0
  141. data/lib/page-object/elements/check_box.rb +37 -0
  142. data/lib/page-object/elements/div.rb +19 -0
  143. data/lib/page-object/elements/element.rb +226 -0
  144. data/lib/page-object/elements/file_field.rb +38 -0
  145. data/lib/page-object/elements/form.rb +36 -0
  146. data/lib/page-object/elements/heading.rb +15 -0
  147. data/lib/page-object/elements/hidden_field.rb +22 -0
  148. data/lib/page-object/elements/image.rb +36 -0
  149. data/lib/page-object/elements/label.rb +36 -0
  150. data/lib/page-object/elements/link.rb +46 -0
  151. data/lib/page-object/elements/list_item.rb +19 -0
  152. data/lib/page-object/elements/media.rb +45 -0
  153. data/lib/page-object/elements/option.rb +10 -0
  154. data/lib/page-object/elements/ordered_list.rb +50 -0
  155. data/lib/page-object/elements/paragraph.rb +9 -0
  156. data/lib/page-object/elements/radio_button.rb +37 -0
  157. data/lib/page-object/elements/select_list.rb +42 -0
  158. data/lib/page-object/elements/span.rb +19 -0
  159. data/lib/page-object/elements/table.rb +68 -0
  160. data/lib/page-object/elements/table_cell.rb +28 -0
  161. data/lib/page-object/elements/table_row.rb +50 -0
  162. data/lib/page-object/elements/text_area.rb +38 -0
  163. data/lib/page-object/elements/text_field.rb +42 -0
  164. data/lib/page-object/elements/unordered_list.rb +51 -0
  165. data/lib/page-object/elements/video.rb +18 -0
  166. data/lib/page-object/elements.rb +59 -0
  167. data/lib/page-object/indexed_properties.rb +36 -0
  168. data/lib/page-object/javascript/jquery.rb +14 -0
  169. data/lib/page-object/javascript/prototype.rb +14 -0
  170. data/lib/page-object/javascript/yui.rb +19 -0
  171. data/lib/page-object/javascript_framework_facade.rb +78 -0
  172. data/lib/page-object/loads_platform.rb +26 -0
  173. data/lib/page-object/locator_generator.rb +129 -0
  174. data/lib/page-object/nested_elements.rb +17 -0
  175. data/lib/page-object/page_factory.rb +108 -0
  176. data/lib/page-object/page_populator.rb +92 -0
  177. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  178. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  179. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  180. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  181. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  182. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  183. data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -0
  184. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  185. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  186. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -0
  187. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  188. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  189. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  190. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  191. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  192. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  193. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  194. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  195. data/lib/page-object/platforms/selenium_webdriver.rb +18 -0
  196. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  197. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  198. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  199. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  200. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  201. data/lib/page-object/platforms/watir_webdriver/label.rb +17 -0
  202. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  203. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  204. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -0
  205. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  206. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  207. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  208. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  209. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  210. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  211. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  212. data/lib/page-object/platforms/watir_webdriver.rb +18 -0
  213. data/lib/page-object/platforms.rb +18 -0
  214. data/lib/page-object/version.rb +4 -0
  215. data/lib/page-object/widgets.rb +133 -0
  216. data/lib/page-object.rb +408 -0
  217. data/meeane-page-object.gemspec +32 -0
  218. data/pageobject.gems +1 -0
  219. data/spec/page-object/element_locators_spec.rb +1065 -0
  220. data/spec/page-object/elements/area_spec.rb +45 -0
  221. data/spec/page-object/elements/button_spec.rb +50 -0
  222. data/spec/page-object/elements/canvas_spec.rb +40 -0
  223. data/spec/page-object/elements/check_box_spec.rb +49 -0
  224. data/spec/page-object/elements/div_spec.rb +28 -0
  225. data/spec/page-object/elements/element_spec.rb +114 -0
  226. data/spec/page-object/elements/file_field_spec.rb +39 -0
  227. data/spec/page-object/elements/form_spec.rb +28 -0
  228. data/spec/page-object/elements/heading_spec.rb +48 -0
  229. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  230. data/spec/page-object/elements/image_spec.rb +66 -0
  231. data/spec/page-object/elements/label_spec.rb +29 -0
  232. data/spec/page-object/elements/link_spec.rb +49 -0
  233. data/spec/page-object/elements/list_item_spec.rb +28 -0
  234. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  235. data/spec/page-object/elements/option_spec.rb +11 -0
  236. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  237. data/spec/page-object/elements/paragraph_spec.rb +28 -0
  238. data/spec/page-object/elements/select_list_spec.rb +142 -0
  239. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  240. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  241. data/spec/page-object/elements/selenium_element_spec.rb +172 -0
  242. data/spec/page-object/elements/span_spec.rb +26 -0
  243. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  244. data/spec/page-object/elements/table_row_spec.rb +70 -0
  245. data/spec/page-object/elements/table_spec.rb +98 -0
  246. data/spec/page-object/elements/text_area_spec.rb +39 -0
  247. data/spec/page-object/elements/unordered_list_spec.rb +95 -0
  248. data/spec/page-object/elements/watir_element_spec.rb +142 -0
  249. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  250. data/spec/page-object/loads_platform_spec.rb +53 -0
  251. data/spec/page-object/page-object_spec.rb +405 -0
  252. data/spec/page-object/page_factory_spec.rb +256 -0
  253. data/spec/page-object/page_populator_spec.rb +122 -0
  254. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  255. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  256. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  257. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  258. data/spec/page-object/selenium_accessors_spec.rb +589 -0
  259. data/spec/page-object/watir_accessors_spec.rb +1107 -0
  260. data/spec/page-object/widget_spec.rb +226 -0
  261. data/spec/spec_helper.rb +44 -0
  262. metadata +404 -0
@@ -0,0 +1,322 @@
1
+ Feature: Elements
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Clear an element
7
+ When I type "abcDEF" into the text field
8
+ Then the text field should contain "abcDEF"
9
+ When I clear the text field
10
+ Then the text field should contain ""
11
+
12
+ Scenario: Elements enabled?
13
+ When I check an enabled button
14
+ Then it should know it is enabled
15
+ And it should know that is it not disabled
16
+ When I check a disabled button
17
+ Then it should know it is not enabled
18
+ And it should know that it is disabled
19
+
20
+ Scenario: Setting focus and finding the element with focus
21
+ When I set the focus to the test text_field
22
+ Then I should know that the text_field has the focus
23
+
24
+ Scenario: Link element methods
25
+ When I retrieve a link element
26
+ Then I should know it exists
27
+ And I should know it is visible
28
+ And I should know the text is "Google Search"
29
+ And I should know the html is "<a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>"
30
+ And I should know it is equal to itself
31
+ And I should know the tag name is "a"
32
+ And I should know the attribute "readonly" is false
33
+ And I should know the attribute "href" includes "success.html"
34
+ And I should be able to click it
35
+
36
+ @watir_only
37
+ Scenario: Link element methods for watir
38
+ When I retrieve a link element
39
+ Then I should know the value is ""
40
+
41
+
42
+ Scenario: Button element methods
43
+ When I retrieve a button element
44
+ Then I should know it exists
45
+ And I should know it is visible
46
+ And I should know the value is "Click Me"
47
+ And I should know it is equal to itself
48
+ And I should know the tag name is "input"
49
+ And I should know the attribute "readonly" is false
50
+ And I should be able to click it
51
+
52
+ @watir_only
53
+ Scenario: Button element methods for watir
54
+ When I retrieve a button element
55
+ Then I should know the text is "Click Me"
56
+
57
+ Scenario: Check Box element methods
58
+ When I retrieve a check box element
59
+ Then I should know it exists
60
+ And I should know it is visible
61
+ And I should know the text is ""
62
+ And I should know the value is "1"
63
+ And I should know it is equal to itself
64
+ And I should know the tag name is "input"
65
+ And I should know the attribute "readonly" is false
66
+ And I should be able to click it
67
+
68
+ Scenario: Div element methods
69
+ When I retrieve the div element
70
+ Then I should know it exists
71
+ And I should know it is visible
72
+ And I should know the text is "page-object rocks!"
73
+ And I should know it is equal to itself
74
+ And I should know the tag name is "div"
75
+ And I should know the attribute "readonly" is false
76
+ And I should be able to click it
77
+
78
+ @watir_only
79
+ Scenario: Div element methods for watir
80
+ When I retrieve the div element
81
+ Then I should know the value is ""
82
+
83
+ @selenium_only
84
+ Scenario: Div element methods for selenium
85
+ When I retrieve the div element
86
+ Then I should know the value is nil
87
+
88
+ Scenario: Radio Button element methods
89
+ When I retrieve a radio button
90
+ Then I should know it exists
91
+ And I should know it is visible
92
+ And I should know the text is ""
93
+ And I should know the value is "Milk"
94
+ And I should know it is equal to itself
95
+ And I should know the tag name is "input"
96
+ And I should know the attribute "readonly" is false
97
+ And I should be able to click it
98
+
99
+ Scenario: Select List element methods
100
+ When I retrieve a select list
101
+ Then I should know it exists
102
+ And I should know it is visible
103
+ And I should know the text includes "Test 1"
104
+ And I should know the value is "option1"
105
+ And I should know it is equal to itself
106
+ And I should know the tag name is "select"
107
+ And I should know the attribute "readonly" is false
108
+ And I should be able to click it
109
+
110
+ Scenario: Table element methods
111
+ When I retrieve a table element
112
+ Then I should know it is visible
113
+ And I should know the text includes "Data1"
114
+ And I should know it is equal to itself
115
+ And I should know the tag name is "table"
116
+ And I should know the attribute "readonly" is false
117
+ And I should be able to click it
118
+
119
+ @watir_only
120
+ Scenario: Table element methods in watir
121
+ When I retrieve a table element
122
+ Then I should know it exists
123
+ And I should know the value is ""
124
+
125
+ @selenium_only
126
+ Scenario: Table element methods in selenium
127
+ When I retrieve a table element
128
+ Then I should know the value is nil
129
+
130
+ Scenario: Table Cell element methods
131
+ When I retrieve table cell
132
+ Then I should know it exists
133
+ And I should know it is visible
134
+ And I should know the text includes "Data4"
135
+ And I should know it is equal to itself
136
+ And I should know the tag name is "td"
137
+ And I should know the attribute "readonly" is false
138
+ And I should be able to click it
139
+
140
+ @watir_only
141
+ Scenario: Table Cell element methods in watir
142
+ When I retrieve table cell
143
+ Then I should know the value is ""
144
+
145
+ @selenium_only
146
+ Scenario: Table Cell element methods in selenium
147
+ When I retrieve table cell
148
+ Then I should know the value is nil
149
+
150
+ Scenario: Text Field element methods
151
+ When I retrieve a text field
152
+ Then I should know it exists
153
+ And I should know it is visible
154
+ And I should know the text includes ""
155
+ And I should know the value is ""
156
+ And I should know it is equal to itself
157
+ And I should know the tag name is "input"
158
+ And I should know the attribute "readonly" is false
159
+ And I should be able to click it
160
+
161
+ Scenario: Text Area element methods
162
+ When I retrieve the text area
163
+ Then I should know it exists
164
+ And I should know it is visible
165
+ And I should know the text includes ""
166
+ And I should know the value is ""
167
+ And I should know it is equal to itself
168
+ And I should know the tag name is "textarea"
169
+ And I should know the attribute "readonly" is false
170
+ And I should be able to click it
171
+
172
+ Scenario: Image element methods
173
+ When I get the image element
174
+ Then I should know it exists
175
+ And I should know it is visible
176
+ And I should know the text includes ""
177
+ And I should know it is equal to itself
178
+ And I should know the tag name is "img"
179
+ And I should know the attribute "readonly" is false
180
+ And I should be able to click it
181
+
182
+ @watir_only
183
+ Scenario: Image element methods in watir
184
+ When I get the image element
185
+ Then I should know the value is ""
186
+
187
+ @selenium_only
188
+ Scenario: Image element methods in selenium
189
+ When I get the image element
190
+ Then I should know the value is nil
191
+
192
+ Scenario: Hidden Field element methods
193
+ When I retrieve the hidden field element
194
+ Then I should know it exists
195
+ And I should know it is not visible
196
+ And I should know the text includes ""
197
+ And I should know the value is "12345"
198
+ And I should know it is equal to itself
199
+ And I should know the tag name is "input"
200
+ And I should know the attribute "readonly" is false
201
+
202
+ Scenario: Form element methods
203
+ When I locate the form
204
+ Then I should know it exists
205
+ And I should know it is visible
206
+ And I should know the text includes ""
207
+ And I should know it is equal to itself
208
+ And I should know the tag name is "form"
209
+ And I should know the attribute "readonly" is false
210
+
211
+ @watir_only
212
+ Scenario: Form element methods in watir
213
+ When I locate the form
214
+ Then I should know the value is ""
215
+
216
+ @selenium_only
217
+ Scenario: Form element methods in selenium
218
+ When I locate the form
219
+ Then I should know the value is nil
220
+
221
+ Scenario: List item element methods
222
+ When I retrieve a list item element
223
+ Then I should know it exists
224
+ And I should know it is visible
225
+ And I should know the text is "Item One"
226
+ And I should know it is equal to itself
227
+ And I should know the tag name is "li"
228
+ And I should know the attribute "readonly" is false
229
+ And I should be able to click it
230
+
231
+ Scenario: Unordered list element methods
232
+ When I retrieve an unordered list element
233
+ Then I should know it exists
234
+ And I should know it is visible
235
+ And I should know the text includes "Item One"
236
+ And I should know the text includes "Item Two"
237
+ And I should know the text includes "Item Three"
238
+ And I should know it is equal to itself
239
+ And I should know the tag name is "ul"
240
+ And I should know the attribute "readonly" is false
241
+ And I should be able to click it
242
+
243
+ Scenario: Ordered list element methods
244
+ When I retrieve an ordered list element
245
+ Then I should know it exists
246
+ And I should know it is visible
247
+ And I should know the text includes "Number One"
248
+ And I should know the text includes "Number Two"
249
+ And I should know the text includes "Number Three"
250
+ And I should know it is equal to itself
251
+ And I should know the tag name is "ol"
252
+ And I should know the attribute "readonly" is false
253
+ And I should be able to click it
254
+
255
+ Scenario: Heading element methods
256
+ When I retrieve a heading element
257
+ Then I should know it exists
258
+ And I should know it is visible
259
+ And I should know the text is "h1's are cool"
260
+ And I should know it is equal to itself
261
+ And I should know the tag name is "h1"
262
+ And I should know the attribute "readonly" is false
263
+ And I should be able to click it
264
+
265
+ Scenario: Firing an event
266
+ When I set the focus to the test text_field using the onfocus event
267
+ Then I should see the onfocus text "changed by onfocus event"
268
+
269
+ Scenario: Hovering over an element
270
+ Given I am on the hover page
271
+ When I hover over the hello link
272
+ Then the font size should be "20px"
273
+
274
+ Scenario: Setting focus on an element
275
+ When I set the focus on the test text_field
276
+ Then I should see the onfocus text "changed by onfocus event"
277
+
278
+ Scenario: Finding a parent element
279
+ When I find the child link element
280
+ And ask for the parent element
281
+ Then I should have a div parent
282
+
283
+ Scenario: Flashing an element
284
+ When I retrieve a button element
285
+ Then I should be able to flash it
286
+
287
+ Scenario: Getting an element's id
288
+ When I retrieve a button element
289
+ Then I should know its id is "button_id"
290
+
291
+ Scenario: Double Clicking
292
+ Given I am on the Double Click page
293
+ When I double click the button
294
+ Then the paragraph should read "Double Click Received"
295
+
296
+ Scenario: Scrolling so an element is visible
297
+ When I retrieve a heading element
298
+ And I scroll the heading element into view
299
+ Then the heading element should be visible
300
+
301
+ @watir_only
302
+ Scenario: Expanding how we find elements to include non-standard locators
303
+ When I retrieve a div using data-entity
304
+ Then I should know it exists
305
+ And I should know it is visible
306
+ And I should know the text is "found using data-entity"
307
+
308
+
309
+ Scenario: Accessing an HTML 5 element using the declaration
310
+ When I retrieve the figure using the declaration
311
+ Then I should see the figure contains an image
312
+
313
+ Scenario: Accessing an HTML 5 element using the element method
314
+ When I retrieve the figure using the element
315
+ Then I should see the figure contains an image
316
+
317
+ Scenario: Getting the class name for an element
318
+ When I search for the paragraph by "id"
319
+ Then I should know the paragraph class is "p_class"
320
+
321
+ Scenario: Selecting the text for an element
322
+ Then I should be able to select "Elements" from the paragraph
@@ -0,0 +1,40 @@
1
+ Feature: File Field
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Setting the value on the file field
7
+ When I set the file field to the step definition file
8
+ Then its' value should equal that file
9
+
10
+ Scenario Outline: Locating file fields on the Page
11
+ When I search for the file field by "<search_by>"
12
+ Then I should be able to set the file field
13
+
14
+ Examples:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | title |
21
+ | index |
22
+ | label |
23
+
24
+ @selenium_only
25
+ Scenario Outline: Locating file fields on the Page
26
+ When I search for the file field by "<search_by>"
27
+ Then I should be able to set the file field
28
+
29
+ Scenarios:
30
+ | search_by |
31
+ | css |
32
+
33
+ Scenario Outline: Locating file fields using multiple parameters
34
+ When I search for the file field by "<param1>" and "<param2>"
35
+ Then I should be able to set the file field
36
+
37
+ Examples:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
@@ -0,0 +1,43 @@
1
+ Feature: Form
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Submitting a form
7
+ When I locate the form by "id"
8
+ Then I should be able to submit the form
9
+
10
+ Scenario Outline: Locating a form on the page
11
+ When I locate the form by "<search_by>"
12
+ Then I should be able to submit the form
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | xpath |
19
+ | index |
20
+ | action |
21
+
22
+ @selenium_only
23
+ Scenario Outline: Locating a form on the page
24
+ When I locate the form by "<search_by>"
25
+ Then I should be able to submit the form
26
+
27
+ Scenarios:
28
+ | search_by |
29
+ | css |
30
+
31
+ Scenario Outline: Locating table using multiple parameters
32
+ When I locate the form using "<param1>" and "<param2>"
33
+ Then I should be able to submit the form
34
+
35
+ Scenarios:
36
+ | param1 | param2 |
37
+ | class | index |
38
+ | name | index |
39
+
40
+ Scenario: Finding a form dynamically
41
+ When I locate a form while the script is executing
42
+ Then I should see that the form exists
43
+ And I should be able to submit the form
@@ -0,0 +1,75 @@
1
+ Feature: Handling frames
2
+
3
+ Scenario: Accessing elements within the frame
4
+ Given I am on the frame elements page
5
+ When I type "page-object" into the text field for frame 2 using "id"
6
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
7
+ When I type "page-object" into the text field for frame 2 using "name"
8
+ Then I should verify "page-object" is in the text field for frame 2 using "name"
9
+ When I type "page-object" into the text field for frame 2 using "index"
10
+ Then I should verify "page-object" is in the text field for frame 2 using "index"
11
+ #And I should be able to get the text fields text from frame 2 using "index"
12
+
13
+ @watir_only
14
+ Scenario: Accessing elements within the frame using Regexp
15
+ Given I am on the frame elements page
16
+ When I type "page-object" into the text field for frame 2 using "regex"
17
+ Then I should verify "page-object" is in the text field for frame 2 using "regex"
18
+
19
+ @watir_only
20
+ Scenario: Accessing elements within the frame using multiple identifiers
21
+ Given I am on the iframe elements page
22
+ When I type "page-object" into the text field for frame 2 using "multiple identifiers"
23
+ Then I should verify "page-object" is in the text field for frame 2 using "multiple identifiers"
24
+
25
+ Scenario: Switching between frames
26
+ Given I am on the frame elements page
27
+ When I type "page-object" into the text field for frame 2 using "id"
28
+ And I type "page-object" into the text field from frame 1 using "id"
29
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
30
+ And I should verify "page-object" is in the text field for frame 1 using "id"
31
+
32
+ Scenario: Accessing elements within the frame
33
+ Given I am on the iframe elements page
34
+ When I type "page-object" into the text field for frame 2 using "id"
35
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
36
+ When I type "page-object" into the text field for frame 2 using "name"
37
+ Then I should verify "page-object" is in the text field for frame 2 using "name"
38
+ When I type "page-object" into the text field for frame 2 using "index"
39
+ Then I should verify "page-object" is in the text field for frame 2 using "index"
40
+
41
+ Scenario: Switching between frames
42
+ Given I am on the iframe elements page
43
+ When I type "page-object" into the text field for frame 2 using "id"
44
+ And I type "page-object" into the text field from frame 1 using "id"
45
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
46
+ And I should verify "page-object" is in the text field for frame 1 using "id"
47
+
48
+ Scenario: Nested frames
49
+ Given I am on the nested frame elements page
50
+ Then I should be able to click the link in the frame
51
+
52
+ Scenario: Identifying items in frames at runtime
53
+ Given I am on the frame elements page
54
+ When I type "page-object" into the text field from frame 1 identified dynamically
55
+ Then I should verify "page-object" in the text field for frame 1 identified dynamically
56
+
57
+ Scenario: Identifying items in iframes at runtime
58
+ Given I am on the iframe elements page
59
+ When I type "page-object" into the text field from iframe 1 identified dynamically
60
+ Then I should verify "page-object" in the text field for iframe 1 identified dynamically
61
+
62
+ Scenario: Handling alerts inside frames
63
+ Given I am on the frame elements page
64
+ When I trigger an alert within a frame
65
+ Then I should be able to get the alert's message
66
+
67
+ Scenario: Handling confirms inside frames
68
+ Given I am on the frame elements page
69
+ When I trigger a confirm within a frame
70
+ Then I should be able to get the confirm message
71
+
72
+ Scenario: Handling prompts inside frames
73
+ Given I am on the frame elements page
74
+ When I trigger a prompt within a frame
75
+ Then I should be able to get the message and default value
@@ -0,0 +1,29 @@
1
+ Feature: Generic Elements
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text from the article element
7
+ When I get the text from the article
8
+ Then the text should be "HTML 5 Article"
9
+
10
+ Scenario: Getting the text from the header element
11
+ When I get the text from the header
12
+ Then the text should be "HTML 5 Header"
13
+
14
+ Scenario: Getting the text from the footer element
15
+ When I get the text from the footer
16
+ Then the text should be "HTML 5 Footer"
17
+
18
+ Scenario: Getting the text from the summary element
19
+ When I get the text from the summary
20
+ Then the text should be "The summary"
21
+
22
+ Scenario: Getting the text from the details element
23
+ When I get the text from the details
24
+ Then the text should be "The summary The details"
25
+
26
+ Scenario: getting properties from a svg element
27
+ When I get the svg element
28
+ Then the svg width should be "100"
29
+ And the svg height should be "100"
@@ -0,0 +1,24 @@
1
+ Feature: Gxt Table Extension
2
+ As a Quality Engineer working on a Gxt or Gwt project
3
+ In order to easily create test widgets to interact with application widgets
4
+ I need to define, register and use widgets as if they were normal elements
5
+
6
+ Background:
7
+ Given I have defined a GxtTable class extending Table
8
+ And I have registered the GxtTable with PageObject
9
+ And I define a page-object using that widget
10
+ And I am on the Gxt Examples page
11
+ And I have the Basic Grid opened
12
+
13
+ Scenario: Retrieve a GxtTable
14
+ When I retrieve a GxtTable widget
15
+ Then I should know it is visible
16
+
17
+ @watir_only
18
+ Scenario: Determine if a GxtTable exists
19
+ When I retrieve a GxtTable widget
20
+ Then I should know it exists
21
+
22
+ Scenario: Confirm a correct row count from a GxtTable
23
+ When I retrieve a GxtTable widget
24
+ Then the GxtTable should have "13" rows
@@ -0,0 +1,97 @@
1
+ Feature: Headings
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text of headings
7
+ When I get the text for the "h1" element
8
+ Then I should see "h1's are cool"
9
+ When I get the text for the "h2" element
10
+ Then I should see "h2's are cool"
11
+ When I get the text for the "h3" element
12
+ Then I should see "h3's are cool"
13
+ When I get the text for the "h4" element
14
+ Then I should see "h4's are cool"
15
+ When I get the text for the "h5" element
16
+ Then I should see "h5's are cool"
17
+ When I get the text for the "h6" element
18
+ Then I should see "h6's are cool"
19
+
20
+ Scenario Outline: Locating h1s on the Page
21
+ When I search for the heading1 by "<search_by>"
22
+ Then I should see "h1's are cool"
23
+
24
+ Scenarios:
25
+ | search_by |
26
+ | id |
27
+ | class |
28
+ | name |
29
+ | xpath |
30
+ | index |
31
+ | css |
32
+
33
+ Scenario Outline: Locating h2s on the Page
34
+ When I search for the heading2 by "<search_by>"
35
+ Then I should see "h2's are cool"
36
+
37
+ Scenarios:
38
+ | search_by |
39
+ | id |
40
+ | class |
41
+ | name |
42
+ | xpath |
43
+ | index |
44
+ | css |
45
+
46
+ Scenario Outline: Locating h3s on the Page
47
+ When I search for the heading3 by "<search_by>"
48
+ Then I should see "h3's are cool"
49
+
50
+ Scenarios:
51
+ | search_by |
52
+ | id |
53
+ | class |
54
+ | name |
55
+ | xpath |
56
+ | index |
57
+ | css |
58
+
59
+ Scenario Outline: Locating h4s on the Page
60
+ When I search for the heading4 by "<search_by>"
61
+ Then I should see "h4's are cool"
62
+
63
+ Scenarios:
64
+ | search_by |
65
+ | id |
66
+ | class |
67
+ | name |
68
+ | xpath |
69
+ | index |
70
+ | css |
71
+
72
+ Scenario Outline: Locating h5s on the Page
73
+ When I search for the heading5 by "<search_by>"
74
+ Then I should see "h5's are cool"
75
+
76
+ Scenarios:
77
+ | search_by |
78
+ | id |
79
+ | class |
80
+ | name |
81
+ | xpath |
82
+ | index |
83
+ | css |
84
+
85
+ Scenario Outline: Locating h6s on the Page
86
+ When I search for the heading6 by "<search_by>"
87
+ Then I should see "h6's are cool"
88
+
89
+ Scenarios:
90
+ | search_by |
91
+ | id |
92
+ | class |
93
+ | name |
94
+ | xpath |
95
+ | index |
96
+ | css |
97
+
@@ -0,0 +1,45 @@
1
+ Feature: Hidden Fields
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Setting and getting a value from a hidden field
7
+ When I retrieve the hidden field element
8
+ Then I should see the hidden field contains "12345"
9
+
10
+ Scenario Outline: Locating hidden fields on the Page
11
+ When I search for the hidden field by "<search_by>"
12
+ Then the hidden field element should contain "12345"
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | index |
21
+ | text |
22
+ | value |
23
+
24
+ @selenium_only
25
+ Scenario Outline: Locating hidden fields on the Page
26
+ When I search for the hidden field by "<search_by>"
27
+ Then the hidden field element should contain "12345"
28
+
29
+ Scenarios:
30
+ | search_by |
31
+ | css |
32
+
33
+ Scenario Outline: Locating a hidden field using multiple parameters
34
+ When I search for the hidden field by "<param1>" and "<param2>"
35
+ Then the hidden field element should contain "12345"
36
+
37
+ Scenarios:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
41
+
42
+ Scenario: Finding a hidden field dynamically
43
+ When I find a hidden field while the script is executing
44
+ Then I should see that the hidden field exists
45
+ And the hidden field element should contain "12345"