testingbot 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in testingbot.gemspec
4
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,16 @@
1
+ = TestingBot
2
+
3
+ Testingbot.com is a website where you can use our cloud based Selenium grid. Test your web applications in various environments/browsers/devices.
4
+
5
+ == How to install?
6
+
7
+ You can install our testingbot ruby-gem by running "gem install testingbot" on your commandline.
8
+
9
+ == Setup
10
+
11
+ After you installed the gem you need to run a one part setup.
12
+ Type testingbot in your commandline and fill in the API key and API secret you obtained on testingbot.com
13
+
14
+ == More information
15
+
16
+ Get more information on http://www.testingbot.com
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/testingbot ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if ARGV.any?
4
+ api_key, api_secret = ARGV.first.split(':')
5
+ else
6
+
7
+ p "This utility will help you set up your system to use testingbot.com's infrastructure."
8
+ p "Once you have entered your api key and secret you will be ready to use our grid"
9
+
10
+ p "Please enter your testingbot API KEY:"
11
+ api_key = gets.chomp
12
+ p "Please enter your testingbot API SECRET:"
13
+ api_secret = gets.chomp
14
+ end
15
+
16
+ File.open(File.expand_path("~/.testingbot"), 'w') {|f| f.write("#{api_key}:#{api_secret}") }
17
+
18
+ p "Your system is now ready to use testingbot.com's grid infrastructure."
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ gem "rspec", ">=1.2.8"
3
+ gem "selenium-client", ">=1.2.18"
4
+ require "selenium/client"
5
+ require "selenium/rspec/spec_helper"
6
+ gem "testingbot"
7
+ require "testingbot"
8
+
9
+ describe "People" do
10
+ attr_reader :selenium_driver
11
+ alias :page :selenium_driver
12
+
13
+ before(:all) do
14
+ @selenium_driver = Selenium::Client::Driver.new \
15
+ :host => "localhost",
16
+ :port => 4444,
17
+ :browser => "*safari",
18
+ :url => "http://www.google.com",
19
+ :timeout_in_second => 60
20
+ end
21
+
22
+ before(:each) do
23
+ selenium_driver.start_new_browser_session
24
+ end
25
+
26
+ append_after(:each) do
27
+ @selenium_driver.close_current_browser_session
28
+ end
29
+
30
+ it "can find Selenium" do
31
+ page.open "/"
32
+ page.title.should eql("Google")
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ require "rubygems"
2
+ gem "selenium-client"
3
+ require "selenium/client"
4
+ gem 'test-unit'
5
+ require 'test/unit'
6
+
7
+ gem "testingbot"
8
+ require "testingbot"
9
+
10
+ class ExampleTest < TestingBot::TestCase
11
+ attr_reader :browser
12
+
13
+ def setup
14
+ @browser = Selenium::Client::Driver.new \
15
+ :host => "localhost",
16
+ :port => 4444,
17
+ :browser => "*safari",
18
+ :url => "http://www.google.com",
19
+ :timeout_in_second => 60
20
+
21
+ browser.start_new_browser_session
22
+ end
23
+
24
+ def teardown
25
+ browser.close_current_browser_session
26
+ end
27
+
28
+ def test_page_search
29
+ browser.open "/"
30
+ assert_equal "Google", browser.title
31
+ end
32
+ end
data/lib/testingbot.rb ADDED
@@ -0,0 +1,123 @@
1
+ require "testingbot/version"
2
+
3
+ module Selenium
4
+ module Client
5
+ module Protocol
6
+ attr_writer :client_key, :client_secret
7
+
8
+ def client_key
9
+ if @client_key.nil?
10
+ @client_key, @client_secret = get_testingbot_credentials
11
+ end
12
+ @client_key
13
+ end
14
+
15
+ def client_secret
16
+ if @client_secret.nil?
17
+ @client_key, @client_secret = get_testingbot_credentials
18
+ end
19
+ @client_secret
20
+ end
21
+
22
+ def get_testingbot_credentials
23
+ if File.exists?(File.expand_path("~/.testingbot"))
24
+ str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
25
+ str.split(':')
26
+ else
27
+ raise "Please run the testingbot install tool first"
28
+ end
29
+ end
30
+
31
+ # add custom parameters for testingbot.com
32
+ def http_request_for_testingbot(verb, args)
33
+ data = http_request_for_original(verb, args)
34
+ data << "&client_key=#{client_key}&client_secret=#{client_secret}"
35
+ end
36
+
37
+ alias http_request_for_original http_request_for
38
+ alias http_request_for http_request_for_testingbot
39
+ end
40
+ end
41
+ end
42
+
43
+ module Selenium
44
+ module Client
45
+ module Base
46
+ alias :close_current_browser_session_old :close_current_browser_session
47
+ attr_accessor :session_id_backup
48
+
49
+ def close_current_browser_session
50
+ @session_id_backup = @session_id
51
+ close_current_browser_session_old
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ if defined?(Spec)
58
+ Spec::Runner.configure do |config|
59
+ config.prepend_after(:each) do
60
+ if File.exists?(File.expand_path("~/.testingbot"))
61
+ str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
62
+ client_key, client_secret = str.split(':')
63
+
64
+ params = {
65
+ "session_id" => @selenium_driver.session_id_backup,
66
+ "client_key" => client_key,
67
+ "client_secret" => client_secret,
68
+ "status_message" => @execution_error,
69
+ "success" => !actual_failure?,
70
+ "name" => description.to_s,
71
+ "kind" => 2
72
+ }
73
+
74
+ url = URI.parse('http://localhost:3000/hq')
75
+ http = Net::HTTP.new(url.host, url.port)
76
+ response = http.post(url.path, params.map { |k, v| "#{k.to_s}=#{v}" }.join("&"))
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ if defined?(Test::Unit::TestCase)
83
+ module TestingBot
84
+ class TestingBot::TestCase < Test::Unit::TestCase
85
+ alias :run_teardown_old :run_teardown
86
+ alias :handle_exception_old :handle_exception
87
+
88
+ attr_accessor :exception
89
+
90
+ def run_teardown
91
+ client_key, client_secret = get_testingbot_credentials
92
+ params = {
93
+ "session_id" => browser.session_id,
94
+ "client_key" => client_key,
95
+ "client_secret" => client_secret,
96
+ "status_message" => @exception,
97
+ "success" => passed?,
98
+ "name" => self.to_s,
99
+ "kind" => 2
100
+ }
101
+
102
+ url = URI.parse('http://localhost:3000/hq')
103
+ http = Net::HTTP.new(url.host, url.port)
104
+ response = http.post(url.path, params.map { |k, v| "#{k.to_s}=#{v}" }.join("&"))
105
+ run_teardown_old
106
+ end #def run_teardown
107
+
108
+ def handle_exception(e)
109
+ @exception = e.to_s
110
+ handle_exception_old(e)
111
+ end
112
+
113
+ def get_testingbot_credentials
114
+ if File.exists?(File.expand_path("~/.testingbot"))
115
+ str = File.open(File.expand_path("~/.testingbot")) { |f| f.readline }.chomp
116
+ str.split(':')
117
+ else
118
+ raise "Please run the testingbot install tool first"
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,3 @@
1
+ module Testingbot
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "testingbot/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "testingbot"
7
+ s.version = Testingbot::VERSION
8
+ s.authors = ["Jochen"]
9
+ s.email = ["info@testingbot.com"]
10
+ s.homepage = ""
11
+ s.summary = "Ruby Gem to be used with testingbot.com"
12
+ s.description = "This gem makes using our Selenium grid on testingbot.com easy"
13
+
14
+ s.rubyforge_project = "testingbot"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+ s.add_dependency "rspec"
21
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: testingbot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jochen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-08-13 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &2151951280 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2151951280
25
+ description: This gem makes using our Selenium grid on testingbot.com easy
26
+ email:
27
+ - info@testingbot.com
28
+ executables:
29
+ - testingbot
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - README.rdoc
36
+ - Rakefile
37
+ - bin/testingbot
38
+ - examples/test_rspec.rb
39
+ - examples/test_unit.rb
40
+ - lib/testingbot.rb
41
+ - lib/testingbot/version.rb
42
+ - testingbot.gemspec
43
+ homepage: ''
44
+ licenses: []
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project: testingbot
63
+ rubygems_version: 1.8.8
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Ruby Gem to be used with testingbot.com
67
+ test_files: []