page-object 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +22 -12
  3. data/ChangeLog +10 -0
  4. data/Gemfile +4 -2
  5. data/Guardfile +1 -1
  6. data/README.md +2 -2
  7. data/lib/page-object/accessors.rb +57 -35
  8. data/lib/page-object/elements/element.rb +26 -0
  9. data/lib/page-object/locator_generator.rb +46 -0
  10. data/lib/page-object/platforms/selenium_webdriver/element.rb +6 -6
  11. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +14 -0
  12. data/lib/page-object/platforms/watir_webdriver/element.rb +0 -7
  13. data/lib/page-object/platforms/watir_webdriver/page_object.rb +16 -3
  14. data/lib/page-object/version.rb +1 -1
  15. data/page-object.gemspec +7 -10
  16. metadata +34 -375
  17. data/features/area.feature +0 -35
  18. data/features/async.feature +0 -21
  19. data/features/audio.feature +0 -64
  20. data/features/bold.feature +0 -21
  21. data/features/button.feature +0 -98
  22. data/features/canvas.feature +0 -37
  23. data/features/check_box.feature +0 -55
  24. data/features/div.feature +0 -45
  25. data/features/element.feature +0 -343
  26. data/features/file_field.feature +0 -40
  27. data/features/form.feature +0 -43
  28. data/features/frames.feature +0 -75
  29. data/features/generic_elements.feature +0 -29
  30. data/features/gxt_table_extension.feature +0 -23
  31. data/features/headings.feature +0 -97
  32. data/features/hidden_field.feature +0 -45
  33. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  34. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  35. data/features/html/async.html +0 -36
  36. data/features/html/double_click.html +0 -13
  37. data/features/html/failure.html +0 -8
  38. data/features/html/frame_1.html +0 -18
  39. data/features/html/frame_2.html +0 -16
  40. data/features/html/frame_3.html +0 -14
  41. data/features/html/frames.html +0 -12
  42. data/features/html/hover.html +0 -12
  43. data/features/html/iframes.html +0 -12
  44. data/features/html/images/circle.png +0 -0
  45. data/features/html/images/img_pulpit.jpg +0 -0
  46. data/features/html/images/submit.gif +0 -0
  47. data/features/html/indexed_property.html +0 -55
  48. data/features/html/modal.html +0 -17
  49. data/features/html/modal_1.html +0 -38
  50. data/features/html/modal_2.html +0 -27
  51. data/features/html/movie.mp4 +0 -0
  52. data/features/html/movie.ogg +0 -0
  53. data/features/html/multi_elements.html +0 -145
  54. data/features/html/nested_elements.html +0 -77
  55. data/features/html/nested_frame_1.html +0 -1
  56. data/features/html/nested_frame_2.html +0 -11
  57. data/features/html/nested_frame_3.html +0 -14
  58. data/features/html/nested_frames.html +0 -10
  59. data/features/html/planets.gif +0 -0
  60. data/features/html/static_elements.html +0 -194
  61. data/features/html/success.html +0 -8
  62. data/features/html/sun.gif +0 -0
  63. data/features/html/sun.html +0 -7
  64. data/features/html/widgets.html +0 -20
  65. data/features/image.feature +0 -50
  66. data/features/indexed_property.feature +0 -117
  67. data/features/italic.feature +0 -21
  68. data/features/javascript.feature +0 -28
  69. data/features/label.feature +0 -46
  70. data/features/link.feature +0 -52
  71. data/features/list_item.feature +0 -36
  72. data/features/modal_dialog.feature +0 -15
  73. data/features/multi_elements.feature +0 -498
  74. data/features/nested_elements.feature +0 -117
  75. data/features/ordered_list.feature +0 -56
  76. data/features/page_level_actions.feature +0 -90
  77. data/features/paragraph.feature +0 -35
  78. data/features/radio_button.feature +0 -58
  79. data/features/radio_button_group.feature +0 -29
  80. data/features/sample-app/public/audio_video.html +0 -23
  81. data/features/sample-app/public/jquery-1.3.2.js +0 -4376
  82. data/features/sample-app/public/jquery.html +0 -30
  83. data/features/sample-app/public/prototype-1.6.0.3.js +0 -4320
  84. data/features/sample-app/public/prototype.html +0 -35
  85. data/features/sample-app/sample_app.rb +0 -35
  86. data/features/section.feature +0 -136
  87. data/features/select_list.feature +0 -86
  88. data/features/span.feature +0 -37
  89. data/features/step_definitions/accessor_steps.rb +0 -64
  90. data/features/step_definitions/area_steps.rb +0 -19
  91. data/features/step_definitions/async_steps.rb +0 -83
  92. data/features/step_definitions/audio_steps.rb +0 -27
  93. data/features/step_definitions/bold_steps.rb +0 -12
  94. data/features/step_definitions/button_steps.rb +0 -48
  95. data/features/step_definitions/canvas_steps.rb +0 -15
  96. data/features/step_definitions/check_box_steps.rb +0 -35
  97. data/features/step_definitions/div_steps.rb +0 -19
  98. data/features/step_definitions/element_steps.rb +0 -294
  99. data/features/step_definitions/file_field_steps.rb +0 -19
  100. data/features/step_definitions/form_steps.rb +0 -19
  101. data/features/step_definitions/frames_steps.rb +0 -159
  102. data/features/step_definitions/generic_element_steps.rb +0 -31
  103. data/features/step_definitions/gxt_table_steps.rb +0 -53
  104. data/features/step_definitions/headings_steps.rb +0 -12
  105. data/features/step_definitions/hidden_field_steps.rb +0 -27
  106. data/features/step_definitions/image_steps.rb +0 -27
  107. data/features/step_definitions/indexed_property_steps.rb +0 -163
  108. data/features/step_definitions/italic_steps.rb +0 -12
  109. data/features/step_definitions/javascript_steps.rb +0 -53
  110. data/features/step_definitions/label_steps.rb +0 -19
  111. data/features/step_definitions/link_steps.rb +0 -40
  112. data/features/step_definitions/list_item_steps.rb +0 -19
  113. data/features/step_definitions/modal_dialog_steps.rb +0 -62
  114. data/features/step_definitions/multi_elements_steps.rb +0 -554
  115. data/features/step_definitions/nested_elements_steps.rb +0 -212
  116. data/features/step_definitions/ordered_list_steps.rb +0 -23
  117. data/features/step_definitions/page_level_actions_steps.rb +0 -135
  118. data/features/step_definitions/page_traversal_steps.rb +0 -8
  119. data/features/step_definitions/paragraph_steps.rb +0 -28
  120. data/features/step_definitions/radio_button_group_steps.rb +0 -36
  121. data/features/step_definitions/radio_button_steps.rb +0 -27
  122. data/features/step_definitions/section_steps.rb +0 -277
  123. data/features/step_definitions/select_list_steps.rb +0 -65
  124. data/features/step_definitions/span_steps.rb +0 -19
  125. data/features/step_definitions/table_cell_steps.rb +0 -15
  126. data/features/step_definitions/table_row_steps.rb +0 -23
  127. data/features/step_definitions/table_steps.rb +0 -70
  128. data/features/step_definitions/text_area_steps.rb +0 -35
  129. data/features/step_definitions/text_field_steps.rb +0 -35
  130. data/features/step_definitions/unordered_list_steps.rb +0 -23
  131. data/features/step_definitions/video_steps.rb +0 -45
  132. data/features/support/ajax_text_environment.rb +0 -26
  133. data/features/support/audio_video_page.rb +0 -24
  134. data/features/support/env.rb +0 -8
  135. data/features/support/hooks.rb +0 -8
  136. data/features/support/page.rb +0 -373
  137. data/features/support/persistent_browser.rb +0 -70
  138. data/features/support/targets/firefox14_osx.rb +0 -6
  139. data/features/support/targets/firefox14_windows7.rb +0 -6
  140. data/features/support/url_helper.rb +0 -61
  141. data/features/table.feature +0 -122
  142. data/features/table_cell.feature +0 -45
  143. data/features/table_row.feature +0 -43
  144. data/features/text_area.feature +0 -51
  145. data/features/text_field.feature +0 -70
  146. data/features/unordered_list.feature +0 -56
  147. data/features/video.feature +0 -69
  148. data/spec/page-object/accessors_spec.rb +0 -40
  149. data/spec/page-object/element_locators_spec.rb +0 -1144
  150. data/spec/page-object/elements/area_spec.rb +0 -45
  151. data/spec/page-object/elements/bold_spec.rb +0 -29
  152. data/spec/page-object/elements/button_spec.rb +0 -64
  153. data/spec/page-object/elements/canvas_spec.rb +0 -41
  154. data/spec/page-object/elements/check_box_spec.rb +0 -49
  155. data/spec/page-object/elements/div_spec.rb +0 -28
  156. data/spec/page-object/elements/element_spec.rb +0 -196
  157. data/spec/page-object/elements/file_field_spec.rb +0 -39
  158. data/spec/page-object/elements/form_spec.rb +0 -28
  159. data/spec/page-object/elements/heading_spec.rb +0 -48
  160. data/spec/page-object/elements/hidden_field_spec.rb +0 -28
  161. data/spec/page-object/elements/image_spec.rb +0 -66
  162. data/spec/page-object/elements/italic_spec.rb +0 -29
  163. data/spec/page-object/elements/label_spec.rb +0 -29
  164. data/spec/page-object/elements/link_spec.rb +0 -49
  165. data/spec/page-object/elements/list_item_spec.rb +0 -29
  166. data/spec/page-object/elements/media_spec.rb +0 -63
  167. data/spec/page-object/elements/nested_element_spec.rb +0 -254
  168. data/spec/page-object/elements/option_spec.rb +0 -11
  169. data/spec/page-object/elements/ordered_list_spec.rb +0 -78
  170. data/spec/page-object/elements/paragraph_spec.rb +0 -27
  171. data/spec/page-object/elements/select_list_spec.rb +0 -142
  172. data/spec/page-object/elements/selenium/radio_button_spec.rb +0 -44
  173. data/spec/page-object/elements/selenium/text_field_spec.rb +0 -49
  174. data/spec/page-object/elements/selenium_element_spec.rb +0 -218
  175. data/spec/page-object/elements/span_spec.rb +0 -26
  176. data/spec/page-object/elements/table_cell_spec.rb +0 -21
  177. data/spec/page-object/elements/table_row_spec.rb +0 -70
  178. data/spec/page-object/elements/table_spec.rb +0 -98
  179. data/spec/page-object/elements/text_area_spec.rb +0 -39
  180. data/spec/page-object/elements/unordered_list_spec.rb +0 -77
  181. data/spec/page-object/elements/video_spec.rb +0 -33
  182. data/spec/page-object/elements/watir_element_spec.rb +0 -193
  183. data/spec/page-object/javascript_framework_facade_spec.rb +0 -61
  184. data/spec/page-object/loads_platform_spec.rb +0 -53
  185. data/spec/page-object/page-object_spec.rb +0 -435
  186. data/spec/page-object/page_factory_spec.rb +0 -238
  187. data/spec/page-object/page_populator_spec.rb +0 -122
  188. data/spec/page-object/page_section_spec.rb +0 -80
  189. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +0 -68
  190. data/spec/page-object/platforms/selenium_webdriver_spec.rb +0 -29
  191. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +0 -29
  192. data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -9
  193. data/spec/page-object/selenium_accessors_spec.rb +0 -628
  194. data/spec/page-object/watir_accessors_spec.rb +0 -1191
  195. data/spec/page-object/widget_spec.rb +0 -226
  196. data/spec/spec_helper.rb +0 -43
@@ -1,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