page-object 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +22 -12
  3. data/ChangeLog +10 -0
  4. data/Gemfile +4 -2
  5. data/Guardfile +1 -1
  6. data/README.md +2 -2
  7. data/lib/page-object/accessors.rb +57 -35
  8. data/lib/page-object/elements/element.rb +26 -0
  9. data/lib/page-object/locator_generator.rb +46 -0
  10. data/lib/page-object/platforms/selenium_webdriver/element.rb +6 -6
  11. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +14 -0
  12. data/lib/page-object/platforms/watir_webdriver/element.rb +0 -7
  13. data/lib/page-object/platforms/watir_webdriver/page_object.rb +16 -3
  14. data/lib/page-object/version.rb +1 -1
  15. data/page-object.gemspec +7 -10
  16. metadata +34 -375
  17. data/features/area.feature +0 -35
  18. data/features/async.feature +0 -21
  19. data/features/audio.feature +0 -64
  20. data/features/bold.feature +0 -21
  21. data/features/button.feature +0 -98
  22. data/features/canvas.feature +0 -37
  23. data/features/check_box.feature +0 -55
  24. data/features/div.feature +0 -45
  25. data/features/element.feature +0 -343
  26. data/features/file_field.feature +0 -40
  27. data/features/form.feature +0 -43
  28. data/features/frames.feature +0 -75
  29. data/features/generic_elements.feature +0 -29
  30. data/features/gxt_table_extension.feature +0 -23
  31. data/features/headings.feature +0 -97
  32. data/features/hidden_field.feature +0 -45
  33. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  34. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  35. data/features/html/async.html +0 -36
  36. data/features/html/double_click.html +0 -13
  37. data/features/html/failure.html +0 -8
  38. data/features/html/frame_1.html +0 -18
  39. data/features/html/frame_2.html +0 -16
  40. data/features/html/frame_3.html +0 -14
  41. data/features/html/frames.html +0 -12
  42. data/features/html/hover.html +0 -12
  43. data/features/html/iframes.html +0 -12
  44. data/features/html/images/circle.png +0 -0
  45. data/features/html/images/img_pulpit.jpg +0 -0
  46. data/features/html/images/submit.gif +0 -0
  47. data/features/html/indexed_property.html +0 -55
  48. data/features/html/modal.html +0 -17
  49. data/features/html/modal_1.html +0 -38
  50. data/features/html/modal_2.html +0 -27
  51. data/features/html/movie.mp4 +0 -0
  52. data/features/html/movie.ogg +0 -0
  53. data/features/html/multi_elements.html +0 -145
  54. data/features/html/nested_elements.html +0 -77
  55. data/features/html/nested_frame_1.html +0 -1
  56. data/features/html/nested_frame_2.html +0 -11
  57. data/features/html/nested_frame_3.html +0 -14
  58. data/features/html/nested_frames.html +0 -10
  59. data/features/html/planets.gif +0 -0
  60. data/features/html/static_elements.html +0 -194
  61. data/features/html/success.html +0 -8
  62. data/features/html/sun.gif +0 -0
  63. data/features/html/sun.html +0 -7
  64. data/features/html/widgets.html +0 -20
  65. data/features/image.feature +0 -50
  66. data/features/indexed_property.feature +0 -117
  67. data/features/italic.feature +0 -21
  68. data/features/javascript.feature +0 -28
  69. data/features/label.feature +0 -46
  70. data/features/link.feature +0 -52
  71. data/features/list_item.feature +0 -36
  72. data/features/modal_dialog.feature +0 -15
  73. data/features/multi_elements.feature +0 -498
  74. data/features/nested_elements.feature +0 -117
  75. data/features/ordered_list.feature +0 -56
  76. data/features/page_level_actions.feature +0 -90
  77. data/features/paragraph.feature +0 -35
  78. data/features/radio_button.feature +0 -58
  79. data/features/radio_button_group.feature +0 -29
  80. data/features/sample-app/public/audio_video.html +0 -23
  81. data/features/sample-app/public/jquery-1.3.2.js +0 -4376
  82. data/features/sample-app/public/jquery.html +0 -30
  83. data/features/sample-app/public/prototype-1.6.0.3.js +0 -4320
  84. data/features/sample-app/public/prototype.html +0 -35
  85. data/features/sample-app/sample_app.rb +0 -35
  86. data/features/section.feature +0 -136
  87. data/features/select_list.feature +0 -86
  88. data/features/span.feature +0 -37
  89. data/features/step_definitions/accessor_steps.rb +0 -64
  90. data/features/step_definitions/area_steps.rb +0 -19
  91. data/features/step_definitions/async_steps.rb +0 -83
  92. data/features/step_definitions/audio_steps.rb +0 -27
  93. data/features/step_definitions/bold_steps.rb +0 -12
  94. data/features/step_definitions/button_steps.rb +0 -48
  95. data/features/step_definitions/canvas_steps.rb +0 -15
  96. data/features/step_definitions/check_box_steps.rb +0 -35
  97. data/features/step_definitions/div_steps.rb +0 -19
  98. data/features/step_definitions/element_steps.rb +0 -294
  99. data/features/step_definitions/file_field_steps.rb +0 -19
  100. data/features/step_definitions/form_steps.rb +0 -19
  101. data/features/step_definitions/frames_steps.rb +0 -159
  102. data/features/step_definitions/generic_element_steps.rb +0 -31
  103. data/features/step_definitions/gxt_table_steps.rb +0 -53
  104. data/features/step_definitions/headings_steps.rb +0 -12
  105. data/features/step_definitions/hidden_field_steps.rb +0 -27
  106. data/features/step_definitions/image_steps.rb +0 -27
  107. data/features/step_definitions/indexed_property_steps.rb +0 -163
  108. data/features/step_definitions/italic_steps.rb +0 -12
  109. data/features/step_definitions/javascript_steps.rb +0 -53
  110. data/features/step_definitions/label_steps.rb +0 -19
  111. data/features/step_definitions/link_steps.rb +0 -40
  112. data/features/step_definitions/list_item_steps.rb +0 -19
  113. data/features/step_definitions/modal_dialog_steps.rb +0 -62
  114. data/features/step_definitions/multi_elements_steps.rb +0 -554
  115. data/features/step_definitions/nested_elements_steps.rb +0 -212
  116. data/features/step_definitions/ordered_list_steps.rb +0 -23
  117. data/features/step_definitions/page_level_actions_steps.rb +0 -135
  118. data/features/step_definitions/page_traversal_steps.rb +0 -8
  119. data/features/step_definitions/paragraph_steps.rb +0 -28
  120. data/features/step_definitions/radio_button_group_steps.rb +0 -36
  121. data/features/step_definitions/radio_button_steps.rb +0 -27
  122. data/features/step_definitions/section_steps.rb +0 -277
  123. data/features/step_definitions/select_list_steps.rb +0 -65
  124. data/features/step_definitions/span_steps.rb +0 -19
  125. data/features/step_definitions/table_cell_steps.rb +0 -15
  126. data/features/step_definitions/table_row_steps.rb +0 -23
  127. data/features/step_definitions/table_steps.rb +0 -70
  128. data/features/step_definitions/text_area_steps.rb +0 -35
  129. data/features/step_definitions/text_field_steps.rb +0 -35
  130. data/features/step_definitions/unordered_list_steps.rb +0 -23
  131. data/features/step_definitions/video_steps.rb +0 -45
  132. data/features/support/ajax_text_environment.rb +0 -26
  133. data/features/support/audio_video_page.rb +0 -24
  134. data/features/support/env.rb +0 -8
  135. data/features/support/hooks.rb +0 -8
  136. data/features/support/page.rb +0 -373
  137. data/features/support/persistent_browser.rb +0 -70
  138. data/features/support/targets/firefox14_osx.rb +0 -6
  139. data/features/support/targets/firefox14_windows7.rb +0 -6
  140. data/features/support/url_helper.rb +0 -61
  141. data/features/table.feature +0 -122
  142. data/features/table_cell.feature +0 -45
  143. data/features/table_row.feature +0 -43
  144. data/features/text_area.feature +0 -51
  145. data/features/text_field.feature +0 -70
  146. data/features/unordered_list.feature +0 -56
  147. data/features/video.feature +0 -69
  148. data/spec/page-object/accessors_spec.rb +0 -40
  149. data/spec/page-object/element_locators_spec.rb +0 -1144
  150. data/spec/page-object/elements/area_spec.rb +0 -45
  151. data/spec/page-object/elements/bold_spec.rb +0 -29
  152. data/spec/page-object/elements/button_spec.rb +0 -64
  153. data/spec/page-object/elements/canvas_spec.rb +0 -41
  154. data/spec/page-object/elements/check_box_spec.rb +0 -49
  155. data/spec/page-object/elements/div_spec.rb +0 -28
  156. data/spec/page-object/elements/element_spec.rb +0 -196
  157. data/spec/page-object/elements/file_field_spec.rb +0 -39
  158. data/spec/page-object/elements/form_spec.rb +0 -28
  159. data/spec/page-object/elements/heading_spec.rb +0 -48
  160. data/spec/page-object/elements/hidden_field_spec.rb +0 -28
  161. data/spec/page-object/elements/image_spec.rb +0 -66
  162. data/spec/page-object/elements/italic_spec.rb +0 -29
  163. data/spec/page-object/elements/label_spec.rb +0 -29
  164. data/spec/page-object/elements/link_spec.rb +0 -49
  165. data/spec/page-object/elements/list_item_spec.rb +0 -29
  166. data/spec/page-object/elements/media_spec.rb +0 -63
  167. data/spec/page-object/elements/nested_element_spec.rb +0 -254
  168. data/spec/page-object/elements/option_spec.rb +0 -11
  169. data/spec/page-object/elements/ordered_list_spec.rb +0 -78
  170. data/spec/page-object/elements/paragraph_spec.rb +0 -27
  171. data/spec/page-object/elements/select_list_spec.rb +0 -142
  172. data/spec/page-object/elements/selenium/radio_button_spec.rb +0 -44
  173. data/spec/page-object/elements/selenium/text_field_spec.rb +0 -49
  174. data/spec/page-object/elements/selenium_element_spec.rb +0 -218
  175. data/spec/page-object/elements/span_spec.rb +0 -26
  176. data/spec/page-object/elements/table_cell_spec.rb +0 -21
  177. data/spec/page-object/elements/table_row_spec.rb +0 -70
  178. data/spec/page-object/elements/table_spec.rb +0 -98
  179. data/spec/page-object/elements/text_area_spec.rb +0 -39
  180. data/spec/page-object/elements/unordered_list_spec.rb +0 -77
  181. data/spec/page-object/elements/video_spec.rb +0 -33
  182. data/spec/page-object/elements/watir_element_spec.rb +0 -193
  183. data/spec/page-object/javascript_framework_facade_spec.rb +0 -61
  184. data/spec/page-object/loads_platform_spec.rb +0 -53
  185. data/spec/page-object/page-object_spec.rb +0 -435
  186. data/spec/page-object/page_factory_spec.rb +0 -238
  187. data/spec/page-object/page_populator_spec.rb +0 -122
  188. data/spec/page-object/page_section_spec.rb +0 -80
  189. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +0 -68
  190. data/spec/page-object/platforms/selenium_webdriver_spec.rb +0 -29
  191. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +0 -29
  192. data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -9
  193. data/spec/page-object/selenium_accessors_spec.rb +0 -628
  194. data/spec/page-object/watir_accessors_spec.rb +0 -1191
  195. data/spec/page-object/widget_spec.rb +0 -226
  196. data/spec/spec_helper.rb +0 -43
@@ -1,226 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object'
3
- require 'page-object/elements'
4
-
5
- describe "Widget PageObject Extensions" do
6
- context "When module is loaded and included before PageObject is loaded " do
7
-
8
- class GxtTable < PageObject::Elements::Table
9
-
10
- @protected
11
-
12
- def child_xpath
13
- ".//descendant::tr"
14
- end
15
- end
16
- PageObject.register_widget :gxt_table, GxtTable, :div
17
-
18
- class WidgetMatrix < PageObject::Elements::Table
19
- def self.plural_form
20
- 'widget_matrices'
21
- end
22
- end
23
- PageObject.register_widget :widget_matrix, WidgetMatrix, :div
24
- end
25
-
26
- class WidgetTestPageObject
27
- include PageObject
28
-
29
- gxt_table(:a_table, :id => "top_div_id")
30
- gxt_tables(:some_table, :class => "top_div_class")
31
- gxt_table :gxt_block_table do |element|
32
- "block_gxt_table"
33
- end
34
- gxt_tables :gxt_multiple_block_table do |element|
35
- "multiple_block_gxt_table"
36
- end
37
-
38
- widget_matrices :matrix, :class => 'matrix'
39
-
40
- div(:outer_div)
41
- gxt_table(:a_nested_gxt_table) { |page| page.outer_div_element.gxt_table_element }
42
- end
43
-
44
- describe "Widget Element Locators" do
45
-
46
- context "when using Watir" do
47
- let(:watir_browser) { mock_watir_browser }
48
- let(:watir_page_object) { WidgetTestPageObject.new(watir_browser) }
49
-
50
- it "should find a gxt_table element" do
51
- expect(watir_browser).to receive(:div).with(:id => 'blah').and_return(watir_browser)
52
- element = watir_page_object.gxt_table_element(:id => 'blah')
53
- expect(element).to be_instance_of GxtTable
54
- end
55
- end
56
-
57
- context "when using Selenium" do
58
- let(:selenium_browser) { mock_selenium_browser }
59
- let(:selenium_page_object) { WidgetTestPageObject.new(selenium_browser) }
60
-
61
- it "should find a gxt_table element" do
62
- expect(selenium_browser).to receive(:find_element).with(:id, 'blah').and_return(selenium_browser)
63
- element = selenium_page_object.gxt_table_element(:id => 'blah')
64
- expect(element).to be_instance_of GxtTable
65
- end
66
- end
67
- end
68
-
69
- describe "Widget Accessors" do
70
- let(:watir_browser) { mock_watir_browser }
71
- let(:watir_page_object) { WidgetTestPageObject.new(watir_browser) }
72
-
73
- context "using default identifiers" do
74
- class WatirDefaultIdentifier
75
- include PageObject
76
-
77
- gxt_table :default_gxt_table
78
- end
79
-
80
- let(:default_identifier) { WatirDefaultIdentifier.new(watir_browser) }
81
-
82
- def mock_driver_for(tag)
83
- expect(watir_browser).to receive(tag).with(:index => 0).and_return(watir_browser)
84
- end
85
-
86
- it "should work for a gxt_table" do
87
- mock_driver_for :div
88
- expect(default_identifier.default_gxt_table_element).not_to be_nil
89
- end
90
-
91
- end
92
-
93
- describe "gxt_table accessors" do
94
- context "when called on a page object" do
95
- it "should generate accessor methods" do
96
- expect(watir_page_object).to respond_to(:a_table_element)
97
- end
98
-
99
- it "should generate multiple accessor methods" do
100
- expect(watir_page_object).to respond_to(:some_table_elements)
101
- end
102
-
103
- it "should call a block on the element method when present" do
104
- expect(watir_page_object.gxt_block_table_element).to eql "block_gxt_table"
105
- end
106
-
107
- it "should call a block on the elements method when present" do
108
- expect(watir_page_object.gxt_multiple_block_table_elements).to eql "multiple_block_gxt_table"
109
- end
110
- end
111
-
112
- it "should retrieve the table element from the page" do
113
- expect(watir_browser).to receive(:div).and_return(watir_browser)
114
- element = watir_page_object.a_table_element
115
- expect(element).to be_instance_of GxtTable
116
- end
117
-
118
- it "should retrieve all table elements from the page" do
119
- expect(watir_browser).to receive(:divs).and_return([watir_browser])
120
- element = watir_page_object.some_table_elements
121
- expect(element[0]).to be_instance_of GxtTable
122
- end
123
-
124
- it "should be able to specify the plural form" do
125
- expect(watir_browser).to receive(:divs).and_return([watir_browser])
126
- element = watir_page_object.matrix_elements
127
- expect(element[0]).to be_instance_of WidgetMatrix
128
- end
129
- end
130
- end
131
-
132
- describe "Widget Elements-GxtTable" do
133
- describe "when mapping how to find an element" do
134
- it "should map watir types to same" do
135
- [:class, :id, :index, :xpath].each do |t|
136
- identifier = GxtTable.watir_identifier_for t => 'value'
137
- expect(identifier.keys.first).to eql t
138
- end
139
- end
140
-
141
- it "should map selenium types to same" do
142
- [:class, :id, :index, :name, :xpath].each do |t|
143
- key, value = GxtTable.selenium_identifier_for t => 'value'
144
- expect(key).to eql t
145
- end
146
- end
147
- end
148
-
149
- describe "interface" do
150
- let(:gxt_table_element) { double('gxt_table_element') }
151
-
152
- before(:each) do
153
- allow(gxt_table_element).to receive(:[]).and_return(gxt_table_element)
154
- allow(gxt_table_element).to receive(:find_elements).and_return(gxt_table_element)
155
- end
156
-
157
- context "for watir" do
158
- let(:watir_table) { GxtTable.new(gxt_table_element, :platform => :watir_webdriver) }
159
-
160
- it "should return a table row when indexed" do
161
- allow(gxt_table_element).to receive(:[]).with(1).and_return(gxt_table_element)
162
- expect(watir_table[1]).to be_instance_of PageObject::Elements::TableRow
163
- end
164
-
165
- it "should return the number of rows" do
166
- allow(gxt_table_element).to receive(:wd).and_return(gxt_table_element)
167
- expect(gxt_table_element).to receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
168
- expect(gxt_table_element).to receive(:size).and_return(2)
169
- expect(watir_table.rows).to eql 2
170
- end
171
- end
172
-
173
- context "for selenium" do
174
- let(:selenium_table) { GxtTable.new(gxt_table_element, :platform => :selenium_webdriver) }
175
-
176
- it "should return a table row when indexed" do
177
- expect(gxt_table_element).to receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
178
- expect(selenium_table[1]).to be_instance_of PageObject::Elements::TableRow
179
- end
180
-
181
- it "should return the number of rows" do
182
- expect(gxt_table_element).to receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
183
- expect(gxt_table_element).to receive(:size).and_return(2)
184
- expect(selenium_table.rows).to eql 2
185
- end
186
-
187
- it "should iterate over the table rows" do
188
- expect(selenium_table).to receive(:rows).and_return(2)
189
- count = 0
190
- selenium_table.each { |e| count += 1 }
191
- expect(count).to eql 2
192
- end
193
- end
194
- end
195
- end
196
-
197
- describe "Element with nested elements" do
198
- context "in Watir" do
199
- before(:each) do
200
- @watir_driver = Watir::Element.new(nil, {})
201
- @watir_element = PageObject::Elements::Element.new(@watir_driver, :platform => :watir_webdriver)
202
- end
203
-
204
- it "should find a nested gxt_table" do
205
- expect(@watir_driver).to receive(:div).and_return(@watir_driver)
206
- @watir_element.gxt_table_element
207
- end
208
- end
209
-
210
- context "in Selenium" do
211
- before(:each) do
212
- @selenium_driver = double('selenium')
213
- @selenium_element = PageObject::Elements::Element.new(@selenium_driver, :platform => :selenium_webdriver)
214
- end
215
-
216
- it "should find a nested gxt_table" do
217
- expect(@selenium_driver).to receive(:find_element).and_return(@selenium_driver)
218
- @selenium_element.gxt_table_element
219
- end
220
- end
221
- end
222
- end
223
-
224
-
225
-
226
-
@@ -1,43 +0,0 @@
1
- # encoding: utf-8
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
-
5
- require 'simplecov'
6
- require 'coveralls'
7
- SimpleCov.start { add_filter 'spec/' }
8
-
9
- require 'rspec'
10
- require 'watir-webdriver'
11
- require 'selenium-webdriver'
12
-
13
- require 'page-object'
14
-
15
- def mock_watir_browser
16
- watir_browser = double('watir')
17
- allow(watir_browser).to receive(:is_a?).with(anything()).and_return(false)
18
- allow(watir_browser).to receive(:is_a?).with(Watir::Browser).and_return(true)
19
- watir_browser
20
- end
21
-
22
-
23
- def mock_selenium_browser
24
- selenium_browser = double('selenium')
25
- allow(selenium_browser).to receive(:is_a?).with(anything).and_return(false)
26
- allow(selenium_browser).to receive(:is_a?).with(Selenium::WebDriver::Driver).and_return(true)
27
- selenium_browser
28
- end
29
-
30
-
31
- def mock_adapter(browser, page_object)
32
- adapter = double('adapter')
33
- allow(adapter).to receive(:is_for?).with(anything()).and_return false
34
- allow(adapter).to receive(:is_for?).with(browser).and_return true
35
- allow(adapter).to receive(:create_page_object).and_return page_object
36
- allow(adapter).to receive(:root_element_for).and_return browser
37
- allow(adapter).to receive(:browser_for).and_return browser
38
- adapter
39
- end
40
-
41
- def mock_adapters(adapters)
42
- allow(PageObject::Platforms).to receive(:get).and_return adapters
43
- end