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,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class TestClass
4
- include PageObject::JavascriptFrameworkFacade
5
- end
6
-
7
-
8
- describe PageObject::JavascriptFrameworkFacade do
9
- let(:facade) { PageObject::JavascriptFrameworkFacade }
10
-
11
- it "should allow the selection of a javascript framework" do
12
- facade.framework = :jquery
13
- expect(facade.framework).to eql :jquery
14
- end
15
-
16
- it "should register the jQuery script builder" do
17
- facade.framework = :jquery
18
- expect(facade.script_builder).to eql ::PageObject::Javascript::JQuery
19
- end
20
-
21
- it "should return script for pending requests in jQuery" do
22
- facade.framework = :jquery
23
- expect(facade.pending_requests).to eql 'return jQuery.active'
24
- end
25
-
26
- it "should register the Prototype script builder" do
27
- facade.framework = :prototype
28
- expect(facade.script_builder).to eql ::PageObject::Javascript::Prototype
29
- end
30
-
31
- it "should return script for pending requests in Prototype" do
32
- facade.framework = :prototype
33
- expect(facade.pending_requests).to eql 'return Ajax.activeRequestCount'
34
- end
35
-
36
- it "should not allow you to set the framework to one it does not know about" do
37
- expect{ facade.framework = :blah }.to raise_error
38
- end
39
-
40
- it "should allow you to add a new javascript framework" do
41
- module GoodFake
42
- def self.pending_requests
43
- "fake"
44
- end
45
- end
46
-
47
- facade.add_framework(:blah, GoodFake)
48
- facade.framework = :blah
49
- expect(facade.pending_requests).to eql "fake"
50
- end
51
-
52
- it "should not allow you to add a new javascript framework that is invalid" do
53
- module BadFake
54
- def self.blah
55
- end
56
- end
57
-
58
- expect{ facade.add_framework(:blah, BadFake) }.to raise_error
59
- end
60
- end
61
-
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
- class TestLoadsPlatform
3
- include PageObject::LoadsPlatform
4
- end
5
- describe TestLoadsPlatform do
6
- let(:subject) { TestLoadsPlatform.new }
7
- let(:adapters) { {} }
8
-
9
- context "when browser x is registered with platform nom_nom_nom" do
10
- let(:browser_x) { double('browser') }
11
- before { adapters[:browser_x] = mock_adapter(browser_x, :nom_nom_nom) }
12
-
13
- it "returns platform nom_nom_nom when asked about browser_x" do
14
- expect(subject.load_platform(browser_x, adapters)).to eql :nom_nom_nom
15
- end
16
-
17
- context "when browser a is registered with platform boom_boom_boom" do
18
- let(:browser_a) { double('browser') }
19
- before { adapters[:browser_a] = mock_adapter(browser_a, :boom_boom_boom) }
20
-
21
- it "should return platform nom_nom_nom when asked about browser_x" do
22
- expect(subject.load_platform(browser_x, adapters)).to eql :nom_nom_nom
23
- end
24
- end
25
- end
26
-
27
- context "when browser a is registered with platform boom_boom_boom" do
28
- let(:browser_n) { double('browser') }
29
- before { adapters[:browser_n] = mock_adapter(browser_n, :boom_boom_boom) }
30
-
31
- it "should return platform boom_boom_boom" do
32
- expect(subject.load_platform(browser_n, adapters)).to eql :boom_boom_boom
33
- end
34
- end
35
-
36
- context "When an unknow object is passed in" do
37
- let(:basic_message) { 'Unable to pick a platform for the provided browser or element:' }
38
-
39
- it "should throw an exception" do
40
- expect {
41
- subject.load_platform("browser", {})
42
- }.to raise_error("#{basic_message} \"browser\".")
43
- end
44
-
45
- it "should notify when the browser is nil" do
46
- begin
47
- subject.load_platform(nil, {})
48
- rescue Exception => e
49
- expect(e.message).to eql "#{basic_message} nil.\nnil was passed to the PageObject constructor instead of a valid browser or element object."
50
- end
51
- end
52
- end
53
- end
@@ -1,435 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class PageObjectTestPageObject
4
- include PageObject
5
- end
6
-
7
- class CustomPlatform
8
- end
9
-
10
- describe PageObject do
11
- let(:watir_browser) { mock_watir_browser }
12
- let(:selenium_browser) { mock_selenium_browser }
13
- let(:watir_page_object) { PageObjectTestPageObject.new(watir_browser) }
14
- let(:selenium_page_object) { PageObjectTestPageObject.new(selenium_browser) }
15
-
16
- context "setting values on the PageObject module" do
17
- it "should set the javascript framework" do
18
- expect(PageObject::JavascriptFrameworkFacade).to receive(:framework=)
19
- PageObject.javascript_framework = :foo
20
- end
21
-
22
- it "should add a new Javascript Framework" do
23
- expect(PageObject::JavascriptFrameworkFacade).to receive(:add_framework)
24
- PageObject.add_framework(:foo, :bar)
25
- end
26
-
27
- it "should set a default page wait value" do
28
- PageObject.default_page_wait = 20
29
- wait = PageObject.instance_variable_get("@page_wait")
30
- expect(wait).to eql 20
31
- end
32
-
33
- it "should provide the default page wait value" do
34
- PageObject.instance_variable_set("@page_wait", 10)
35
- expect(PageObject.default_page_wait).to eql 10
36
- end
37
-
38
- it "should default the page wait value to 30" do
39
- PageObject.instance_variable_set("@page_wait", nil)
40
- expect(PageObject.default_page_wait).to eql 30
41
- end
42
-
43
- it "should set the default element wait value" do
44
- PageObject.default_element_wait = 20
45
- wait = PageObject.instance_variable_get("@element_wait")
46
- expect(wait).to eql 20
47
- end
48
-
49
- it "should provide the default element wait value" do
50
- PageObject.instance_variable_set("@element_wait", 10)
51
- expect(PageObject.default_element_wait).to eql 10
52
- end
53
-
54
- it "should default the element wait to 5" do
55
- PageObject.instance_variable_set("@element_wait", nil)
56
- expect(PageObject.default_element_wait).to eql 5
57
- end
58
- end
59
-
60
- context "setting values on the PageObject class instance" do
61
- it "should set the params value" do
62
- PageObjectTestPageObject.params = {:some => :value}
63
- params = PageObjectTestPageObject.instance_variable_get("@params")
64
- expect(params[:some]).to eql :value
65
- end
66
-
67
- it "should provide the params value" do
68
- PageObjectTestPageObject.instance_variable_set("@params", {:value => :updated})
69
- expect(PageObjectTestPageObject.params[:value]).to eql :updated
70
- end
71
-
72
- it "should default the params to an empty hash" do
73
- PageObjectTestPageObject.instance_variable_set("@params", nil)
74
- expect(PageObjectTestPageObject.params).to eql Hash.new
75
- end
76
- end
77
-
78
- context "when created with a watir-webdriver browser" do
79
- it "should include the WatirPageObject module" do
80
- expect(watir_page_object.platform).to be_kind_of PageObject::Platforms::WatirWebDriver::PageObject
81
- end
82
- end
83
-
84
- context "when created with a selenium browser" do
85
- it "should include the SeleniumPageObject module" do
86
- expect(selenium_page_object.platform).to be_kind_of PageObject::Platforms::SeleniumWebDriver::PageObject
87
- end
88
- end
89
-
90
- context "when created with a non_bundled adapter" do
91
- let(:custom_adapter) { mock_adapter(:custom_browser, CustomPlatform) }
92
-
93
- it "should be an instance of whatever that objects adapter is" do
94
- mock_adapters({:custom_adapter=>custom_adapter})
95
- custom_page_object = PageObjectTestPageObject.new(:custom_browser)
96
- expect(custom_page_object.platform).to be custom_adapter.create_page_object
97
- end
98
- end
99
-
100
- context "when created with an object we do not understand" do
101
- it "should throw an error" do
102
- expect {
103
- TestPageObject.new("blah")
104
- }.to raise_error
105
- end
106
- end
107
-
108
- describe "page level functionality" do
109
- context "for all drivers" do
110
- it "should try a second time after sleeping when attach to window fails" do
111
- expect(watir_page_object.platform).to receive(:attach_to_window).once.and_throw "error"
112
- expect(watir_page_object.platform).to receive(:attach_to_window)
113
- watir_page_object.attach_to_window("blah")
114
- end
115
-
116
- it "should call initialize_page if it exists" do
117
- class CallbackPage
118
- include PageObject
119
- attr_reader :initialize_page_called
120
-
121
- def initialize_page
122
- @initialize_page_called = true
123
- end
124
- end
125
-
126
- @page = CallbackPage.new(watir_browser)
127
- expect(@page.initialize_page_called).to be true
128
- end
129
-
130
- it "should call initialize_accessors if it exists" do
131
- class CallbackPage
132
- include PageObject
133
- attr_reader :initialize_accessors_called
134
-
135
- def initialize_accessors
136
- @initialize_accessors_called = true
137
- end
138
- end
139
-
140
- @page = CallbackPage.new(watir_browser)
141
- expect(@page.initialize_accessors_called).to be true
142
- end
143
-
144
- it "should call initialize_accessors before initialize_page if both exist" do
145
- class CallbackPage
146
- include PageObject
147
- attr_reader :initialize_page, :initialize_accessors
148
-
149
- def initialize_page
150
- @initialize_accessors = Time.now
151
- end
152
-
153
- def initialize_page
154
- @initialize_accessors = Time.now
155
- end
156
- end
157
-
158
- @page = CallbackPage.new(watir_browser)
159
- expect(@page.initialize_accessors.usec).to be <= @page.initialize_page.usec
160
- end
161
-
162
- it "should know which element has focus" do
163
- expect(watir_browser).to receive(:execute_script).and_return(watir_browser)
164
- expect(watir_browser).to receive(:tag_name).twice.and_return(:input)
165
- expect(watir_browser).to receive(:type).and_return(:submit)
166
- expect(watir_page_object.element_with_focus.class).to eql PageObject::Elements::Button
167
- end
168
-
169
- context "when sent a missing method" do
170
- it "should not respond to it if the @root_element doesn't exist" do
171
- # nil responds to `to_i`, @root_element is nil, but the page object doesn't respond
172
- expect(nil).to respond_to :to_i
173
- expect(watir_page_object.instance_variable_get(:@root_element)).to be nil
174
- expect(watir_page_object).not_to respond_to :to_i
175
- expect { watir_page_object.to_i }.to raise_error NoMethodError
176
- end
177
-
178
- it "should respond to it if the @root_element exists and responds" do
179
- # sanity checks
180
- expect(watir_page_object.instance_variable_get(:@root_element)).to be nil
181
- expect(watir_page_object).not_to respond_to :bar
182
- expect(watir_page_object).not_to respond_to :baz
183
- # set @root_element
184
- class Foo; def bar; :bar_called; end; private; def baz; end; end
185
- watir_page_object.instance_variable_set(:@root_element, Foo.new)
186
- # test
187
- expect(watir_page_object).to respond_to :bar
188
- expect(watir_page_object).not_to respond_to :baz
189
- expect(watir_page_object.bar).to eq :bar_called
190
- expect { watir_page_object.baz }.to raise_error NoMethodError
191
- # can't get to private methods
192
- expect(watir_page_object.respond_to?(:baz, true)).to be false
193
- expect { watir_page_object.send(:baz) }.to raise_error NoMethodError
194
- end
195
- end
196
- end
197
-
198
- context "when using WatirPageObject" do
199
- it "should display the page text" do
200
- expect(watir_browser).to receive(:element).and_return(watir_browser)
201
- expect(watir_browser).to receive(:text).and_return("browser text")
202
- expect(watir_page_object.text).to eql "browser text"
203
- end
204
-
205
- it "should display the html of the page" do
206
- expect(watir_browser).to receive(:html).and_return("<html>Some Sample HTML</html>")
207
- expect(watir_page_object.html).to eql "<html>Some Sample HTML</html>"
208
- end
209
-
210
- it "should display the title of the page" do
211
- expect(watir_browser).to receive(:title).and_return("I am the title of a page")
212
- expect(watir_page_object.title).to eql "I am the title of a page"
213
- end
214
-
215
- it "should be able to navigate to a page" do
216
- expect(watir_browser).to receive(:goto).with("cheezyworld.com")
217
- watir_page_object.navigate_to("cheezyworld.com")
218
- end
219
-
220
- it "should wait until a block returns true" do
221
- expect(watir_browser).to receive(:wait_until).with(5, "too long")
222
- watir_page_object.wait_until(5, "too long")
223
- end
224
-
225
- it "should use the overriden timeout value when set" do
226
- PageObject.default_page_wait = 10
227
- expect(watir_browser).to receive(:wait_until).with(10, nil)
228
- watir_page_object.wait_until
229
- end
230
-
231
- it "should wait until there are no pending ajax requests" do
232
- expect(PageObject::JavascriptFrameworkFacade).to receive(:pending_requests).and_return('pending requests')
233
- expect(watir_browser).to receive(:execute_script).with('pending requests').and_return(0)
234
- watir_page_object.wait_for_ajax
235
- end
236
-
237
- it "should override alert popup behavior" do
238
- expect(watir_browser).to receive(:alert).exactly(3).times.and_return(watir_browser)
239
- expect(watir_browser).to receive(:exists?).and_return(true)
240
- expect(watir_browser).to receive(:text)
241
- expect(watir_browser).to receive(:ok)
242
- watir_page_object.alert do
243
- end
244
- end
245
-
246
- it "should override confirm popup behavior" do
247
- expect(watir_browser).to receive(:alert).exactly(3).times.and_return(watir_browser)
248
- expect(watir_browser).to receive(:exists?).and_return(true)
249
- expect(watir_browser).to receive(:text)
250
- expect(watir_browser).to receive(:ok)
251
- watir_page_object.confirm(true) do
252
- end
253
- end
254
-
255
- it "should override prompt popup behavior" do
256
- expect(watir_browser).to receive(:wd).twice.and_return(watir_browser)
257
- expect(watir_browser).to receive(:execute_script).twice
258
- watir_page_object.prompt("blah") do
259
- end
260
- end
261
-
262
- it "should execute javascript on the browser" do
263
- expect(watir_browser).to receive(:execute_script).and_return("abc")
264
- expect(watir_page_object.execute_script("333")).to eql "abc"
265
- end
266
-
267
- it "should convert a modal popup to a window" do
268
- expect(watir_browser).to receive(:execute_script)
269
- watir_page_object.modal_dialog {}
270
- end
271
-
272
- it "should switch to a new window with a given title" do
273
- expect(watir_browser).to receive(:window).with(:title => /My\ Title/).and_return(watir_browser)
274
- expect(watir_browser).to receive(:use)
275
- watir_page_object.attach_to_window(:title => "My Title")
276
- end
277
-
278
- it "should switch to a new window with a given url" do
279
- expect(watir_browser).to receive(:window).with(:url => /success\.html/).and_return(watir_browser)
280
- expect(watir_browser).to receive(:use)
281
- watir_page_object.attach_to_window(:url => "success.html")
282
- end
283
-
284
- it "should refresh the page contents" do
285
- expect(watir_browser).to receive(:refresh)
286
- watir_page_object.refresh
287
- end
288
-
289
- it "should know how to go back" do
290
- expect(watir_browser).to receive(:back)
291
- watir_page_object.back
292
- end
293
-
294
- it "should know how to go forward" do
295
- expect(watir_browser).to receive(:forward)
296
- watir_page_object.forward
297
- end
298
-
299
- it "should know its' current url" do
300
- expect(watir_browser).to receive(:url).and_return("cheezyworld.com")
301
- expect(watir_page_object.current_url).to eql "cheezyworld.com"
302
- end
303
-
304
- it "should know how to clear all of the cookies from the browser" do
305
- expect(watir_browser).to receive(:cookies).and_return(watir_browser)
306
- expect(watir_browser).to receive(:clear)
307
- watir_page_object.clear_cookies
308
- end
309
-
310
- it "should be able to save a screenshot" do
311
- expect(watir_browser).to receive(:wd).and_return(watir_browser)
312
- expect(watir_browser).to receive(:save_screenshot)
313
- watir_page_object.save_screenshot("test.png")
314
- end
315
- end
316
-
317
- context "when using SeleniumPageObject" do
318
- it "should display the page text" do
319
- expect(selenium_browser).to receive_messages(find_element: selenium_browser, text: 'browser text')
320
- expect(selenium_page_object.text).to eql "browser text"
321
- end
322
-
323
- it "should display the html of the page" do
324
- expect(selenium_browser).to receive(:page_source).and_return("<html>Some Sample HTML</html>")
325
- expect(selenium_page_object.html).to eql "<html>Some Sample HTML</html>"
326
- end
327
-
328
- it "should display the title of the page" do
329
- expect(selenium_browser).to receive(:title).and_return("I am the title of a page")
330
- expect(selenium_page_object.title).to eql "I am the title of a page"
331
- end
332
-
333
- it "should be able to navigate to a page" do
334
- expect(selenium_browser).to receive_messages(navigate: selenium_browser, to: 'cheezyworld.com')
335
- selenium_page_object.navigate_to('cheezyworld.com')
336
- end
337
-
338
- it "should wait until a block returns true" do
339
- wait = double('wait')
340
- expect(Selenium::WebDriver::Wait).to receive(:new).with({:timeout => 5, :message => 'too long'}).and_return(wait)
341
- expect(wait).to receive(:until)
342
- selenium_page_object.wait_until(5, 'too long')
343
- end
344
-
345
- it "should wait until there are no pending ajax requests" do
346
- expect(PageObject::JavascriptFrameworkFacade).to receive(:pending_requests).and_return('pending requests')
347
- expect(selenium_browser).to receive(:execute_script).with('pending requests').and_return(0)
348
- selenium_page_object.wait_for_ajax
349
- end
350
-
351
- it "should override alert popup behavior" do
352
- expect(selenium_browser).to receive(:switch_to).and_return(selenium_browser)
353
- expect(selenium_browser).to receive(:alert).and_return(selenium_browser)
354
- expect(selenium_browser).to receive(:text)
355
- expect(selenium_browser).to receive(:accept)
356
- selenium_page_object.alert do
357
- end
358
- end
359
-
360
- it "should override confirm popup behavior" do
361
- expect(selenium_browser).to receive(:switch_to).and_return(selenium_browser)
362
- expect(selenium_browser).to receive(:alert).and_return(selenium_browser)
363
- expect(selenium_browser).to receive(:text)
364
- expect(selenium_browser).to receive(:accept)
365
- selenium_page_object.confirm(true) do
366
- end
367
- end
368
- it "should override prompt popup behavior" do
369
- expect(selenium_browser).to receive(:execute_script).twice
370
- selenium_page_object.prompt("blah") do
371
- end
372
- end
373
-
374
- it "should convert a modal popup to a window" do
375
- expect(selenium_browser).to receive(:execute_script)
376
- selenium_page_object.modal_dialog {}
377
- end
378
-
379
- it "should execute javascript on the browser" do
380
- expect(selenium_browser).to receive(:execute_script).and_return("abc")
381
- expect(selenium_page_object.execute_script("333")).to eql "abc"
382
- end
383
-
384
- it "should switch to a new window with a given title" do
385
- expect(selenium_browser).to receive(:window_handles).and_return(["win1"])
386
- expect(selenium_browser).to receive(:switch_to).twice.and_return(selenium_browser)
387
- expect(selenium_browser).to receive(:window).twice.with("win1").and_return(selenium_browser)
388
- expect(selenium_browser).to receive(:title).and_return("My Title")
389
- selenium_page_object.attach_to_window(:title => "My Title")
390
- end
391
-
392
- it "should switch to a new window with a given url" do
393
- expect(selenium_browser).to receive(:window_handles).and_return(["win1"])
394
- expect(selenium_browser).to receive(:switch_to).twice.and_return(selenium_browser)
395
- expect(selenium_browser).to receive(:window).twice.with("win1").and_return(selenium_browser)
396
- expect(selenium_browser).to receive(:current_url).and_return("page.html")
397
- selenium_page_object.attach_to_window(:url => "page.html")
398
- end
399
-
400
- it "should refresh the page contents" do
401
- expect(selenium_browser).to receive(:navigate).and_return(selenium_browser)
402
- expect(selenium_browser).to receive(:refresh)
403
- selenium_page_object.refresh
404
- end
405
-
406
- it "should know how to go back" do
407
- expect(selenium_browser).to receive(:navigate).and_return(selenium_browser)
408
- expect(selenium_browser).to receive(:back)
409
- selenium_page_object.back
410
- end
411
-
412
- it "should know how to go forward" do
413
- expect(selenium_browser).to receive(:navigate).and_return(selenium_browser)
414
- expect(selenium_browser).to receive(:forward)
415
- selenium_page_object.forward
416
- end
417
-
418
- it "should know its' current url" do
419
- expect(selenium_browser).to receive(:current_url).and_return("cheezyworld.com")
420
- expect(selenium_page_object.current_url).to eql "cheezyworld.com"
421
- end
422
-
423
- it "should clear all of the cookies from the browser" do
424
- expect(selenium_browser).to receive(:manage).and_return(selenium_browser)
425
- expect(selenium_browser).to receive(:delete_all_cookies)
426
- selenium_page_object.clear_cookies
427
- end
428
-
429
- it "should be able to save a screenshot" do
430
- expect(selenium_browser).to receive(:save_screenshot)
431
- selenium_page_object.save_screenshot("test.png")
432
- end
433
- end
434
- end
435
- end