terminus_spec 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +26 -0
- data/.rspec +1 -0
- data/.rvmrc +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +7 -0
- data/HISTORY.md +54 -0
- data/LICENSE +20 -0
- data/README.md +13 -0
- data/Rakefile +43 -0
- data/cucumber.yml +6 -0
- data/lib/terminus_spec.rb +200 -0
- data/lib/terminus_spec/factory.rb +27 -0
- data/lib/terminus_spec/generators.rb +80 -0
- data/lib/terminus_spec/locators.rb +23 -0
- data/lib/terminus_spec/logger.rb +7 -0
- data/lib/terminus_spec/matchers.rb +41 -0
- data/lib/terminus_spec/platform_selenium.rb +18 -0
- data/lib/terminus_spec/platform_selenium/platform_object.rb +214 -0
- data/lib/terminus_spec/platform_selenium/web_objects/all.rb +98 -0
- data/lib/terminus_spec/platform_selenium/web_objects/button.rb +13 -0
- data/lib/terminus_spec/platform_selenium/web_objects/link.rb +13 -0
- data/lib/terminus_spec/platform_selenium/web_objects/text_field.rb +14 -0
- data/lib/terminus_spec/platform_watir.rb +18 -0
- data/lib/terminus_spec/platform_watir/platform_object.rb +190 -0
- data/lib/terminus_spec/platform_watir/web_objects/all.rb +88 -0
- data/lib/terminus_spec/platform_watir/web_objects/text_field.rb +13 -0
- data/lib/terminus_spec/platforms.rb +25 -0
- data/lib/terminus_spec/version.rb +3 -0
- data/lib/terminus_spec/web_objects/all.rb +172 -0
- data/lib/terminus_spec/web_objects/button.rb +32 -0
- data/lib/terminus_spec/web_objects/link.rb +40 -0
- data/lib/terminus_spec/web_objects/text_field.rb +45 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/terminus_spec/factory_spec.rb +40 -0
- data/spec/terminus_spec/generators_spec.rb +179 -0
- data/spec/terminus_spec/locators_spec.rb +30 -0
- data/spec/terminus_spec/platform_selenium_spec.rb +28 -0
- data/spec/terminus_spec/platform_watir_spec.rb +32 -0
- data/spec/terminus_spec/platforms_spec.rb +43 -0
- data/spec/terminus_spec/terminus_spec.rb +271 -0
- data/spec/terminus_spec/web_objects/all_spec.rb +87 -0
- data/spec/terminus_spec/web_objects/button_spec.rb +35 -0
- data/spec/terminus_spec/web_objects/link_spec.rb +46 -0
- data/spec/terminus_spec/web_objects/text_field_spec.rb +48 -0
- data/spec/terminus_spec/webobject_selenium_spec.rb +154 -0
- data/spec/terminus_spec/webobject_watir_spec.rb +120 -0
- data/specs/app/favicon.ico +0 -0
- data/specs/app/images/mass_extinction.jpg +0 -0
- data/specs/app/index.html +20 -0
- data/specs/app/modal_1.html +41 -0
- data/specs/app/modal_2.html +29 -0
- data/specs/app/server.rb +25 -0
- data/specs/app/style.css +18 -0
- data/specs/app/success_1.html +12 -0
- data/specs/app/success_2.html +12 -0
- data/specs/app/test_event.html +39 -0
- data/specs/app/test_form.html +114 -0
- data/specs/app/test_frame.html +15 -0
- data/specs/app/test_iframe.html +15 -0
- data/specs/app/test_static.html +92 -0
- data/specs/engine/borg.rb +27 -0
- data/specs/engine/hooks.rb +23 -0
- data/terminus_spec.gemspec +31 -0
- metadata +198 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class TestPageForLoading
|
4
|
+
include TerminusSpec::Platforms
|
5
|
+
end
|
6
|
+
|
7
|
+
describe TestPageForLoading do
|
8
|
+
let(:platform) { TestPageForLoading.new() }
|
9
|
+
let(:drivers) { {} }
|
10
|
+
|
11
|
+
context "if a chrome browser is associated with a chrome platform" do
|
12
|
+
let(:chrome_browser) { double('browser') }
|
13
|
+
before { drivers[:chrome_browser] = mock_driver(chrome_browser, :chrome_platform) }
|
14
|
+
|
15
|
+
it "then the chrome platform will be established for the chrome browser" do
|
16
|
+
platform.platform_for(chrome_browser, drivers).should == :chrome_platform
|
17
|
+
end
|
18
|
+
|
19
|
+
context "if a firefox browser is associated with a firefox platform" do
|
20
|
+
let(:firefox_browser) { double('browser') }
|
21
|
+
before { drivers[:firefox_browser] = mock_driver(firefox_browser, :firefox_platform) }
|
22
|
+
|
23
|
+
it "then the chrome platform will still be established for the chrome browser" do
|
24
|
+
platform.platform_for(chrome_browser, drivers).should == :chrome_platform
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "if a firefox browser is associated with a firefox platform" do
|
30
|
+
let(:firefox_browser) { double('browser') }
|
31
|
+
before { drivers[:firefox_browser] = mock_driver(firefox_browser, :firefox_platform) }
|
32
|
+
|
33
|
+
it "then the firefox platform will be established for the firefox browser" do
|
34
|
+
platform.platform_for(firefox_browser, drivers).should == :firefox_platform
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "if an unknown browser object is associated with a platform" do
|
39
|
+
it "it should raise an exception" do
|
40
|
+
expect { platform.platform_for("false_browser") }.to raise_error
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,271 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class PageTester
|
4
|
+
include TerminusSpec
|
5
|
+
end
|
6
|
+
|
7
|
+
class PlatformObject
|
8
|
+
end
|
9
|
+
|
10
|
+
describe TerminusSpec do
|
11
|
+
let(:watir_browser) { mock_browser_with_watir }
|
12
|
+
let(:watir_page) { PageTester.new(watir_browser) }
|
13
|
+
let(:selenium_browser) { mock_browser_with_selenium }
|
14
|
+
let(:selenium_page) { PageTester.new(selenium_browser) }
|
15
|
+
|
16
|
+
context "is included with a page using watir-webdriver" do
|
17
|
+
it "so it should use a watir platform object" do
|
18
|
+
watir_page.platform.should be_kind_of TerminusSpec::Platforms::WatirWebDriver::PlatformObject
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "is included with a page using selenium-webdriver" do
|
23
|
+
it "so it should use a selenium platform object" do
|
24
|
+
selenium_page.platform.should be_kind_of TerminusSpec::Platforms::SeleniumWebDriver::PlatformObject
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "is included with page using an unrecognized browser" do
|
29
|
+
it "so it should raise an exception" do
|
30
|
+
expect { PageTester.new("false_browser") }.to raise_error
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "is included with a page using an unassociated custom driver" do
|
35
|
+
let(:custom_driver) { mock_driver(:custom_browser, PlatformObject) }
|
36
|
+
it "so it should raise an exception" do
|
37
|
+
expect { custom_page = PageTester.new(:custom_browser) }.to raise_error
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "is included with a page using an associated custom driver" do
|
42
|
+
let(:custom_driver) { mock_driver(:custom_browser, PlatformObject) }
|
43
|
+
it "so it should use a custom platform object" do
|
44
|
+
mock_drivers_list({:custom_driver => custom_driver})
|
45
|
+
custom_page = PageTester.new(:custom_browser)
|
46
|
+
custom_page.platform.should be custom_driver.create_platform_object_for
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "(in terms of browser-level page functionality)" do
|
51
|
+
context "when using any platform" do
|
52
|
+
it "an individual page can provide its own setup logic" do
|
53
|
+
class TestPage
|
54
|
+
include TerminusSpec
|
55
|
+
|
56
|
+
def setup_page
|
57
|
+
@setup_page = true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
@page = TestPage.new(watir_browser)
|
62
|
+
@page.setup_page.should be_true
|
63
|
+
end
|
64
|
+
|
65
|
+
it "a window will get two tries to be attached to" do
|
66
|
+
watir_page.platform.should_receive(:attach_to_window).once.and_throw "exception"
|
67
|
+
watir_page.platform.should_receive(:attach_to_window)
|
68
|
+
watir_page.attach_to_window("contentPane")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when using the watir platform" do
|
73
|
+
it "a page can be navigated to" do
|
74
|
+
watir_browser.should_receive(:goto).with("testerstories.com")
|
75
|
+
watir_page.navigate_to("testerstories.com")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "the title of the page is accessible" do
|
79
|
+
watir_browser.should_receive(:title).and_return("Page Title")
|
80
|
+
watir_page.title.should == "Page Title"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "the text of the page is accessible" do
|
84
|
+
watir_browser.should_receive(:text).and_return("page text")
|
85
|
+
watir_page.text.should == "page text"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "the markup of the page is accessible" do
|
89
|
+
watir_browser.should_receive(:html).and_return("<html>HTML page text</html>")
|
90
|
+
watir_page.html.should == "<html>HTML page text</html>"
|
91
|
+
end
|
92
|
+
|
93
|
+
it "the current web address of the page is accessible" do
|
94
|
+
watir_browser.should_receive(:url).and_return("http://testerstories.com/?p=355")
|
95
|
+
watir_page.current_url.should == "http://testerstories.com/?p=355"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "the current page can be refreshed" do
|
99
|
+
watir_browser.should_receive(:refresh)
|
100
|
+
watir_page.refresh
|
101
|
+
end
|
102
|
+
|
103
|
+
it "the preceding page in history can be navigated to" do
|
104
|
+
watir_browser.should_receive(:back)
|
105
|
+
watir_page.back
|
106
|
+
end
|
107
|
+
|
108
|
+
it "the succeeding page in history can be navigated to" do
|
109
|
+
watir_browser.should_receive(:forward)
|
110
|
+
watir_page.forward
|
111
|
+
end
|
112
|
+
|
113
|
+
it "the browser cookies can be cleared" do
|
114
|
+
watir_browser.should_receive(:clear_cookies)
|
115
|
+
watir_page.clear_cookies
|
116
|
+
end
|
117
|
+
|
118
|
+
it "the current page can be captured in a screenshot" do
|
119
|
+
watir_browser.should_receive(:wd).and_return(watir_browser)
|
120
|
+
watir_browser.should_receive(:save_screenshot)
|
121
|
+
watir_page.save_screenshot("testing.png")
|
122
|
+
end
|
123
|
+
|
124
|
+
it "a condition on the page can be waited for" do
|
125
|
+
watir_browser.should_receive(:wait_until).with(5, "Timeout")
|
126
|
+
watir_page.wait_until(5, "Timeout")
|
127
|
+
end
|
128
|
+
|
129
|
+
it "alert popup message boxes can be handled" do
|
130
|
+
watir_browser.should_receive(:wd).twice.and_return(watir_browser)
|
131
|
+
watir_browser.should_receive(:execute_script).twice
|
132
|
+
watir_page.will_alert do
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
it "confirm popup message boxes can be handled" do
|
137
|
+
watir_browser.should_receive(:wd).twice.and_return(watir_browser)
|
138
|
+
watir_browser.should_receive(:execute_script).twice
|
139
|
+
watir_page.will_confirm(true) do
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
it "prompt popup message boxes can be handled" do
|
144
|
+
watir_browser.should_receive(:wd).twice.and_return(watir_browser)
|
145
|
+
watir_browser.should_receive(:execute_script).twice
|
146
|
+
watir_page.will_prompt("Question") do
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
it "a window can be attached to by using the title" do
|
151
|
+
watir_browser.should_receive(:window).with(:title => /Display\ Results/).and_return(watir_browser)
|
152
|
+
watir_browser.should_receive(:use)
|
153
|
+
watir_page.attach_to_window(:title => "Display Results")
|
154
|
+
end
|
155
|
+
|
156
|
+
it "a window can be attached to by using the url" do
|
157
|
+
watir_browser.should_receive(:window).with(:url => /results\.html/).and_return(watir_browser)
|
158
|
+
watir_browser.should_receive(:use)
|
159
|
+
watir_page.attach_to_window(:url => "results.html")
|
160
|
+
end
|
161
|
+
|
162
|
+
it "a modal dialog can be treated as a window" do
|
163
|
+
watir_browser.should_receive(:execute_script)
|
164
|
+
watir_page.will_be_modal {}
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context "when using the selenium platform" do
|
169
|
+
it "a page can be navigated to" do
|
170
|
+
selenium_browser.stub_chain(:navigate, :to).with("testerstories.com")
|
171
|
+
selenium_page.navigate_to("testerstories.com")
|
172
|
+
end
|
173
|
+
|
174
|
+
it "the title of the page is accessible" do
|
175
|
+
selenium_browser.should_receive(:title).and_return("Page Title")
|
176
|
+
selenium_page.title.should == "Page Title"
|
177
|
+
end
|
178
|
+
|
179
|
+
it "the text of the page is accessible" do
|
180
|
+
selenium_browser.stub_chain(:find_element, :text).and_return("page text")
|
181
|
+
selenium_page.text.should == "page text"
|
182
|
+
end
|
183
|
+
|
184
|
+
it "the markup of the page is accessible" do
|
185
|
+
selenium_browser.should_receive(:page_source).and_return("<html>HTML page text</html>")
|
186
|
+
selenium_page.html.should == "<html>HTML page text</html>"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "the current web address of the page is accessible" do
|
190
|
+
selenium_browser.should_receive(:current_url).and_return("http://testerstories.com/?p=355")
|
191
|
+
selenium_page.current_url.should == "http://testerstories.com/?p=355"
|
192
|
+
end
|
193
|
+
|
194
|
+
it "the current page can be refreshed" do
|
195
|
+
selenium_browser.should_receive(:navigate).and_return(selenium_browser)
|
196
|
+
selenium_browser.should_receive(:refresh)
|
197
|
+
selenium_page.refresh
|
198
|
+
end
|
199
|
+
|
200
|
+
it "the preceding page in history can be navigated to" do
|
201
|
+
selenium_browser.should_receive(:navigate).and_return(selenium_browser)
|
202
|
+
selenium_browser.should_receive(:back)
|
203
|
+
selenium_page.back
|
204
|
+
end
|
205
|
+
|
206
|
+
it "the succeeding page in history can be navigated to" do
|
207
|
+
selenium_browser.should_receive(:navigate).and_return(selenium_browser)
|
208
|
+
selenium_browser.should_receive(:forward)
|
209
|
+
selenium_page.forward
|
210
|
+
end
|
211
|
+
|
212
|
+
it "the browser cookies can be cleared" do
|
213
|
+
selenium_browser.should_receive(:manage).and_return(selenium_browser)
|
214
|
+
selenium_browser.should_receive(:delete_all_cookies)
|
215
|
+
selenium_page.clear_cookies
|
216
|
+
end
|
217
|
+
|
218
|
+
it "the current page can be captured in a screenshot" do
|
219
|
+
selenium_browser.should_receive(:save_screenshot)
|
220
|
+
selenium_page.save_screenshot("testing.png")
|
221
|
+
end
|
222
|
+
|
223
|
+
it "a condition on the page can be waited for" do
|
224
|
+
wait = double('wait')
|
225
|
+
Selenium::WebDriver::Wait.should_receive(:new).with({:timeout=>5, :message=>'Timeout'}).and_return(wait)
|
226
|
+
wait.should_receive(:until)
|
227
|
+
selenium_page.wait_until(5, 'Timeout')
|
228
|
+
end
|
229
|
+
|
230
|
+
it "alert popup message boxes can be handled" do
|
231
|
+
selenium_browser.should_receive(:execute_script).twice
|
232
|
+
selenium_page.will_alert do
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
it "confirm popup message boxes can be handled" do
|
237
|
+
selenium_browser.should_receive(:execute_script).twice
|
238
|
+
selenium_page.will_confirm(true) do
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
it "prompt popup message boxes can be handled" do
|
243
|
+
selenium_browser.should_receive(:execute_script).twice
|
244
|
+
selenium_page.will_prompt("Question") do
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
it "a window can be attached to by using the title" do
|
249
|
+
selenium_browser.should_receive(:window_handles).and_return(["result"])
|
250
|
+
selenium_browser.should_receive(:switch_to).twice.and_return(selenium_browser)
|
251
|
+
selenium_browser.should_receive(:window).twice.with("result").and_return(selenium_browser)
|
252
|
+
selenium_browser.should_receive(:title).and_return("Display Results")
|
253
|
+
selenium_page.attach_to_window(:title => "Display Results")
|
254
|
+
end
|
255
|
+
|
256
|
+
it "a window can be attached to by using the url" do
|
257
|
+
selenium_browser.should_receive(:window_handles).and_return(["result"])
|
258
|
+
selenium_browser.should_receive(:switch_to).twice.and_return(selenium_browser)
|
259
|
+
selenium_browser.should_receive(:window).twice.with("result").and_return(selenium_browser)
|
260
|
+
selenium_browser.should_receive(:current_url).and_return("results.html")
|
261
|
+
selenium_page.attach_to_window(:url => "results.html")
|
262
|
+
end
|
263
|
+
|
264
|
+
it "a modal dialog can be treated as a window" do
|
265
|
+
selenium_browser.should_receive(:execute_script)
|
266
|
+
selenium_page.will_be_modal {}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require "terminus_spec/web_objects/all"
|
3
|
+
|
4
|
+
describe "there are common methods for all web objects" do
|
5
|
+
context "and all objects may have to handle an unknown request" do
|
6
|
+
it "so the request should be delegated to the platform object" do
|
7
|
+
watir_driver = double('watir')
|
8
|
+
watir_web_object = TerminusSpec::WebObjects::WebObject.new(watir_driver, :platform => :watir_webdriver)
|
9
|
+
watir_driver.should_receive(:do_this)
|
10
|
+
watir_web_object.do_this
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "and it will be necessary to build locators for Watir" do
|
15
|
+
it "so it must be possible to use xpath where objects by name is not supported" do
|
16
|
+
['table', 'span', 'div', 'td', 'li', 'ol', 'ul'].each do |tag|
|
17
|
+
locator = {:tag_name => tag, :name => 'testing'}
|
18
|
+
result = TerminusSpec::WebObjects::WebObject.have_watir_find_object_with locator
|
19
|
+
result[:xpath].should == ".//#{tag}[@name='testing']"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "and it will be necesary to build locators for Selenium" do
|
25
|
+
|
26
|
+
def display_objects
|
27
|
+
['textarea', 'select', 'a', 'div', 'span', 'table', 'td', 'img', 'form', 'li', 'ul', 'ol']
|
28
|
+
end
|
29
|
+
|
30
|
+
def input_objects
|
31
|
+
['text', 'hidden', 'checkbox', 'radio']
|
32
|
+
end
|
33
|
+
|
34
|
+
it "so it must be possible to use xpath when an index is provided for display objects" do
|
35
|
+
display_objects.each do |tag|
|
36
|
+
locator = {:tag_name => tag, :index => 1}
|
37
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
38
|
+
key.should == :xpath
|
39
|
+
value.should == ".//#{tag}[2]"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it "so it must be possible to use xpath when an index is provided for input objects" do
|
44
|
+
input_objects.each do |tag|
|
45
|
+
locator = {:tag_name => 'input', :type => tag, :index => 1}
|
46
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
47
|
+
key.should == :xpath
|
48
|
+
value.should include ".//input[@type='#{tag}'][2]"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "so it must be possible to use xpath when locating display objects by name and index" do
|
53
|
+
display_objects.each do |tag|
|
54
|
+
locator = {:tag_name => tag, :name => 'testing', :index => 0}
|
55
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
56
|
+
key.should == :xpath
|
57
|
+
value.should == ".//#{tag}[@name='testing'][1]"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "so it must be possible to use xpath when locating input objects by name and index" do
|
62
|
+
input_objects.each do |type|
|
63
|
+
locator = {:tag_name => 'input', :type => "#{type}", :name => 'testing', :index => 0}
|
64
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
65
|
+
key.should == :xpath
|
66
|
+
value.should include ".//input[@type='#{type}' and @name='testing'][1]"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it "so it must be possible to use xpath when locating display objects by name and class" do
|
71
|
+
display_objects.each do |tag|
|
72
|
+
locator = {:tag_name => tag, :name => 'test', :class => 'ing'}
|
73
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
74
|
+
key.should == :xpath
|
75
|
+
value.should == ".//#{tag}[@name='test' and @class='ing']"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "so it must be possible to use xpath when locating input objects by name and class" do
|
80
|
+
input_objects.each do |type|
|
81
|
+
locator = {:tag_name => 'input', :type => "#{type}", :name => 'test', :class => 'ing'}
|
82
|
+
key, value = TerminusSpec::WebObjects::WebObject.have_selenium_find_object_with locator
|
83
|
+
value.should include ".//input[@type='#{type}' and @name='test' and @class='ing']"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require "terminus_spec/web_objects/all"
|
3
|
+
require "terminus_spec/web_objects/button"
|
4
|
+
|
5
|
+
describe TerminusSpec::WebObjects::Button do
|
6
|
+
let(:button) { TerminusSpec::WebObjects::Button }
|
7
|
+
|
8
|
+
describe "when mapping how to identify a web object" do
|
9
|
+
it "it should be able to map watir locators" do
|
10
|
+
[:class, :id, :index, :name, :value, :xpath].each do |type|
|
11
|
+
locator = button.have_watir_find_object_with type => 'value'
|
12
|
+
locator.keys.first.should == type
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "it should be able to map selenium locators" do
|
17
|
+
[:class, :id, :index, :name, :value, :xpath].each do |type|
|
18
|
+
key, value = button.have_selenium_find_object_with type => 'value'
|
19
|
+
key.should == type
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "when performing an action on a web object" do
|
25
|
+
let(:button_object) { double('button_object') }
|
26
|
+
|
27
|
+
context "and when selenium is the driver" do
|
28
|
+
it "then it should return an error when asked for text" do
|
29
|
+
button = TerminusSpec::WebObjects::Button.new(button_object, :platform => :selenium_webdriver)
|
30
|
+
lambda { button.text }.should raise_error
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require "terminus_spec/web_objects/all"
|
3
|
+
require "terminus_spec/web_objects/link"
|
4
|
+
|
5
|
+
describe TerminusSpec::WebObjects::Link do
|
6
|
+
let(:link) { TerminusSpec::WebObjects::Link }
|
7
|
+
|
8
|
+
describe "when mapping how to identify a web object" do
|
9
|
+
it "it should be able to map watir locators" do
|
10
|
+
[:class, :href, :id, :index, :name, :text, :xpath].each do |type|
|
11
|
+
locator = link.have_watir_find_object_with type => 'value'
|
12
|
+
locator.keys.first.should == type
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "it should be able to map selenium locators" do
|
17
|
+
[:class, :id, :link, :link_text, :name, :xpath, :index].each do |type|
|
18
|
+
key, value = link.have_selenium_find_object_with type => 'value'
|
19
|
+
key.should == type
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "it should be able to map watir selectors to selenium locators" do
|
24
|
+
key, value = link.have_selenium_find_object_with :text => 'value'
|
25
|
+
key.should == :link_text
|
26
|
+
end
|
27
|
+
|
28
|
+
it "it should be able to map selenium selectors to watir locators" do
|
29
|
+
[:link, :link_text].each do |type|
|
30
|
+
locator = link.have_watir_find_object_with type => 'value'
|
31
|
+
locator.keys.first.should == :text
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "when performing an action on a web object" do
|
37
|
+
let(:link_object) { double('link_object') }
|
38
|
+
|
39
|
+
context "and when selenium is the driver" do
|
40
|
+
it "then it should return an error when asked for a value" do
|
41
|
+
link = TerminusSpec::WebObjects::Link.new(link_object, :platform => :selenium_webdriver)
|
42
|
+
lambda { link.value }.should raise_error
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|