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,266 @@
1
+ When /^I retrieve a check box element$/ do
2
+ @element = @page.cb_id_element
3
+ end
4
+
5
+ When /^I retrieve a link element$/ do
6
+ @element = @page.google_search_id_element
7
+ end
8
+
9
+ When /^I retrieve a radio button$/ do
10
+ @element = @page.milk_id_element
11
+ end
12
+
13
+ When /^I retrieve a select list$/ do
14
+ @element = @page.sel_list_id_element
15
+ end
16
+
17
+ When /^I retrieve a text field$/ do
18
+ @element = @page.text_field_id_element
19
+ end
20
+
21
+ When /^I retrieve the text area$/ do
22
+ @element = @page.text_area_id_element
23
+ end
24
+
25
+ When /^I retrieve the div element$/ do
26
+ @element = @page.div_id_element
27
+ end
28
+
29
+ When /^I retrieve a table element$/ do
30
+ @element = @page.table_id_element
31
+ end
32
+
33
+ When /^I retrieve a table with thead element$/ do
34
+ @element = @page.table_with_thead_id_element
35
+ end
36
+
37
+ When /^I retrieve a button element$/ do
38
+ @element = @page.button_id_element
39
+ end
40
+
41
+ When /^I retrieve table cell$/ do
42
+ @element = @page.cell_id_element
43
+ end
44
+
45
+ When /^I retrieve a heading element$/ do
46
+ @element = @page.h1_id_element
47
+ end
48
+
49
+ When /^I retrieve the area element$/ do
50
+ @element = @page.area_id_element
51
+ end
52
+
53
+ When /^I retrieve the canvas element$/ do
54
+ @element = @page.canvas_id_element
55
+ end
56
+
57
+ When /^I retrieve the audio element$/ do
58
+ @element = @page.audio_id_element
59
+ end
60
+
61
+ When /^I locate the form$/ do
62
+ @element = @page.form_id_element
63
+ end
64
+
65
+ Then /^I should know it exists$/ do
66
+ @element.should exist
67
+ end
68
+
69
+ Then /^I should know it is visible$/ do
70
+ @element.should be_visible
71
+ end
72
+
73
+ Then /^I should know it is not visible$/ do
74
+ @element.should_not be_visible
75
+ end
76
+
77
+ Then /^I should know the text is "(.*)"$/ do |text|
78
+ @element.text.should == text
79
+ end
80
+
81
+ Then /^I should know the html is "(.*)"$/ do |html|
82
+ @element.html.should == html
83
+ end
84
+
85
+ Then /^I should know the text includes "(.*)"$/ do |text|
86
+ @element.text.should include text
87
+ end
88
+
89
+ Then /^I should know the value is "(.*)"$/ do |value|
90
+ @element.value.should == value
91
+ end
92
+
93
+ Then /^I should know the value is nil$/ do
94
+ @element.value.should be_nil
95
+ end
96
+
97
+ Then /^I should know it is equal to itself$/ do
98
+ @element.should == @element
99
+ end
100
+
101
+ Then /^I should know the tag name is "(.+)"$/ do |tagname|
102
+ @element.tag_name.should == tagname
103
+ end
104
+
105
+ Then /^I should know the attribute "(.+)" is false$/ do |attr_name|
106
+ @attr = @element.attribute(attr_name)
107
+ @attr.should be_false if @attr.is_a? FalseClass
108
+ @attr.should == "false" if @attr.is_a? String
109
+ end
110
+
111
+ Then /^I should be able to click it$/ do
112
+ @element.click
113
+ end
114
+
115
+ When /^I retrieve a list item element$/ do
116
+ @element = @page.li_id_element
117
+ end
118
+
119
+ When /^I retrieve an unordered list element$/ do
120
+ @element = @page.ul_id_element
121
+ end
122
+
123
+ When /^I retrieve an ordered list element$/ do
124
+ @element = @page.ol_id_element
125
+ end
126
+
127
+ When /^I clear the text field$/ do
128
+ @page.text_field_id_element.clear
129
+ end
130
+
131
+ When /^I check an enabled button$/ do
132
+ @element = @page.button_id_element
133
+ end
134
+
135
+ Then /^it should know it is enabled$/ do
136
+ @element.should be_enabled
137
+ end
138
+
139
+ When /^I check a disabled button$/ do
140
+ @element = @page.disabled_button_element
141
+ end
142
+
143
+ Then /^it should know it is not enabled$/ do
144
+ @element.should_not be_enabled
145
+ end
146
+
147
+ Then /^it should know that is it not disabled$/ do
148
+ @element.should_not be_disabled
149
+ end
150
+
151
+ Then /^it should know that it is disabled$/ do
152
+ @element.should be_disabled
153
+ end
154
+
155
+ When /^I set the focus to the test text_field using the onfocus event$/ do
156
+ @page.text_field_element(:id => 'onfocus_text_field').fire_event('onfocus')
157
+ end
158
+
159
+ Then /^I should see the onfocus text "([^\"]*)"$/ do |text|
160
+ @page.div_element(:id => 'onfocus_test').text.should == text
161
+ end
162
+
163
+ When /^I set the focus on the test text_field$/ do
164
+ @page.text_field_element(:id => 'onfocus_text_field').focus
165
+ end
166
+
167
+ When /^I find the child link element$/ do
168
+ @element = @page.child_element
169
+ end
170
+
171
+ When /^ask for the parent element$/ do
172
+ @parent = @element.parent
173
+ end
174
+
175
+ Then /^I should have a div parent$/ do
176
+ @parent.should be_instance_of ::PageObject::Elements::Div
177
+ end
178
+
179
+ Then /^I should know that the text_field has the focus$/ do
180
+ element = @page.element_with_focus
181
+ element.should_not be_nil
182
+ element.class.should == PageObject::Elements::TextField
183
+ end
184
+
185
+ When /^I set the focus to the test text_field$/ do
186
+ @page.text_field_element(:id => 'onfocus_text_field').focus
187
+ end
188
+
189
+ When /^I retrieve the label element$/ do
190
+ @element = @page.label_id_element
191
+ end
192
+
193
+ Then /^I should be able to flash it$/ do
194
+ @element.flash
195
+ end
196
+
197
+ class HoverPage
198
+ include PageObject
199
+
200
+ link(:hello)
201
+ end
202
+
203
+ Given /^I am on the hover page$/ do
204
+ @page = HoverPage.new(@browser)
205
+ @page.navigate_to UrlHelper.hover
206
+ end
207
+
208
+ When /^I hover over the hello link$/ do
209
+ @page.hello_element.hover
210
+ end
211
+
212
+ Then /^the font size should be "([^\"]*)"$/ do |font_size|
213
+ @page.hello_element.style('font-size').should == font_size if ENV['BROWSER'] == 'chrome'
214
+ end
215
+
216
+ Then /^I should know its id is "([^\"]*)"$/ do |id|
217
+ @element.id.should == id
218
+ end
219
+
220
+ class DoubleClickPage
221
+ include PageObject
222
+ button(:click)
223
+ paragraph(:p_text)
224
+ end
225
+
226
+ Given /^I am on the Double Click page$/ do
227
+ @page = DoubleClickPage.new(@browser)
228
+ @page.navigate_to UrlHelper.double_click
229
+ end
230
+
231
+ When /^I double click the button$/ do
232
+ @page.click_element.double_click
233
+ end
234
+
235
+ Then /^the paragraph should read "([^\"]*)"$/ do |expected_text|
236
+ @page.p_text.should == expected_text
237
+ end
238
+
239
+ When /^I scroll the heading element into view$/ do
240
+ @element.scroll_into_view
241
+ end
242
+
243
+ Then /^the heading element should be visible$/ do
244
+ @element.should be_visible
245
+ end
246
+
247
+ When /^I retrieve a div using data\-entity$/ do
248
+ @element = @page.div_data_entity_element
249
+ end
250
+
251
+ When(/^I retrieve the figure using the declaration$/) do
252
+ @element = @page.figure_id_element
253
+ end
254
+
255
+ When(/^I retrieve the figure using the element$/) do
256
+ @element = @page.figure_element(:id => 'figure_id')
257
+ end
258
+
259
+ Then(/^I should see the figure contains an image$/) do
260
+ @element.image_element.should_not be_nil
261
+ end
262
+
263
+ Then(/^I should know the attribute "(.*?)" includes "(.+)"$/) do |attribute, included|
264
+ @attr = @element.attribute(attribute)
265
+ @attr.should include included
266
+ end
@@ -0,0 +1,19 @@
1
+ When /^I set the file field to the step definition file$/ do
2
+ @page.file_field_id = __FILE__
3
+ end
4
+
5
+ Then /^its\' value should equal that file$/ do
6
+ __FILE__.should include @page.file_field_id_element.value
7
+ end
8
+
9
+ When /^I search for the file field by "([^\"]*)"$/ do |how|
10
+ @how = how
11
+ end
12
+
13
+ When /^I search for the file field by "([^\"]*)" and "([^\"]*)"$/ do |param1, param2|
14
+ @how = "#{param1}_#{param2}"
15
+ end
16
+
17
+ Then /^I should be able to set the file field$/ do
18
+ @page.send "file_field_#{@how}=", __FILE__
19
+ end
@@ -0,0 +1,19 @@
1
+ Then /^I should be able to submit the form$/ do
2
+ @element.submit
3
+ end
4
+
5
+ When /^I locate the form by "([^\"]*)"$/ do |how|
6
+ @element = @page.send "form_#{how}_element"
7
+ end
8
+
9
+ When /^I locate the form using "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @element = @page.send "form_#{param1}_#{param2}_element"
11
+ end
12
+
13
+ When /^I locate a form while the script is executing$/ do
14
+ @element = @page.form_element(:id => 'form_id')
15
+ end
16
+
17
+ Then /^I should see that the form exists$/ do
18
+ @page.form_id?.should == true
19
+ end
@@ -0,0 +1,159 @@
1
+ class FramePage
2
+ include PageObject
3
+
4
+ in_frame(:index => 1) do |frame|
5
+ text_field(:text_field_2_index, :name => 'recieverElement', :frame => frame)
6
+ end
7
+ in_frame(:index => 0) do |frame|
8
+ text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
9
+ end
10
+
11
+ in_frame(:id => 'frame_two_2') do |frame|
12
+ text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
13
+ end
14
+ in_frame(:id => 'frame_one_1') do |frame|
15
+ text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
16
+ end
17
+
18
+ in_frame(:name => 'frame2') do |frame|
19
+ text_field(:text_field_2_name, :name => 'recieverElement', :frame => frame)
20
+ end
21
+ in_frame(:name => 'frame1') do |frame|
22
+ text_field(:text_field_1_name, :name => 'senderElement', :frame => frame)
23
+ end
24
+
25
+ in_frame(:id => /frame_two_\d+/) do |frame|
26
+ text_field(:text_field_2_regex, :name => 'recieverElement', :frame => frame)
27
+ end
28
+
29
+ end
30
+
31
+ class IFramePage
32
+ include PageObject
33
+
34
+ in_iframe(:id => 'frame_two_2') do |frame|
35
+ text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
36
+ end
37
+ in_iframe(:id => 'frame_one_1') do |frame|
38
+ text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
39
+ end
40
+
41
+ in_iframe(:name => 'frame2') do |frame|
42
+ text_field(:text_field_2_name, :name => 'recieverElement', :frame => frame)
43
+ end
44
+ in_iframe(:name => 'frame1') do |frame|
45
+ text_field(:text_field_1_name, :name => 'senderElement', :frame => frame)
46
+ end
47
+
48
+ in_iframe(:index => 1) do |frame|
49
+ text_field(:text_field_2_index, :name => 'recieverElement', :frame => frame)
50
+ end
51
+ in_iframe(:index => 0) do |frame|
52
+ text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
53
+ end
54
+
55
+ in_iframe(:class => 'iframe', :name => 'frame2') do |frame|
56
+ text_field(:text_field_2_multiple_identifiers, :name => 'recieverElement', :frame => frame)
57
+ end
58
+ end
59
+
60
+
61
+ Given /^I am on the frame elements page$/ do
62
+ @page = FramePage.new(@browser)
63
+ @page.navigate_to(UrlHelper.frame_elements)
64
+ end
65
+
66
+ Given /^I am on the iframe elements page$/ do
67
+ @page = IFramePage.new(@browser)
68
+ @page.navigate_to(UrlHelper.iframe_elements)
69
+ end
70
+
71
+ When /^I type "([^\"]*)" into the text field for frame 2 using "([^\"]*)"$/ do |text, arg_type|
72
+ @page.send "text_field_2_#{arg_type.gsub(' ', '_')}=".to_sym, text
73
+ end
74
+
75
+ Then /^I should verify "([^\"]*)" is in the text field for frame 2 using "([^\"]*)"$/ do |text, arg_type|
76
+ result = @page.send "text_field_2_#{arg_type.gsub(' ', '_')}".to_sym
77
+ result.should == text
78
+ end
79
+
80
+ #Then /^I should be able to get the text fields text from frame 2 using "([^\"]*)"$/ do |arg_type|
81
+ # @page.send("text_field_2_#{arg_type}_element").text
82
+ #end
83
+
84
+ When /^I type "([^\"]*)" into the text field from frame 1 using "([^\"]*)"$/ do |text, arg_type|
85
+ @page.send "text_field_1_#{arg_type.gsub(' ', '_')}=".to_sym, text
86
+ end
87
+
88
+ Then /^I should verify "([^\"]*)" is in the text field for frame 1 using "([^\"]*)"$/ do |text, arg_type|
89
+ result = @page.send "text_field_1_#{arg_type.gsub(' ', '_')}".to_sym
90
+ result.should == text
91
+ end
92
+
93
+ class NestedFramePage
94
+ include PageObject
95
+
96
+ in_frame(:id => 'two') do |frame|
97
+ in_iframe({:id => 'three'}, frame) do |nested_frame|
98
+ link(:nested_link, :id => 'four', :frame => nested_frame)
99
+ end
100
+ end
101
+ end
102
+
103
+ Given /^I am on the nested frame elements page$/ do
104
+ @page = NestedFramePage.new(@browser)
105
+ @page.navigate_to(UrlHelper.nested_frame_elements)
106
+ end
107
+
108
+ Then /^I should be able to click the link in the frame$/ do
109
+ @page.nested_link
110
+ @page.text.should include "Success"
111
+ end
112
+
113
+ When /^I type "([^\"]*)" into the text field from frame 1 identified dynamically$/ do |value|
114
+ @page.in_frame(:id => 'frame_one_1') do |frame|
115
+ @page.text_field_element(:name => 'senderElement', :frame => frame).value = value
116
+ end
117
+ end
118
+
119
+ Then /^I should verify "([^\"]*)" in the text field for frame 1 identified dynamically$/ do |value|
120
+ @page.in_frame(:id => 'frame_one_1') do |frame|
121
+ @page.text_field_element(:name => 'senderElement', :frame => frame).value.should == value
122
+ end
123
+ end
124
+
125
+ When /^I type "([^\"]*)" into the text field from iframe 1 identified dynamically$/ do |value|
126
+ @page.in_iframe(:id => 'frame_one_1') do |frame|
127
+ @page.text_field_element(:name => 'senderElement', :frame => frame).value = value
128
+ end
129
+ end
130
+
131
+ Then /^I should verify "([^\"]*)" in the text field for iframe 1 identified dynamically$/ do |value|
132
+ @page.in_iframe(:id => 'frame_one_1') do |frame|
133
+ @page.text_field_element(:name => 'senderElement', :frame => frame).value.should == value
134
+ end
135
+ end
136
+
137
+ When /^I trigger an alert within a frame$/ do
138
+ @page.in_frame(:id => 'frame_three_3') do |frame|
139
+ @msg = @page.alert(frame) do
140
+ @page.button_element(:id => 'alert_button', :frame => frame).click
141
+ end
142
+ end
143
+ end
144
+
145
+ When /^I trigger a confirm within a frame$/ do
146
+ @page.in_frame(:id => 'frame_three_3') do |frame|
147
+ @msg = @page.confirm(true, frame) do
148
+ @page.button_element(:id => 'confirm_button', :frame => frame).click
149
+ end
150
+ end
151
+ end
152
+
153
+ When /^I trigger a prompt within a frame$/ do
154
+ @page.in_frame(:id => 'frame_three_3') do |frame|
155
+ @msg = @page.prompt("Cheezy", frame) do
156
+ @page.button_element(:id => 'prompt_button', :frame => frame).click
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,31 @@
1
+ When /^I get the text from the article$/ do
2
+ @text = @page.article_id
3
+ end
4
+
5
+ When /^I get the text from the header$/ do
6
+ @text = @page.header_id
7
+ end
8
+
9
+ When /^I get the text from the footer$/ do
10
+ @text = @page.footer_id
11
+ end
12
+
13
+ When /^I get the text from the summary$/ do
14
+ @text = @page.summary_id
15
+ end
16
+
17
+ When /^I get the text from the details$/ do
18
+ @text = @page.details_id
19
+ end
20
+
21
+ When /^I get the svg element$/ do
22
+ @svg = @page.svg_id_element
23
+ end
24
+
25
+ Then /^the svg width should be "(.*?)"$/ do |width|
26
+ @svg.attribute('width').should == width
27
+ end
28
+
29
+ Then /^the svg height should be "(.*?)"$/ do |height|
30
+ @svg.attribute('height').should == height
31
+ end
@@ -0,0 +1,58 @@
1
+
2
+ def class_exists?(class_name)
3
+ begin
4
+ klass = Module.const_get(class_name)
5
+ return klass.is_a?(Class)
6
+ rescue NameError
7
+ return false
8
+ end
9
+ end
10
+
11
+ Given /^I am on the Gxt Examples page$/ do
12
+ visit GxtSamplePageObject
13
+ end
14
+
15
+ When /^I have the Basic Grid opened$/ do
16
+ on(GxtSamplePageObject).basic_grid_element.click
17
+ end
18
+
19
+ When /^I have defined a GxtTable class extending Table$/ do
20
+ class GxtTable < PageObject::Elements::Table
21
+
22
+ def self.accessor_methods(accessor, name)
23
+ accessor.send :define_method, "#{name}_rows" do
24
+ self.send("#{name}_element").rows
25
+ end
26
+ end
27
+
28
+ protected
29
+ def child_xpath
30
+ ".//descendant::tr"
31
+ end
32
+ end
33
+ end
34
+
35
+ When /^I define a page-object using that widget$/ do
36
+ class GxtSamplePageObject
37
+ include PageObject
38
+
39
+ page_url "http://gxtexamplegallery.appspot.com/"
40
+
41
+ div(:basic_grid, :class => "label_basic_grid")
42
+ gxt_table(:gxt_table, :class => "x-grid3")
43
+ end unless class_exists? 'GxtSamplePageObject'
44
+ end
45
+
46
+ When /^I have registered the GxtTable with PageObject$/ do
47
+ PageObject.register_widget :gxt_table, GxtTable, 'div'
48
+ end
49
+
50
+ When /^I retrieve a GxtTable widget$/ do
51
+ @element = on(GxtSamplePageObject).gxt_table_element
52
+ end
53
+
54
+
55
+ When /^the GxtTable should have "(\d+)" rows$/ do |rows|
56
+ on(GxtSamplePageObject).gxt_table_rows.should == rows.to_i
57
+ end
58
+
@@ -0,0 +1,12 @@
1
+ When /^I get the text for the "([^\"]*)" element$/ do |el|
2
+ @heading = @page.send "#{el}_id"
3
+ end
4
+
5
+ Then /^I should see "([^\"]*)"$/ do |text|
6
+ @heading.should == text
7
+ end
8
+
9
+ When /^I search for the heading(\d+) by "([^"]*)"$/ do |head_type, type|
10
+ @heading = @page.send "h#{head_type}_#{type}"
11
+ end
12
+
@@ -0,0 +1,27 @@
1
+ When /^I retrieve the hidden field element$/ do
2
+ @element = @page.hidden_field_id_element
3
+ end
4
+
5
+ Then /^I should see the hidden field contains "([^\"]*)"$/ do |text|
6
+ @page.hidden_field_id.should == text
7
+ end
8
+
9
+ When /^I search for the hidden field by "([^\"]*)"$/ do |how|
10
+ @element = @page.send "hidden_field_#{how}_element"
11
+ end
12
+
13
+ Then /^the hidden field element should contain "([^\"]*)"$/ do |text|
14
+ @element.value.should == text
15
+ end
16
+
17
+ When /^I search for the hidden field by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
18
+ @element = @page.send "hidden_field_#{param1}_#{param2}_element"
19
+ end
20
+
21
+ When /^I find a hidden field while the script is executing$/ do
22
+ @element = @page.hidden_field_element(:id => 'hidden_field_id')
23
+ end
24
+
25
+ Then /^I should see that the hidden field exists$/ do
26
+ @page.hidden_field_id?.should == true
27
+ end
@@ -0,0 +1,27 @@
1
+ When /^I get the image element$/ do
2
+ @element = @page.image_id_element
3
+ end
4
+
5
+ Then /^the image should be "([^\"]*)" pixels wide$/ do |width|
6
+ @element.width.should == width.to_i
7
+ end
8
+
9
+ Then /^the image should be "([^\"]*)" pixels tall$/ do |height|
10
+ @element.height.should == height.to_i
11
+ end
12
+
13
+ When /^I get the image element by "([^\"]*)"$/ do |how|
14
+ @element = @page.send "image_#{how}_element"
15
+ end
16
+
17
+ When /^I get the image element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
18
+ @element = @page.send "image_#{param1}_#{param2}_element"
19
+ end
20
+
21
+ When /^I get the image element while the script is executing$/ do
22
+ @element = @page.image_element(:id => 'image_id')
23
+ end
24
+
25
+ Then /^I should see that the image exists$/ do
26
+ @page.image_id?.should == true
27
+ end