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,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