browserstack-webdriver 0.0.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.
- checksums.yaml +7 -0
- data/CHANGES +791 -0
- data/README.md +31 -0
- data/build.desc +334 -0
- data/lib/selenium-client.rb +2 -0
- data/lib/selenium-webdriver.rb +1 -0
- data/lib/selenium/client.rb +37 -0
- data/lib/selenium/client/base.rb +132 -0
- data/lib/selenium/client/driver.rb +10 -0
- data/lib/selenium/client/errors.rb +9 -0
- data/lib/selenium/client/extensions.rb +118 -0
- data/lib/selenium/client/idiomatic.rb +488 -0
- data/lib/selenium/client/javascript_expression_builder.rb +116 -0
- data/lib/selenium/client/javascript_frameworks/jquery.rb +13 -0
- data/lib/selenium/client/javascript_frameworks/prototype.rb +13 -0
- data/lib/selenium/client/legacy_driver.rb +1720 -0
- data/lib/selenium/client/protocol.rb +104 -0
- data/lib/selenium/client/selenium_helper.rb +34 -0
- data/lib/selenium/rake/server_task.rb +157 -0
- data/lib/selenium/server.rb +248 -0
- data/lib/selenium/webdriver.rb +71 -0
- data/lib/selenium/webdriver/android.rb +9 -0
- data/lib/selenium/webdriver/android/bridge.rb +47 -0
- data/lib/selenium/webdriver/chrome.rb +26 -0
- data/lib/selenium/webdriver/chrome/bridge.rb +120 -0
- data/lib/selenium/webdriver/chrome/profile.rb +90 -0
- data/lib/selenium/webdriver/chrome/service.rb +75 -0
- data/lib/selenium/webdriver/common.rb +44 -0
- data/lib/selenium/webdriver/common/action_builder.rb +352 -0
- data/lib/selenium/webdriver/common/alert.rb +30 -0
- data/lib/selenium/webdriver/common/bridge_helper.rb +67 -0
- data/lib/selenium/webdriver/common/core_ext/base64.rb +9 -0
- data/lib/selenium/webdriver/common/core_ext/dir.rb +42 -0
- data/lib/selenium/webdriver/common/core_ext/string.rb +5 -0
- data/lib/selenium/webdriver/common/driver.rb +301 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_browser_connection.rb +17 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb +39 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +25 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +13 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +22 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +19 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +22 -0
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +45 -0
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +43 -0
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +46 -0
- data/lib/selenium/webdriver/common/element.rb +293 -0
- data/lib/selenium/webdriver/common/error.rb +207 -0
- data/lib/selenium/webdriver/common/file_reaper.rb +47 -0
- data/lib/selenium/webdriver/common/html5/local_storage.rb +42 -0
- data/lib/selenium/webdriver/common/html5/location.rb +0 -0
- data/lib/selenium/webdriver/common/html5/session_storage.rb +44 -0
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +42 -0
- data/lib/selenium/webdriver/common/json_helper.rb +34 -0
- data/lib/selenium/webdriver/common/keyboard.rb +55 -0
- data/lib/selenium/webdriver/common/keys.rb +109 -0
- data/lib/selenium/webdriver/common/log_entry.rb +29 -0
- data/lib/selenium/webdriver/common/logs.rb +23 -0
- data/lib/selenium/webdriver/common/mouse.rb +72 -0
- data/lib/selenium/webdriver/common/navigation.rb +43 -0
- data/lib/selenium/webdriver/common/options.rb +136 -0
- data/lib/selenium/webdriver/common/platform.rb +218 -0
- data/lib/selenium/webdriver/common/port_prober.rb +42 -0
- data/lib/selenium/webdriver/common/profile_helper.rb +67 -0
- data/lib/selenium/webdriver/common/proxy.rb +149 -0
- data/lib/selenium/webdriver/common/search_context.rb +92 -0
- data/lib/selenium/webdriver/common/socket_poller.rb +105 -0
- data/lib/selenium/webdriver/common/target_locator.rb +81 -0
- data/lib/selenium/webdriver/common/timeouts.rb +38 -0
- data/lib/selenium/webdriver/common/touch_action_builder.rb +64 -0
- data/lib/selenium/webdriver/common/touch_screen.rb +105 -0
- data/lib/selenium/webdriver/common/wait.rb +63 -0
- data/lib/selenium/webdriver/common/window.rb +104 -0
- data/lib/selenium/webdriver/common/zipper.rb +82 -0
- data/lib/selenium/webdriver/firefox.rb +37 -0
- data/lib/selenium/webdriver/firefox/binary.rb +158 -0
- data/lib/selenium/webdriver/firefox/bridge.rb +70 -0
- data/lib/selenium/webdriver/firefox/extension.rb +52 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +106 -0
- data/lib/selenium/webdriver/firefox/profile.rb +263 -0
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +62 -0
- data/lib/selenium/webdriver/firefox/socket_lock.rb +61 -0
- data/lib/selenium/webdriver/firefox/util.rb +29 -0
- data/lib/selenium/webdriver/ie.rb +19 -0
- data/lib/selenium/webdriver/ie/bridge.rb +68 -0
- data/lib/selenium/webdriver/ie/server.rb +86 -0
- data/lib/selenium/webdriver/iphone.rb +9 -0
- data/lib/selenium/webdriver/iphone/bridge.rb +45 -0
- data/lib/selenium/webdriver/opera.rb +24 -0
- data/lib/selenium/webdriver/opera/bridge.rb +112 -0
- data/lib/selenium/webdriver/opera/service.rb +49 -0
- data/lib/selenium/webdriver/phantomjs.rb +22 -0
- data/lib/selenium/webdriver/phantomjs/bridge.rb +59 -0
- data/lib/selenium/webdriver/phantomjs/service.rb +90 -0
- data/lib/selenium/webdriver/remote.rb +22 -0
- data/lib/selenium/webdriver/remote/bridge.rb +644 -0
- data/lib/selenium/webdriver/remote/capabilities.rb +267 -0
- data/lib/selenium/webdriver/remote/commands.rb +193 -0
- data/lib/selenium/webdriver/remote/http/common.rb +74 -0
- data/lib/selenium/webdriver/remote/http/curb.rb +79 -0
- data/lib/selenium/webdriver/remote/http/default.rb +139 -0
- data/lib/selenium/webdriver/remote/http/persistent.rb +38 -0
- data/lib/selenium/webdriver/remote/response.rb +97 -0
- data/lib/selenium/webdriver/remote/server_error.rb +17 -0
- data/lib/selenium/webdriver/safari.rb +46 -0
- data/lib/selenium/webdriver/safari/bridge.rb +110 -0
- data/lib/selenium/webdriver/safari/browser.rb +20 -0
- data/lib/selenium/webdriver/safari/extension.rb +120 -0
- data/lib/selenium/webdriver/safari/server.rb +145 -0
- data/lib/selenium/webdriver/support.rb +5 -0
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +28 -0
- data/lib/selenium/webdriver/support/block_event_listener.rb +17 -0
- data/lib/selenium/webdriver/support/color.rb +110 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +112 -0
- data/lib/selenium/webdriver/support/select.rb +293 -0
- data/ruby.iml +13 -0
- data/spec/integration/selenium/client/api/backward_compatible_api_spec.rb +22 -0
- data/spec/integration/selenium/client/api/browser_xpath_library_spec.rb +17 -0
- data/spec/integration/selenium/client/api/click_spec.rb +39 -0
- data/spec/integration/selenium/client/api/cookie_spec.rb +39 -0
- data/spec/integration/selenium/client/api/element_spec.rb +14 -0
- data/spec/integration/selenium/client/api/highlight_located_element_spec.rb +19 -0
- data/spec/integration/selenium/client/api/retrieve_last_remote_control_logs_spec.rb +33 -0
- data/spec/integration/selenium/client/api/screenshot_spec.rb +31 -0
- data/spec/integration/selenium/client/api/select_window_spec.rb +46 -0
- data/spec/integration/selenium/client/api/start_stop_spec.rb +9 -0
- data/spec/integration/selenium/client/api/wait_for_ajax_spec.rb +27 -0
- data/spec/integration/selenium/client/api/wait_for_element_spec.rb +56 -0
- data/spec/integration/selenium/client/api/wait_for_field_value_spec.rb +52 -0
- data/spec/integration/selenium/client/api/wait_for_text_spec.rb +98 -0
- data/spec/integration/selenium/client/api/webdriver_backed_spec.rb +21 -0
- data/spec/integration/selenium/client/sample-app/public/jquery-1.3.2.js +4376 -0
- data/spec/integration/selenium/client/sample-app/public/jquery.html +55 -0
- data/spec/integration/selenium/client/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/spec/integration/selenium/client/sample-app/public/prototype.html +59 -0
- data/spec/integration/selenium/client/sample-app/sample_app.rb +32 -0
- data/spec/integration/selenium/client/spec_helper.rb +139 -0
- data/spec/integration/selenium/webdriver/app_cache_spec.rb +47 -0
- data/spec/integration/selenium/webdriver/browser_connection_spec.rb +20 -0
- data/spec/integration/selenium/webdriver/chrome/driver_spec.rb +28 -0
- data/spec/integration/selenium/webdriver/chrome/profile_spec.rb +63 -0
- data/spec/integration/selenium/webdriver/driver_spec.rb +266 -0
- data/spec/integration/selenium/webdriver/element_spec.rb +191 -0
- data/spec/integration/selenium/webdriver/error_spec.rb +30 -0
- data/spec/integration/selenium/webdriver/firefox/driver_spec.rb +21 -0
- data/spec/integration/selenium/webdriver/firefox/profile_spec.rb +141 -0
- data/spec/integration/selenium/webdriver/keyboard_spec.rb +57 -0
- data/spec/integration/selenium/webdriver/location_spec.rb +29 -0
- data/spec/integration/selenium/webdriver/mouse_spec.rb +57 -0
- data/spec/integration/selenium/webdriver/navigation_spec.rb +46 -0
- data/spec/integration/selenium/webdriver/opera/driver_spec.rb +47 -0
- data/spec/integration/selenium/webdriver/options_spec.rb +77 -0
- data/spec/integration/selenium/webdriver/remote/driver_spec.rb +19 -0
- data/spec/integration/selenium/webdriver/remote/element_spec.rb +26 -0
- data/spec/integration/selenium/webdriver/spec_helper.rb +36 -0
- data/spec/integration/selenium/webdriver/spec_support.rb +12 -0
- data/spec/integration/selenium/webdriver/spec_support/guards.rb +110 -0
- data/spec/integration/selenium/webdriver/spec_support/helpers.rb +51 -0
- data/spec/integration/selenium/webdriver/spec_support/rack_server.rb +123 -0
- data/spec/integration/selenium/webdriver/spec_support/test_environment.rb +239 -0
- data/spec/integration/selenium/webdriver/sql_database_spec.rb +59 -0
- data/spec/integration/selenium/webdriver/storage_spec.rb +96 -0
- data/spec/integration/selenium/webdriver/target_locator_spec.rb +186 -0
- data/spec/integration/selenium/webdriver/timeout_spec.rb +69 -0
- data/spec/integration/selenium/webdriver/touch_spec.rb +176 -0
- data/spec/integration/selenium/webdriver/window_spec.rb +70 -0
- data/spec/integration/selenium/webdriver/zipper_spec.rb +66 -0
- data/spec/unit/selenium/client/base_spec.rb +239 -0
- data/spec/unit/selenium/client/extensions_spec.rb +174 -0
- data/spec/unit/selenium/client/idiomatic_spec.rb +500 -0
- data/spec/unit/selenium/client/javascript_expression_builder_spec.rb +79 -0
- data/spec/unit/selenium/client/javascript_frameworks/jquery_spec.rb +10 -0
- data/spec/unit/selenium/client/javascript_frameworks/prototype_spec.rb +10 -0
- data/spec/unit/selenium/client/protocol_spec.rb +124 -0
- data/spec/unit/selenium/client/selenium_helper_spec.rb +56 -0
- data/spec/unit/selenium/client/spec_helper.rb +24 -0
- data/spec/unit/selenium/rake/task_spec.rb +79 -0
- data/spec/unit/selenium/server_spec.rb +150 -0
- data/spec/unit/selenium/webdriver/action_builder_spec.rb +97 -0
- data/spec/unit/selenium/webdriver/android/bridge_spec.rb +43 -0
- data/spec/unit/selenium/webdriver/chrome/bridge_spec.rb +137 -0
- data/spec/unit/selenium/webdriver/chrome/profile_spec.rb +57 -0
- data/spec/unit/selenium/webdriver/chrome/service_spec.rb +44 -0
- data/spec/unit/selenium/webdriver/error_spec.rb +41 -0
- data/spec/unit/selenium/webdriver/firefox/bridge_spec.rb +47 -0
- data/spec/unit/selenium/webdriver/ie/bridge_spec.rb +91 -0
- data/spec/unit/selenium/webdriver/iphone/bridge_spec.rb +42 -0
- data/spec/unit/selenium/webdriver/log_entry_spec.rb +11 -0
- data/spec/unit/selenium/webdriver/opera/bridge_spec.rb +44 -0
- data/spec/unit/selenium/webdriver/phantomjs/bridge_spec.rb +55 -0
- data/spec/unit/selenium/webdriver/proxy_spec.rb +106 -0
- data/spec/unit/selenium/webdriver/remote/bridge_spec.rb +16 -0
- data/spec/unit/selenium/webdriver/remote/capabilities_spec.rb +115 -0
- data/spec/unit/selenium/webdriver/remote/http/common_spec.rb +24 -0
- data/spec/unit/selenium/webdriver/remote/http/default_spec.rb +124 -0
- data/spec/unit/selenium/webdriver/search_context_spec.rb +61 -0
- data/spec/unit/selenium/webdriver/socket_poller_spec.rb +68 -0
- data/spec/unit/selenium/webdriver/spec_helper.rb +27 -0
- data/spec/unit/selenium/webdriver/support/color_spec.rb +119 -0
- data/spec/unit/selenium/webdriver/support/event_firing_spec.rb +111 -0
- data/spec/unit/selenium/webdriver/support/select_spec.rb +290 -0
- data/spec/unit/selenium/webdriver/wait_spec.rb +49 -0
- metadata +370 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require File.expand_path("../spec_helper", __FILE__)
|
|
2
|
+
|
|
3
|
+
module Selenium
|
|
4
|
+
module WebDriver
|
|
5
|
+
describe Zipper do
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# TODO: clean this spec up
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
let(:base_file_name) { "file.txt" }
|
|
12
|
+
let(:file_content) { "content" }
|
|
13
|
+
let(:zip_file) { File.join(Dir.tmpdir, "test.zip") }
|
|
14
|
+
let(:dir_to_zip) { Dir.mktmpdir("webdriver-spec-zipper") }
|
|
15
|
+
|
|
16
|
+
def create_file
|
|
17
|
+
filename = File.join(dir_to_zip, base_file_name)
|
|
18
|
+
File.open(filename, "w") { |io| io << file_content }
|
|
19
|
+
|
|
20
|
+
filename
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
after {
|
|
24
|
+
FileUtils.rm_rf zip_file
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
it "zips and unzips a folder" do
|
|
28
|
+
create_file
|
|
29
|
+
|
|
30
|
+
File.open(zip_file, "wb") do |io|
|
|
31
|
+
io << Base64.decode64(Zipper.zip(dir_to_zip))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
unzipped = Zipper.unzip(zip_file)
|
|
35
|
+
File.read(File.join(unzipped, base_file_name)).should == file_content
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "zips and unzips a single file" do
|
|
39
|
+
file_to_zip = create_file
|
|
40
|
+
|
|
41
|
+
File.open(zip_file, "wb") do |io|
|
|
42
|
+
io << Base64.decode64(Zipper.zip_file(file_to_zip))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
unzipped = Zipper.unzip(zip_file)
|
|
46
|
+
File.read(File.join(unzipped, base_file_name)).should == file_content
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
not_compliant_on :platform => :windows do
|
|
50
|
+
it "follows symlinks when zipping" do
|
|
51
|
+
filename = create_file
|
|
52
|
+
File.symlink(filename, File.join(dir_to_zip, "link"))
|
|
53
|
+
|
|
54
|
+
zip_file = File.join(Dir.tmpdir, "test.zip")
|
|
55
|
+
File.open(zip_file, "wb") do |io|
|
|
56
|
+
io << Base64.decode64(Zipper.zip(dir_to_zip))
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
unzipped = Zipper.unzip(zip_file)
|
|
60
|
+
File.read(File.join(unzipped, "link")).should == file_content
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
require File.expand_path("../spec_helper", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Selenium::Client::Base do
|
|
4
|
+
|
|
5
|
+
class BaseClient
|
|
6
|
+
include Selenium::Client::Base
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#initialize with hash" do
|
|
10
|
+
it "sets the host" do
|
|
11
|
+
client = BaseClient.new :host => "the.host.com"
|
|
12
|
+
client.host.should == "the.host.com"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "sets the port" do
|
|
16
|
+
client = BaseClient.new :port => 4000
|
|
17
|
+
client.port.should == 4000
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "sets the port as a string" do
|
|
21
|
+
client = BaseClient.new :port => "4000"
|
|
22
|
+
client.port.should == 4000
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "sets the browser string" do
|
|
26
|
+
client = BaseClient.new :browser => "*safari"
|
|
27
|
+
client.browser_string.should == "*safari"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "sets the browser url" do
|
|
31
|
+
client = BaseClient.new :url => "http://ph7spot.com"
|
|
32
|
+
client.browser_url.should == "http://ph7spot.com"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "sets the default timeout" do
|
|
36
|
+
client = BaseClient.new :timeout_in_seconds => 24
|
|
37
|
+
client.default_timeout_in_seconds.should == 24
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "sets the default javascript framework " do
|
|
41
|
+
client = BaseClient.new :javascript_framework => :jquery
|
|
42
|
+
client.default_javascript_framework.should == :jquery
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "sets the default javascript framework to prototype when not explicitely set" do
|
|
46
|
+
BaseClient.new.default_javascript_framework.should == :prototype
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "sets highlight_located_element_by_default" do
|
|
50
|
+
client = BaseClient.new :highlight_located_element => true
|
|
51
|
+
|
|
52
|
+
client.highlight_located_element_by_default.should be_true
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "sets highlight_located_element_by_default to false by default" do
|
|
56
|
+
client = BaseClient.new :host => :a_host
|
|
57
|
+
client.highlight_located_element_by_default.should be_false
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "#initialize" do
|
|
62
|
+
it "sets the default timeout to 5 minutes when not explicitely set" do
|
|
63
|
+
BaseClient.new.default_timeout_in_seconds.should == 5 * 60
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "sets default_timeout_in_seconds to the client driver default timeout in seconds" do
|
|
67
|
+
client = BaseClient.new :host, 1234, :browser, :url, 24
|
|
68
|
+
client.default_timeout_in_seconds.should == 24
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "sets default_timeout_in_seconds to 5 minutes by default" do
|
|
72
|
+
client = BaseClient.new :host, 24, :browser, :url
|
|
73
|
+
client.default_timeout_in_seconds.should == 5 * 60
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "sets highlight_located_element_by_default to false by default" do
|
|
77
|
+
BaseClient.new.highlight_located_element_by_default.should be_false
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "#start_new_browser_session" do
|
|
82
|
+
it "executes a getNewBrowserSession command with the browser string an url" do
|
|
83
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url
|
|
84
|
+
|
|
85
|
+
client.stub(:remote_control_command)
|
|
86
|
+
client.should_receive(:string_command).with("getNewBrowserSession", [:the_browser, :the_url, "", ""])
|
|
87
|
+
|
|
88
|
+
client.start_new_browser_session
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "submits the javascript extension when previously defined" do
|
|
92
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url
|
|
93
|
+
client.javascript_extension = :the_javascript_extension
|
|
94
|
+
|
|
95
|
+
client.stub(:remote_control_command)
|
|
96
|
+
client.should_receive(:string_command).with("getNewBrowserSession", [:the_browser, :the_url, :the_javascript_extension, ""])
|
|
97
|
+
|
|
98
|
+
client.start_new_browser_session
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "submits an option when provided" do
|
|
102
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url
|
|
103
|
+
client.javascript_extension = :the_javascript_extension
|
|
104
|
+
|
|
105
|
+
client.stub(:remote_control_command)
|
|
106
|
+
client.should_receive(:string_command).with("getNewBrowserSession", [:the_browser, :the_url, :the_javascript_extension, "captureNetworkTraffic=true"])
|
|
107
|
+
|
|
108
|
+
client.start_new_browser_session(:captureNetworkTraffic => true)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "submits multiple options when provided" do
|
|
112
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url
|
|
113
|
+
client.javascript_extension = :the_javascript_extension
|
|
114
|
+
|
|
115
|
+
client.stub(:remote_control_command)
|
|
116
|
+
client.should_receive(:string_command).with("getNewBrowserSession", [:the_browser, :the_url, :the_javascript_extension, "captureNetworkTraffic=true;quack=false"])
|
|
117
|
+
|
|
118
|
+
client.start_new_browser_session(:captureNetworkTraffic => true, :quack => false)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "sets the current sessionId with getNewBrowserSession response" do
|
|
122
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url
|
|
123
|
+
|
|
124
|
+
client.stub(:remote_control_command)
|
|
125
|
+
client.should_receive(:string_command).with("getNewBrowserSession", instance_of(Array)).
|
|
126
|
+
and_return("the new session id")
|
|
127
|
+
|
|
128
|
+
client.start_new_browser_session
|
|
129
|
+
|
|
130
|
+
client.session_id.should == "the new session id"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "sets remote control timeout to the driver default timeout" do
|
|
134
|
+
client = BaseClient.new :host, 24, :the_browser, :the_url, 24
|
|
135
|
+
|
|
136
|
+
client.should_receive(:string_command).with("getNewBrowserSession", instance_of(Array))
|
|
137
|
+
client.should_receive(:remote_control_timeout_in_seconds=).with(24)
|
|
138
|
+
|
|
139
|
+
client.start_new_browser_session
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "sets up auto-higlight of located element when option is set" do
|
|
143
|
+
client = BaseClient.new :highlight_located_element => true
|
|
144
|
+
|
|
145
|
+
client.stub(:remote_control_command)
|
|
146
|
+
client.should_receive(:highlight_located_element=).with(true)
|
|
147
|
+
|
|
148
|
+
client.start_new_browser_session
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "does not set up auto-higlight of located element when option is not set" do
|
|
152
|
+
client = BaseClient.new :highlight_located_element => false
|
|
153
|
+
|
|
154
|
+
client.stub(:remote_control_command)
|
|
155
|
+
client.should_not_receive(:highlight_located_element=)
|
|
156
|
+
|
|
157
|
+
client.start_new_browser_session
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
describe "session_started?" do
|
|
162
|
+
it "returns false when no session has been started" do
|
|
163
|
+
client = BaseClient.new :host, 24, :browser, :url
|
|
164
|
+
client.session_started?.should be_false
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "returns true when session has been started" do
|
|
168
|
+
client = BaseClient.new :host, 24, :browser, :url
|
|
169
|
+
|
|
170
|
+
client.stub(:string_command).and_return("A Session Id")
|
|
171
|
+
client.stub(:remote_control_command)
|
|
172
|
+
|
|
173
|
+
client.start_new_browser_session
|
|
174
|
+
|
|
175
|
+
client.session_started?.should be_true
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it "returns false when session has been stopped" do
|
|
179
|
+
client = BaseClient.new :host, 24, :browser, :url
|
|
180
|
+
|
|
181
|
+
client.stub(:string_command).and_return("A Session Id")
|
|
182
|
+
client.stub(:remote_control_command)
|
|
183
|
+
|
|
184
|
+
client.start_new_browser_session
|
|
185
|
+
client.stop
|
|
186
|
+
|
|
187
|
+
client.session_started?.should be_false
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
describe "chrome_backend?" do
|
|
192
|
+
it "returns true when the browser string is *firefox" do
|
|
193
|
+
client = BaseClient.new :host, 24, "*firefox", :url
|
|
194
|
+
client.chrome_backend?.should be_true
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "returns false when the browser string is *iexplore" do
|
|
198
|
+
client = BaseClient.new :host, 24, "*iexplore", :url
|
|
199
|
+
client.chrome_backend?.should be_false
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
it "returns false when the browser string is *safari" do
|
|
203
|
+
client = BaseClient.new :host, 24, "*safari", :url
|
|
204
|
+
client.chrome_backend?.should be_false
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it "returns false when the browser string is *opera" do
|
|
208
|
+
client = BaseClient.new :host, 24, "*opera", :url
|
|
209
|
+
client.chrome_backend?.should be_false
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
it "returns true when the browser string is *chrome" do
|
|
213
|
+
client = BaseClient.new :host, 24, "*chrome", :url
|
|
214
|
+
client.chrome_backend?.should be_true
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "returns true when the browser string is *firefox2" do
|
|
218
|
+
client = BaseClient.new :host, 24, "*firefox2", :url
|
|
219
|
+
client.chrome_backend?.should be_true
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it "returns true when the browser string is *firefox3" do
|
|
223
|
+
client = BaseClient.new :host, 24, "*firefox3", :url
|
|
224
|
+
client.chrome_backend?.should be_true
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
it "returns false when the browser string is *firefoxproxy" do
|
|
228
|
+
client = BaseClient.new :host, 24, "*firefoxproxy", :url
|
|
229
|
+
client.chrome_backend?.should be_false
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it "returns false when the browser string is *pifirefox" do
|
|
233
|
+
client = BaseClient.new :host, 24, "*pifirefox", :url
|
|
234
|
+
client.chrome_backend?.should be_false
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
end
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
require File.expand_path("../spec_helper", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Selenium::Client::Extensions do
|
|
4
|
+
class ExtensionsClient
|
|
5
|
+
include Selenium::Client::Extensions
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
let(:client) { ExtensionsClient.new }
|
|
9
|
+
|
|
10
|
+
describe "#wait_for_text" do
|
|
11
|
+
it "waits for the innerHTML content of an element when a locator is provided" do
|
|
12
|
+
client.should_receive(:wait_for_condition).with(/findElement\('a_locator'\)/, anything)
|
|
13
|
+
client.wait_for_text "some text", :element => "a_locator"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "waits for the page content when no locator is provided" do
|
|
17
|
+
client.should_receive(:wait_for_condition).with(%r{document.body.innerHTML.match\(/some text/\)}m, anything)
|
|
18
|
+
client.wait_for_text "some text"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "waits for the page content regexp when no locator is provided" do
|
|
22
|
+
client.should_receive(:wait_for_condition).with(%r{document.body.innerHTML.match\(/some text/\)}m, anything)
|
|
23
|
+
client.wait_for_text(/some text/)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "uses default timeout when none is provided" do
|
|
27
|
+
client.should_receive(:wait_for_condition).with(anything, nil)
|
|
28
|
+
client.wait_for_text "some text"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "uses explicit timeout when provided" do
|
|
32
|
+
client.should_receive(:wait_for_condition).with(anything, :explicit_timeout)
|
|
33
|
+
client.wait_for_text "some text", :timeout_in_seconds => :explicit_timeout
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe "#wait_for_no_text" do
|
|
38
|
+
it "waits for the innerHTML content of an element when a locator is provided" do
|
|
39
|
+
client.should_receive(:wait_for_condition).with(/findElement\('a_locator'\)/, anything)
|
|
40
|
+
client.wait_for_no_text "some text", :element => "a_locator"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "waits for the page content for regexp when no locator is provided" do
|
|
44
|
+
client.should_receive(:wait_for_condition).with(%r{document.body.innerHTML.match\(/some text/\)}m, anything)
|
|
45
|
+
client.wait_for_no_text(/some text/)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "waits for the page content when no locator is provided" do
|
|
49
|
+
client.should_receive(:wait_for_condition).with(%r{document.body.innerHTML.match\(/some text/\)}m, anything)
|
|
50
|
+
client.wait_for_no_text "some text"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "uses default timeout when none is provided" do
|
|
54
|
+
client.should_receive(:wait_for_condition).with(anything, nil)
|
|
55
|
+
client.wait_for_no_text "some text"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "uses explicit timeout when provided" do
|
|
59
|
+
client.should_receive(:wait_for_condition).with(anything, :explicit_timeout)
|
|
60
|
+
client.wait_for_no_text "some text", :timeout_in_seconds => :explicit_timeout
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "#wait_for_ajax" do
|
|
65
|
+
it "uses Ajax.activeRequestCount when default js framework is prototype" do
|
|
66
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
67
|
+
client.should_receive(:wait_for_condition).with("selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount == 0;", anything)
|
|
68
|
+
client.wait_for_ajax
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "uses jQuery.active when default js framework is jQuery" do
|
|
72
|
+
client.stub(:default_javascript_framework).and_return(:jquery)
|
|
73
|
+
client.should_receive(:wait_for_condition).with("selenium.browserbot.getCurrentWindow().jQuery.active == 0;", anything)
|
|
74
|
+
client.wait_for_ajax
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "can override default js framework" do
|
|
78
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
79
|
+
client.should_receive(:wait_for_condition).with("selenium.browserbot.getCurrentWindow().jQuery.active == 0;", anything)
|
|
80
|
+
client.wait_for_ajax :javascript_framework => :jquery
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "uses default timeout when none is provided" do
|
|
84
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
85
|
+
client.should_receive(:wait_for_condition).with(anything, nil)
|
|
86
|
+
client.wait_for_ajax
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "uses explicit timeout when provided" do
|
|
90
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
91
|
+
client.should_receive(:wait_for_condition).with(anything, :explicit_timeout)
|
|
92
|
+
client.wait_for_ajax :timeout_in_seconds => :explicit_timeout
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "#wait_for_effect" do
|
|
98
|
+
it "uses Effect.Queue.size() when default js framework is prototype" do
|
|
99
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
100
|
+
client.should_receive(:wait_for_condition).with("selenium.browserbot.getCurrentWindow().Effect.Queue.size() == 0;", anything)
|
|
101
|
+
client.wait_for_effects
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "uses default timeout when none is provided" do
|
|
105
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
106
|
+
client.should_receive(:wait_for_condition).with(anything, nil)
|
|
107
|
+
client.wait_for_effects
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "uses explicit timeout when provided" do
|
|
111
|
+
client.stub(:default_javascript_framework).and_return(:prototype)
|
|
112
|
+
client.should_receive(:wait_for_condition).with(anything, :explicit_timeout)
|
|
113
|
+
client.wait_for_effects :timeout_in_seconds => :explicit_timeout
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
describe "#wait_for_field_value" do
|
|
118
|
+
it "uses provided locator" do
|
|
119
|
+
client.should_receive(:wait_for_condition).with(/findElement\('a_locator'\)/, anything)
|
|
120
|
+
client.wait_for_field_value "a_locator", "a value"
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "uses provided field value" do
|
|
124
|
+
client.should_receive(:wait_for_condition).with(/element.value == 'a value'/, anything)
|
|
125
|
+
client.wait_for_field_value "a_locator", "a value"
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "uses explicit timeout when provided" do
|
|
129
|
+
client.should_receive(:wait_for_condition).with(anything, :the_timeout)
|
|
130
|
+
client.wait_for_field_value "a_locator", "a value", :timeout_in_seconds => :the_timeout
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
describe "#wait_for_no_field_value" do
|
|
135
|
+
it "uses provided locator" do
|
|
136
|
+
client.should_receive(:wait_for_condition).with(/findElement\('a_locator'\)/, anything)
|
|
137
|
+
client.wait_for_no_field_value "a_locator", "a value"
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "uses provided field value" do
|
|
141
|
+
client.should_receive(:wait_for_condition).with(/element.value != 'a value'/, anything)
|
|
142
|
+
client.wait_for_no_field_value "a_locator", "a value"
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "uses explicit timeout when provided" do
|
|
146
|
+
client.should_receive(:wait_for_condition).with(anything, :the_timeout)
|
|
147
|
+
client.wait_for_no_field_value "a_locator", "a value", :timeout_in_seconds => :the_timeout
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
describe "#wait_for_visible" do
|
|
152
|
+
it "uses provided locator" do
|
|
153
|
+
client.should_receive(:wait_for_condition).with("selenium.isVisible('a_locator')", anything)
|
|
154
|
+
client.wait_for_visible "a_locator"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "uses explicit timeout when provided" do
|
|
158
|
+
client.should_receive(:wait_for_condition).with(anything, :the_timeout)
|
|
159
|
+
client.wait_for_visible "a_locator", :timeout_in_seconds => :the_timeout
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe "#wait_for_not_visible" do
|
|
164
|
+
it "uses provided locator" do
|
|
165
|
+
client.should_receive(:wait_for_condition).with("!selenium.isVisible('a_locator')", anything)
|
|
166
|
+
client.wait_for_not_visible "a_locator"
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "uses explicit timeout when provided" do
|
|
170
|
+
client.should_receive(:wait_for_condition).with(anything, :the_timeout)
|
|
171
|
+
client.wait_for_not_visible "a_locator", :timeout_in_seconds => :the_timeout
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|