testingbot 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +5 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.rdoc +89 -42
- data/Rakefile +15 -0
- data/examples/android.rb +14 -0
- data/examples/capybara.rb +10 -20
- data/examples/capybara_multiple_browsers.rb +38 -0
- data/examples/cucumber/README.rdoc +15 -0
- data/examples/cucumber/Rakefile +20 -0
- data/examples/cucumber/features/support/env.rb +5 -30
- data/examples/cucumber/features/youtube.feature +1 -0
- data/examples/test_rspec.rb +8 -30
- data/examples/test_rspec1.rb +1 -1
- data/examples/test_unit.rb +6 -13
- data/lib/testingbot.rb +3 -222
- data/lib/testingbot/api.rb +112 -0
- data/lib/testingbot/capybara.rb +49 -0
- data/lib/testingbot/config.rb +54 -2
- data/lib/testingbot/cucumber.rb +31 -26
- data/lib/testingbot/hooks.rb +255 -0
- data/lib/testingbot/selenium.rb +122 -0
- data/lib/testingbot/tunnel.rb +96 -8
- data/lib/testingbot/version.rb +2 -2
- data/spec/integration/api_spec.rb +88 -0
- data/spec/integration/selenium1_spec.rb +53 -0
- data/spec/integration/selenium2_spec.rb +60 -0
- data/spec/integration/tunnel_spec.rb +84 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/unit/api_spec.rb +17 -0
- data/spec/unit/config_spec.rb +73 -0
- data/spec/unit/tunnel_spec.rb +41 -0
- data/testingbot.gemspec +6 -1
- data/vendor/Testingbot-Tunnel.jar +0 -0
- metadata +86 -6
- data/examples/cucumber/README +0 -3
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
{<img src="https://secure.travis-ci.org/testingbot/testingbot_ruby.png" />}[http://travis-ci.org/testingbot/testingbot_ruby]
|
2
|
+
|
1
3
|
= TestingBot
|
2
4
|
|
3
5
|
Testingbot.com is a website where you can use our cloud based Selenium grid. Test your web applications in various environments/browsers/devices.
|
@@ -11,7 +13,7 @@ You can install our testingbot ruby-gem by running "gem install testingbot" on y
|
|
11
13
|
== Setup
|
12
14
|
|
13
15
|
After you installed the gem you need to run a one part setup.
|
14
|
-
Type testingbot in your commandline and fill in the API key and API secret you obtained on http://
|
16
|
+
Type testingbot in your commandline and fill in the API key and API secret you obtained on http://testingbot.com
|
15
17
|
$ testingbot
|
16
18
|
|
17
19
|
== Usage
|
@@ -26,17 +28,11 @@ You can find an example in our examples folder, try something like this:
|
|
26
28
|
|
27
29
|
def setup
|
28
30
|
@browser = Selenium::Client::Driver.new \
|
29
|
-
:host => "hub.testingbot.com",
|
30
|
-
:port => 4444,
|
31
31
|
:browser => "firefox",
|
32
32
|
:url => "http://www.google.com",
|
33
33
|
:platform => "WINDOWS",
|
34
34
|
:version => 10,
|
35
35
|
:timeout_in_second => 90
|
36
|
-
|
37
|
-
browser.options = {
|
38
|
-
:screenshot => true
|
39
|
-
}
|
40
36
|
|
41
37
|
browser.start_new_browser_session
|
42
38
|
end
|
@@ -58,18 +54,22 @@ This example uses RSpec 2. You can run it with rspec test_rspec.rb
|
|
58
54
|
require "selenium/client"
|
59
55
|
require 'rspec'
|
60
56
|
require 'testingbot'
|
57
|
+
require 'testingbot/tunnel'
|
61
58
|
|
62
|
-
|
59
|
+
# rspec 2
|
60
|
+
describe "People", :type => :selenium do
|
63
61
|
attr_reader :selenium_driver
|
64
62
|
before(:all) do
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
63
|
+
# uncomment if you want to use our Tunnel
|
64
|
+
# tunnel = TestingBot::Tunnel.new
|
65
|
+
# tunnel.start
|
66
|
+
|
67
|
+
@selenium_driver = Selenium::Client::Driver.new \
|
68
|
+
:browser => "firefox",
|
69
|
+
:url => "http://www.google.com",
|
70
|
+
:timeout_in_second => 60,
|
71
|
+
:platform => "WINDOWS",
|
72
|
+
:version => "10"
|
73
73
|
end
|
74
74
|
|
75
75
|
before(:each) do
|
@@ -101,10 +101,8 @@ This example uses RSpec 1. You can run it with spec test_rspec1.rb
|
|
101
101
|
attr_reader :selenium_driver
|
102
102
|
alias :page :selenium_driver
|
103
103
|
|
104
|
-
|
104
|
+
before(:all) do
|
105
105
|
@selenium_driver = Selenium::Client::Driver.new \
|
106
|
-
:host => "hub.testingbot.com",
|
107
|
-
:port => 4444,
|
108
106
|
:browser => "firefox",
|
109
107
|
:url => "http://www.google.com",
|
110
108
|
:timeout_in_second => 90,
|
@@ -113,7 +111,7 @@ This example uses RSpec 1. You can run it with spec test_rspec1.rb
|
|
113
111
|
end
|
114
112
|
|
115
113
|
before(:each) do
|
116
|
-
selenium_driver.start_new_browser_session
|
114
|
+
@selenium_driver.start_new_browser_session
|
117
115
|
end
|
118
116
|
|
119
117
|
append_after(:each) do
|
@@ -131,29 +129,18 @@ This example uses RSpec 2 together with capybara and Selenium webdriver. You can
|
|
131
129
|
|
132
130
|
require 'rspec'
|
133
131
|
require 'capybara/rspec'
|
134
|
-
require 'selenium/webdriver'
|
135
132
|
require 'testingbot'
|
133
|
+
require 'testingbot/capybara'
|
136
134
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
caps.platform = :WINDOWS
|
141
|
-
|
142
|
-
Capybara.default_driver = :testingbot
|
143
|
-
Capybara.register_driver :testingbot do |app|
|
144
|
-
client = Selenium::WebDriver::Remote::Http::Default.new
|
145
|
-
client.timeout = 120
|
146
|
-
Capybara::Selenium::Driver.new(app,
|
147
|
-
:browser => :remote,
|
148
|
-
:url => "http://key:secret@hub.testingbot.com:4444/wd/hub",
|
149
|
-
:http_client => client,
|
150
|
-
:desired_capabilities => caps)
|
151
|
-
end
|
135
|
+
TestingBot::config do |config|
|
136
|
+
config[:desired_capabilities] = { :browserName => "firefox", :version => 9, :platform => "WINDOWS" }
|
137
|
+
# config.require_tunnel # uncomment if you want to use our Tunnel
|
152
138
|
end
|
153
139
|
|
154
|
-
describe "
|
140
|
+
describe "People", :type => :request do
|
155
141
|
before :all do
|
156
|
-
|
142
|
+
Capybara.current_driver = :testingbot
|
143
|
+
Capybara.app_host = "http://testingbot.com"
|
157
144
|
end
|
158
145
|
|
159
146
|
it 'has a homepage with the word Selenium' do
|
@@ -162,15 +149,75 @@ This example uses RSpec 2 together with capybara and Selenium webdriver. You can
|
|
162
149
|
end
|
163
150
|
end
|
164
151
|
|
152
|
+
=== Example RSpec 2, Capybara and Rails
|
153
|
+
In this example we will need rspec-rails and Capybara, a rack server will be started by Capybara to run your localhost tests.
|
154
|
+
Add the example below in spec/integration/home_spec.rb
|
155
|
+
----------------------------------------------------------
|
156
|
+
spec_helper.rb:
|
157
|
+
|
158
|
+
require 'capybara/rspec'
|
159
|
+
require 'capybara/rails'
|
160
|
+
require 'testingbot'
|
161
|
+
require 'testingbot/capybara'
|
162
|
+
|
163
|
+
----------------------------------------------------------
|
164
|
+
spec/integration/home_spec.rb:
|
165
|
+
|
166
|
+
require 'spec_helper'
|
167
|
+
|
168
|
+
TestingBot::config do |config|
|
169
|
+
config[:desired_capabilities] = { :browserName => "firefox", :version => 9, :platform => "WINDOWS", :localhost => "YES" }
|
170
|
+
config.require_tunnel
|
171
|
+
end
|
172
|
+
|
173
|
+
describe 'home page' do
|
174
|
+
before :all do
|
175
|
+
Capybara.server_port = 3011
|
176
|
+
Capybara.current_driver = :testingbot
|
177
|
+
Capybara.app_host = "http://127.0.0.1:3011"
|
178
|
+
end
|
179
|
+
|
180
|
+
it "shows the home page", :type => :request do
|
181
|
+
visit '/'
|
182
|
+
page.should have_content('Selenium')
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
=== Example RSpec 2 run on multiple browsers
|
187
|
+
Use the :multibrowser => true statement to indicate you want to test on multiple browsers.
|
188
|
+
|
189
|
+
require 'rubygems'
|
190
|
+
require "selenium/client"
|
191
|
+
require 'rspec'
|
192
|
+
require 'testingbot'
|
193
|
+
require 'testingbot/tunnel'
|
194
|
+
|
195
|
+
TestingBot::config do |config|
|
196
|
+
config[:desired_capabilities] = [{ :browserName => "firefox", :version => 9, :platform => "WINDOWS" }, { :browserName => "firefox", :version => 11, :platform => "WINDOWS" }]
|
197
|
+
end
|
198
|
+
|
199
|
+
describe "Google", :type => :selenium, :multibrowser => true do
|
200
|
+
it "can find the right title" do
|
201
|
+
page.navigate.to "http://www.google.com"
|
202
|
+
page.title.should eql("Google")
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
165
206
|
== Capybara and Cucumber
|
166
|
-
The examples directory contains an example of testing with Capybara and Cucumber
|
207
|
+
The examples directory contains an example of testing with Capybara and Cucumber.
|
208
|
+
The Rakefile in examples/cucumber contains a cucumber task which will run the same Cucumber story on multiple browsers.
|
209
|
+
|
167
210
|
More info available on http://testingbot.com/support/getting-started/cucumber.html
|
168
211
|
|
212
|
+
== Test this gem
|
213
|
+
The tests for this gem are located in the spec folder, you can run them with this Rake task:
|
214
|
+
rake spec
|
215
|
+
|
169
216
|
== Extra options
|
170
|
-
You can specify extra options like enabling/disabling the screenrecording or screenshot feature.
|
217
|
+
You can specify extra options like enabling/disabling the screenrecording or screenshot feature.
|
218
|
+
For WebDriver use the config[:desired_capabilities] to specify extra options.
|
171
219
|
|
172
|
-
|
173
|
-
For example a build number, or other custom data. (browser.extra = "")
|
220
|
+
For RC tests use the start_new_browser_session(options) options hash.
|
174
221
|
|
175
222
|
== More information
|
176
223
|
|
data/Rakefile
CHANGED
@@ -1 +1,16 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
task :spec do
|
6
|
+
begin
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
desc "Run the specs under spec/"
|
9
|
+
RSpec::Core::RakeTask.new do |t|
|
10
|
+
t.fail_on_error = false
|
11
|
+
t.pattern = FileList['spec/**/*_spec.rb'].exclude(/tunnel/)
|
12
|
+
end
|
13
|
+
rescue NameError, LoadError => e
|
14
|
+
puts e
|
15
|
+
end
|
16
|
+
end
|
data/examples/android.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "rubygems"
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/testingbot/config.rb')
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/testingbot/selenium.rb')
|
5
|
+
|
6
|
+
TestingBot::config do |config|
|
7
|
+
config[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.android
|
8
|
+
end
|
9
|
+
|
10
|
+
driver = TestingBot::SeleniumWebdriver.new
|
11
|
+
|
12
|
+
driver.navigate.to "http://testingbot.com/"
|
13
|
+
puts driver.title
|
14
|
+
driver.quit
|
data/examples/capybara.rb
CHANGED
@@ -1,32 +1,22 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
require 'capybara/rspec'
|
3
|
-
require 'selenium/webdriver'
|
4
3
|
require 'testingbot'
|
4
|
+
require 'testingbot/capybara'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
Capybara.default_driver = :testingbot
|
12
|
-
Capybara.register_driver :testingbot do |app|
|
13
|
-
client = Selenium::WebDriver::Remote::Http::Default.new
|
14
|
-
client.timeout = 120
|
15
|
-
Capybara::Selenium::Driver.new(app,
|
16
|
-
:browser => :remote,
|
17
|
-
:url => "http://key:secret@hub.testingbot.com:4444/wd/hub",
|
18
|
-
:http_client => client,
|
19
|
-
:desired_capabilities => caps)
|
20
|
-
end
|
6
|
+
TestingBot::config do |config|
|
7
|
+
config[:desired_capabilities] = { :browserName => "firefox", :version => 9, :platform => "WINDOWS" }
|
8
|
+
config[:options] = { :screenshot => false, :extra => "Some extra data" }
|
9
|
+
#config.require_tunnel
|
21
10
|
end
|
22
11
|
|
23
12
|
describe "People", :type => :request do
|
24
13
|
before :all do
|
14
|
+
Capybara.current_driver = :testingbot
|
25
15
|
Capybara.app_host = "http://testingbot.com"
|
26
16
|
end
|
27
17
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
18
|
+
it 'has a homepage with the word Selenium' do
|
19
|
+
visit '/'
|
20
|
+
page.should have_content('Selenium')
|
21
|
+
end
|
32
22
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'capybara/rspec'
|
3
|
+
require 'testingbot'
|
4
|
+
require 'testingbot/capybara'
|
5
|
+
|
6
|
+
browsers = [{ :browserName => "firefox", :version => 9, :platform => "WINDOWS" }, { :browserName => "firefox", :version => 10, :platform => "WINDOWS" }]
|
7
|
+
|
8
|
+
browsers.each do |browser|
|
9
|
+
|
10
|
+
shared_examples "an example test on #{browser[:browserName]} #{browser[:version]}" do |actions|
|
11
|
+
describe "Demo", :type => :request do
|
12
|
+
before :all do
|
13
|
+
TestingBot::config do |config|
|
14
|
+
config[:desired_capabilities] = browser
|
15
|
+
end
|
16
|
+
Capybara.run_server = false
|
17
|
+
Capybara.current_driver = :testingbot
|
18
|
+
Capybara.app_host = "http://testingbot.com"
|
19
|
+
end
|
20
|
+
|
21
|
+
after :all do
|
22
|
+
TestingBot.reset_config!
|
23
|
+
Capybara.current_driver = :testingbot
|
24
|
+
page.driver.browser.quit
|
25
|
+
page.driver.instance_variable_set(:@browser, nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'has a homepage with the word Selenium' do
|
29
|
+
visit '/'
|
30
|
+
page.should have_content('Selenium')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "Sample", :type => :request do
|
36
|
+
it_behaves_like "an example test on #{browser[:browserName]} #{browser[:version]}"
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Testing with Cucumber, Selenium and Capybara
|
2
|
+
|
3
|
+
== Usage
|
4
|
+
|
5
|
+
This example contains a basic Cucumber story which will run on TestingBot.
|
6
|
+
Included you will find a Rakefile which contains a cucumber task.
|
7
|
+
If you run this Rake task you can run the same Cucumber story on multiple browsers.
|
8
|
+
|
9
|
+
rake cucumber
|
10
|
+
|
11
|
+
You can specify the browser list inside the Rakefile.
|
12
|
+
|
13
|
+
=== More information
|
14
|
+
|
15
|
+
More info at http://testingbot.com/support/getting-started/ruby.html
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
require 'selenium/rake/tasks'
|
6
|
+
|
7
|
+
task :cucumber do
|
8
|
+
browsers = [{ :browserName => "firefox", :version => 9, :platform => "WINDOWS" }, { :browserName => "firefox", :version => 10, :platform => "WINDOWS" }]
|
9
|
+
|
10
|
+
browsers.each do |browser|
|
11
|
+
ENV['SELENIUM_BROWSERNAME'] = browser[:browserName]
|
12
|
+
ENV['SELENIUM_BROWSERVERSION'] = browser[:version].to_s
|
13
|
+
ENV['SELENIUM_BROWSERPLATFORM'] = browser[:platform]
|
14
|
+
Rake::Task[:run_cucumber].execute(browser)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Cucumber::Rake::Task.new(:run_cucumber) do |t|
|
19
|
+
t.cucumber_opts = ["features"]
|
20
|
+
end
|
@@ -4,35 +4,10 @@ require 'rspec'
|
|
4
4
|
require 'selenium/webdriver'
|
5
5
|
require 'testingbot/cucumber'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
caps[:version] = ENV['TESTINGBOT_BROWSERVERSION'] || ""
|
11
|
-
caps[:platform] = ENV['TESTINGBOT_BROWSEROS'] || :WINDOWS
|
12
|
-
|
13
|
-
Capybara.default_driver = :testingbot
|
14
|
-
Capybara.register_driver :testingbot do |app|
|
15
|
-
client = Selenium::WebDriver::Remote::Http::Default.new
|
16
|
-
client.timeout = 120
|
17
|
-
Capybara::Selenium::Driver.new(app,
|
18
|
-
:browser => :remote,
|
19
|
-
:url => "http://251ca561ab0f7557bb34c3ee3dbde285:3fc22e44f086fa036d8b01eadf66740b@hub.testingbot.com:4444/wd/hub",
|
20
|
-
:http_client => client,
|
21
|
-
:desired_capabilities => caps)
|
22
|
-
end
|
23
|
-
else
|
24
|
-
caps = Selenium::WebDriver::Remote::Capabilities.firefox
|
25
|
-
caps.version = "10"
|
26
|
-
caps.platform = :WINDOWS
|
27
|
-
|
28
|
-
Capybara.default_driver = :testingbot
|
29
|
-
Capybara.register_driver :testingbot do |app|
|
30
|
-
client = Selenium::WebDriver::Remote::Http::Default.new
|
31
|
-
client.timeout = 120
|
32
|
-
Capybara::Selenium::Driver.new(app,
|
33
|
-
:browser => :remote,
|
34
|
-
:url => "http://251ca561ab0f7557bb34c3ee3dbde285:3fc22e44f086fa036d8b01eadf66740b@hub.testingbot.com:4444/wd/hub",
|
35
|
-
:http_client => client,
|
36
|
-
:desired_capabilities => caps)
|
7
|
+
unless ENV['SELENIUM_BROWSERNAME'].nil?
|
8
|
+
TestingBot::config do |config|
|
9
|
+
config[:desired_capabilities] = { :browserName => ENV['SELENIUM_BROWSERNAME'], :version => ENV['SELENIUM_BROWSERVERSION'], :platform => ENV['SELENIUM_BROWSERPLATFORM'] }
|
37
10
|
end
|
38
11
|
end
|
12
|
+
|
13
|
+
Capybara.default_driver = :testingbot
|
data/examples/test_rspec.rb
CHANGED
@@ -2,38 +2,16 @@ require 'rubygems'
|
|
2
2
|
require "selenium/client"
|
3
3
|
require 'rspec'
|
4
4
|
require 'testingbot'
|
5
|
-
|
5
|
+
require 'testingbot/tunnel'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
before(:all) do
|
11
|
-
#TestingBot::Tunnel.start_tunnel("selenium@tunnel.testingbot.com", 2052)
|
7
|
+
TestingBot::config do |config|
|
8
|
+
config[:desired_capabilities] = [{ :browserName => "firefox", :version => 9, :platform => "WINDOWS" }, { :browserName => "firefox", :version => 11, :platform => "WINDOWS" }]
|
9
|
+
end
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
:port => 4444,
|
16
|
-
:browser => "firefox",
|
17
|
-
:url => "http://www.google.com",
|
18
|
-
:timeout_in_second => 60,
|
19
|
-
:platform => "WINDOWS",
|
20
|
-
:version => "10"
|
21
|
-
end
|
22
|
-
|
23
|
-
before(:each) do
|
24
|
-
@selenium_driver.start_new_browser_session
|
25
|
-
end
|
26
|
-
|
27
|
-
after(:each) do
|
28
|
-
@selenium_driver.close_current_browser_session
|
29
|
-
end
|
30
|
-
|
11
|
+
# rspec 2
|
12
|
+
describe "People", :type => :selenium, :multibrowser => true do
|
31
13
|
it "can find the right title" do
|
32
|
-
|
33
|
-
|
14
|
+
page.navigate.to "http://www.google.com"
|
15
|
+
page.title.should eql("Google")
|
34
16
|
end
|
35
|
-
|
36
|
-
# after(:all) do
|
37
|
-
# TestingBot::Tunnel.stop_tunnel
|
38
|
-
# end
|
39
17
|
end
|