testingbot 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -32,7 +32,7 @@ You can find an example in our examples folder, try something like this:
32
32
  :url => "http://www.google.com",
33
33
  :platform => "WINDOWS",
34
34
  :version => 10,
35
- :timeout_in_second => 60
35
+ :timeout_in_second => 90
36
36
 
37
37
  browser.options = {
38
38
  :screenshot => true
@@ -67,7 +67,7 @@ This example uses RSpec 2. You can run it with rspec test_rspec.rb
67
67
  :port => 4444,
68
68
  :browser => "firefox",
69
69
  :url => "http://www.google.com",
70
- :timeout_in_second => 60,
70
+ :timeout_in_second => 90,
71
71
  :platform => "WINDOWS",
72
72
  :version => "10"
73
73
  end
@@ -107,7 +107,7 @@ This example uses RSpec 1. You can run it with spec test_rspec1.rb
107
107
  :port => 4444,
108
108
  :browser => "firefox",
109
109
  :url => "http://www.google.com",
110
- :timeout_in_second => 60,
110
+ :timeout_in_second => 90,
111
111
  :platform => "WINDOWS",
112
112
  :version => "10"
113
113
  end
@@ -162,6 +162,10 @@ This example uses RSpec 2 together with capybara and Selenium webdriver. You can
162
162
  end
163
163
  end
164
164
 
165
+ == Capybara and Cucumber
166
+ The examples directory contains an example of testing with Capybara and Cucumber
167
+ More info available on http://testingbot.com/support/getting-started/cucumber.html
168
+
165
169
  == Extra options
166
170
  You can specify extra options like enabling/disabling the screenrecording or screenshot feature. (browser.options)
167
171
 
@@ -170,7 +174,7 @@ For example a build number, or other custom data. (browser.extra = "")
170
174
 
171
175
  == More information
172
176
 
173
- Get more information on http://www.testingbot.com
177
+ Get more information on http://testingbot.com
174
178
 
175
179
  == Copyright
176
180
 
data/bin/testingbot CHANGED
File without changes
@@ -4,17 +4,35 @@ require 'rspec'
4
4
  require 'selenium/webdriver'
5
5
  require 'testingbot/cucumber'
6
6
 
7
- caps = Selenium::WebDriver::Remote::Capabilities.firefox
8
- caps.version = "8"
9
- caps.platform = :WINDOWS
7
+ if ENV['TESTINGBOT_BROWSER']
8
+ caps = {}
9
+ caps[:browser] = ENV['TESTINGBOT_BROWSER']
10
+ caps[:version] = ENV['TESTINGBOT_BROWSERVERSION'] || ""
11
+ caps[:platform] = ENV['TESTINGBOT_BROWSEROS'] || :WINDOWS
10
12
 
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
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)
37
+ end
38
+ end
data/lib/testingbot.rb CHANGED
@@ -1,39 +1,15 @@
1
1
  require "testingbot/version"
2
+ require "testingbot/config"
2
3
 
3
4
  # if selenium RC, add testingbot credentials to request
4
5
  if defined?(Selenium) && defined?(Selenium::Client) && defined?(Selenium::Client::Protocol)
5
6
  module Selenium
6
7
  module Client
7
8
  module Protocol
8
- attr_writer :client_key, :client_secret
9
-
10
- def client_key
11
- if @client_key.nil?
12
- @client_key, @client_secret = get_testingbot_credentials
13
- end
14
- @client_key
15
- end
16
-
17
- def client_secret
18
- if @client_secret.nil?
19
- @client_key, @client_secret = get_testingbot_credentials
20
- end
21
- @client_secret
22
- end
23
-
24
- def get_testingbot_credentials
25
- if File.exists?(File.expand_path("~/.testingbot"))
26
- str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
27
- str.split(':')
28
- else
29
- raise "Please run the testingbot install tool first"
30
- end
31
- end
32
-
33
9
  # add custom parameters for testingbot.com
34
10
  def http_request_for_testingbot(verb, args)
35
11
  data = http_request_for_original(verb, args)
36
- data << "&client_key=#{client_key}&client_secret=#{client_secret}"
12
+ data << "&client_key=#{TestingBot.get_config[:client_key]}&client_secret=#{TestingBot.get_config[:client_secret]}"
37
13
  end
38
14
 
39
15
  begin
@@ -107,9 +83,10 @@ begin
107
83
  require "selenium/rspec/spec_helper"
108
84
  Spec::Runner.configure do |config|
109
85
  config.prepend_after(:each) do
110
- if File.exists?(File.expand_path("~/.testingbot"))
111
- str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
112
- client_key, client_secret = str.split(':')
86
+ client_key = TestingBot.get_config[:client_key]
87
+ client_secret = TestingBot.get_config[:client_secret]
88
+
89
+ if !client_key.nil?
113
90
 
114
91
  session_id = nil
115
92
 
@@ -152,10 +129,11 @@ begin
152
129
  require 'rspec'
153
130
 
154
131
  ::RSpec.configuration.after :each do
155
- if File.exists?(File.expand_path("~/.testingbot"))
156
- str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
157
- client_key, client_secret = str.split(':')
158
132
 
133
+ client_key = TestingBot.get_config[:client_key]
134
+ client_secret = TestingBot.get_config[:client_secret]
135
+
136
+ if !client_key.nil?
159
137
  test_name = ""
160
138
  if example.metadata && example.metadata[:example_group]
161
139
  if example.metadata[:example_group][:description_args]
@@ -208,7 +186,7 @@ begin
208
186
  rescue LoadError
209
187
  end
210
188
 
211
- if defined?(Test::Unit::TestCase)
189
+ if defined?(Test::Unit::TestCase) && (Test::Unit::TestCase.respond_to?('run_teardown'))
212
190
  module TestingBot
213
191
  class TestingBot::TestCase < Test::Unit::TestCase
214
192
  alias :run_teardown_old :run_teardown
@@ -217,7 +195,9 @@ if defined?(Test::Unit::TestCase)
217
195
  attr_accessor :exception
218
196
 
219
197
  def run_teardown
220
- client_key, client_secret = get_testingbot_credentials
198
+ client_key = TestingBot.get_config[:client_key]
199
+ client_secret = TestingBot.get_config[:client_secret]
200
+
221
201
  params = {
222
202
  "session_id" => browser.session_id,
223
203
  "client_key" => client_key,
@@ -239,15 +219,6 @@ if defined?(Test::Unit::TestCase)
239
219
  @exception = e.to_s
240
220
  handle_exception_old(e)
241
221
  end
242
-
243
- def get_testingbot_credentials
244
- if File.exists?(File.expand_path("~/.testingbot"))
245
- str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
246
- str.split(':')
247
- else
248
- raise "Please run the testingbot install tool first"
249
- end
250
- end
251
222
  end
252
223
  end
253
224
  end
@@ -0,0 +1,66 @@
1
+ module TestingBot
2
+ @@config = nil
3
+
4
+ def self.get_config
5
+ @@config = TestingBot::Config.new if @@config.nil?
6
+ @@config
7
+ end
8
+
9
+ class Config
10
+
11
+ attr_reader :options
12
+
13
+ def initialize(options = {})
14
+ @options = options
15
+ @options = @options.merge(load_config_file)
16
+ @options = @options.merge(load_config_environment)
17
+ end
18
+
19
+ def [](key)
20
+ @options[key]
21
+ end
22
+
23
+ def []=(key, value)
24
+ @options[key] = value
25
+ end
26
+
27
+ def client_key
28
+ @options[:client_key]
29
+ end
30
+
31
+ def client_secret
32
+ @options[:client_secret]
33
+ end
34
+
35
+ private
36
+
37
+ def load_config_file
38
+ options = {}
39
+
40
+ is_windows = (RUBY_PLATFORM =~ /w.*32/)
41
+
42
+ if is_windows
43
+ config_file = "#{ENV['HOMEDRIVE']}\\.testingbot"
44
+ else
45
+ config_file = File.expand_path("~/.testingbot")
46
+ end
47
+
48
+ if File.exists?(config_file)
49
+ str = File.open(config_file) { |f| f.readline }.chomp
50
+ options[:client_key], options[:client_secret] = str.split(':')
51
+ end
52
+
53
+ options
54
+ end
55
+
56
+ def load_config_environment
57
+ options = {}
58
+ options[:client_key] = ENV['TESTINGBOT_CLIENTKEY']
59
+ options[:client_secret] = ENV['TESTINGBOT_CLIENTSECRET']
60
+
61
+ options.delete_if { |key, value| value.nil?}
62
+
63
+ options
64
+ end
65
+ end
66
+ end
@@ -1,26 +1,30 @@
1
+ require 'testingbot/config'
2
+
1
3
  if defined?(Cucumber)
2
4
  After do |scenario|
3
- if Capybara.drivers.include?(:testingbot) && File.exists?(File.expand_path("~/.testingbot"))
4
- unless Capybara.drivers[:testingbot].call.browser.nil?
5
- session_id = Capybara.drivers[:testingbot].call.browser.instance_variable_get("@bridge").instance_variable_get("@session_id")
6
-
7
- str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
8
- client_key, client_secret = str.split(':')
9
-
10
- params = {
11
- "session_id" => session_id,
12
- "client_key" => client_key,
13
- "client_secret" => client_secret,
14
- "status_message" => (scenario.failed? ? scenario.exception.message : ""),
15
- "success" => !scenario.failed?,
16
- "name" => scenario.title,
17
- "kind" => 2
18
- }
19
-
20
- url = URI.parse('http://testingbot.com/hq')
21
- http = Net::HTTP.new(url.host, url.port)
22
- response = http.post(url.path, params.map { |k, v| "#{k.to_s}=#{v}" }.join("&"))
23
- end
5
+ client_key = TestingBot.get_config[:client_key]
6
+ client_secret = TestingBot.get_config[:client_secret]
7
+
8
+ if Capybara.drivers.include?(:testingbot) && !TestingBot.get_config[:client_key].nil?
9
+ begin
10
+ session_id = page.driver.browser.instance_variable_get("@bridge").instance_variable_get("@session_id")
11
+
12
+ params = {
13
+ "session_id" => session_id,
14
+ "client_key" => client_key,
15
+ "client_secret" => client_secret,
16
+ "status_message" => (scenario.failed? ? scenario.exception.message : ""),
17
+ "success" => !scenario.failed?,
18
+ "name" => scenario.title,
19
+ "kind" => 2
20
+ }
21
+
22
+ url = URI.parse('http://testingbot.com/hq')
23
+ http = Net::HTTP.new(url.host, url.port)
24
+ response = http.post(url.path, params.map { |k, v| "#{k.to_s}=#{v}" }.join("&"))
25
+ rescue Exception => e
26
+ p "Could not determine sessionID, can not send results to TestingBot.com #{e.message}"
27
+ end
24
28
  end
25
29
  end
26
30
  end
@@ -1,3 +1,3 @@
1
1
  module Testingbot
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testingbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-29 00:00:00.000000000 Z
12
+ date: 2012-03-22 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: This gem makes using our Selenium grid on testingbot.com easy
15
15
  email:
@@ -34,6 +34,7 @@ files:
34
34
  - examples/test_rspec1.rb
35
35
  - examples/test_unit.rb
36
36
  - lib/testingbot.rb
37
+ - lib/testingbot/config.rb
37
38
  - lib/testingbot/cucumber.rb
38
39
  - lib/testingbot/tunnel.rb
39
40
  - lib/testingbot/version.rb