sauce 0.5.0 → 0.6.0
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.
- data/README.markdown +1 -3
- data/Rakefile +4 -1
- data/VERSION +1 -1
- data/lib/sauce.rb +6 -4
- data/lib/{rest.rb → sauce/client.rb} +0 -0
- data/lib/sauce/config.rb +76 -0
- data/lib/{gateway_ext.rb → sauce/gateway_ext.rb} +0 -0
- data/lib/sauce/heroku.rb +18 -0
- data/lib/sauce/integrations.rb +29 -0
- data/lib/{job.rb → sauce/job.rb} +0 -0
- data/lib/sauce/selenium.rb +12 -0
- data/lib/{tunnel.rb → sauce/tunnel.rb} +0 -0
- data/test/saucelabs_spec.rb +8 -0
- data/test/test_config.rb +27 -0
- data/test/test_jobs.rb +8 -8
- data/test/test_selenium.rb +14 -0
- data/test/test_tunnels.rb +8 -19
- metadata +72 -11
- data/test/debug.rb +0 -11
- data/test/monitor_jobs.rb +0 -13
data/README.markdown
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
sauce
|
2
2
|
=====
|
3
3
|
|
4
|
-
Ruby access to
|
4
|
+
Ruby access to Sauce OnDemand
|
5
5
|
|
6
6
|
Features
|
7
7
|
--------
|
@@ -17,8 +17,6 @@ Planned:
|
|
17
17
|
|
18
18
|
Install
|
19
19
|
-------
|
20
|
-
Make sure you're pulling in gems from http://rubygems.org/, and then:
|
21
|
-
|
22
20
|
`gem install sauce`
|
23
21
|
|
24
22
|
Example
|
data/Rakefile
CHANGED
@@ -11,7 +11,10 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/sgrove/sauce"
|
12
12
|
gem.authors = ["Sean Grove"]
|
13
13
|
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
|
-
gem.
|
14
|
+
gem.add_runtime_dependency "rest-client", ">= 0"
|
15
|
+
gem.add_runtime_dependency "net-ssh", ">= 0"
|
16
|
+
gem.add_runtime_dependency "net-ssh-gateway", ">= 0"
|
17
|
+
gem.add_runtime_dependency "selenium-client", ">= 1.2.18"
|
15
18
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
19
|
end
|
17
20
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/sauce.rb
CHANGED
File without changes
|
data/lib/sauce/config.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Sauce
|
5
|
+
class Config
|
6
|
+
attr_reader :opts
|
7
|
+
DEFAULT_OPTIONS = {
|
8
|
+
:host => "saucelabs.com",
|
9
|
+
:port => 4444,
|
10
|
+
:browser_url => "http://saucelabs.com",
|
11
|
+
:os => "Linux",
|
12
|
+
:browser => "firefox",
|
13
|
+
:browser_version => "3.",
|
14
|
+
:job_name => "Unnamed Ruby job"
|
15
|
+
}
|
16
|
+
|
17
|
+
def initialize(opts={})
|
18
|
+
@opts = DEFAULT_OPTIONS.merge(load_options_from_yaml)
|
19
|
+
@opts.merge! load_options_from_environment
|
20
|
+
@opts.merge! opts
|
21
|
+
end
|
22
|
+
|
23
|
+
def method_missing(meth, *args)
|
24
|
+
return @opts[meth]
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_browser_string
|
28
|
+
browser_options = {
|
29
|
+
'username' => @opts[:username],
|
30
|
+
'access-key' => @opts[:access_key],
|
31
|
+
'os' => @opts[:os],
|
32
|
+
'browser' => @opts[:browser],
|
33
|
+
'browser-version' => @opts[:browser_version],
|
34
|
+
'name' => @opts[:job_name]}
|
35
|
+
return browser_options.to_json
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def load_options_from_environment
|
41
|
+
opts = {}
|
42
|
+
opts[:host] = ENV['SAUCE_HOST']
|
43
|
+
opts[:port] = ENV['SAUCE_PORT']
|
44
|
+
opts[:browser_url] = ENV['SAUCE_BROWSER_URL']
|
45
|
+
|
46
|
+
opts[:username] = ENV['SAUCE_USERNAME']
|
47
|
+
opts[:access_key] = ENV['SAUCE_ACCESS_KEY']
|
48
|
+
|
49
|
+
opts[:os] = ENV['SAUCE_OS']
|
50
|
+
opts[:browser] = ENV['SAUCE_BROWSER']
|
51
|
+
opts[:browser_version] = ENV['SAUCE_BROWSER_VERSION']
|
52
|
+
opts[:job_name] = ENV['SAUCE_JOB_NAME']
|
53
|
+
|
54
|
+
opts[:firefox_profile_url] = ENV['SAUCE_FIREFOX_PROFILE_URL']
|
55
|
+
opts[:user_extensions_url] = ENV['SAUCE_USER_EXTENSIONS_URL']
|
56
|
+
|
57
|
+
return opts.delete_if {|key, value| value.nil?}
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_options_from_yaml
|
61
|
+
paths = [
|
62
|
+
"ondemand.yml",
|
63
|
+
File.join("config", "ondemand.yml"),
|
64
|
+
File.join(ENV['HOME'], ".ondemand.yml")
|
65
|
+
]
|
66
|
+
|
67
|
+
paths.each do |path|
|
68
|
+
if File.exists? path
|
69
|
+
conf = YAML.load_file(path)
|
70
|
+
return conf.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
71
|
+
end
|
72
|
+
end
|
73
|
+
return {}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
File without changes
|
data/lib/sauce/heroku.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Sauce
|
2
|
+
if ENV['SAUCE_ONDEMAND_HEROKU_URL'] and ENV['URL']
|
3
|
+
|
4
|
+
# Heroku Configuation
|
5
|
+
config = JSON.parse RestClient.get(ENV['SAUCE_ONDEMAND_HEROKU_URL']).body
|
6
|
+
Sauce::Selenium_browsers = JSON.parse config["SAUCE_ONDEMAND_BROWSERS"]
|
7
|
+
Sauce::Selenium_url = "#{config['SAUCE_ONDEMAND_PROTOCOL']}#{ENV['URL']}"
|
8
|
+
Sauce::Selenium_host = config["SAUCE_ONDEMAND_SERVER" ]
|
9
|
+
Sauce::Selenium_port = config["SAUCE_ONDEMAND_PORT" ]
|
10
|
+
else
|
11
|
+
|
12
|
+
# Local Configuration
|
13
|
+
Sauce::Selenium_url = ENV['SELENIUM_URL'] || "http://localhost:3000"
|
14
|
+
Sauce::Selenium_host = ENV['SELENIUM_HOST'] || "localhost"
|
15
|
+
Sauce::Selenium_port = ENV['SELENIUM_PORT'] || "4444"
|
16
|
+
Sauce::Selenium_browsers = ENV['SELENIUM_BROWSER'] || ["*firefox"]
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
module Sauce
|
4
|
+
module RSpec
|
5
|
+
class SeleniumExampleGroup < Spec::Example::ExampleGroup
|
6
|
+
attr_reader :selenium
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
@selenium = Sauce::Selenium.new
|
10
|
+
end
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
@selenium.start
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:each) do
|
17
|
+
@selenium.stop
|
18
|
+
end
|
19
|
+
|
20
|
+
alias_method :page, :selenium
|
21
|
+
alias_method :s, :selenium
|
22
|
+
|
23
|
+
Spec::Example::ExampleGroupFactory.register(:selenium, self)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
rescue LoadError
|
28
|
+
# User doesn't have RSpec installed
|
29
|
+
end
|
data/lib/{job.rb → sauce/job.rb}
RENAMED
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "selenium/client"
|
2
|
+
|
3
|
+
module Sauce
|
4
|
+
class Selenium < Selenium::Client::Driver
|
5
|
+
def initialize(opts={})
|
6
|
+
@config = Sauce::Config.new(opts)
|
7
|
+
opts.merge!({:host => @config.host, :port => @config.port,
|
8
|
+
:browser => @config.to_browser_string, :url => @config.browser_url})
|
9
|
+
super(opts)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
File without changes
|
data/test/test_config.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestConfig < Test::Unit::TestCase
|
4
|
+
context "A new Config" do
|
5
|
+
should "Generate a reasonable browser string from the environment" do
|
6
|
+
ENV['SAUCE_USERNAME'] = "test_user"
|
7
|
+
ENV['SAUCE_ACCESS_KEY'] = "test_access"
|
8
|
+
ENV['SAUCE_OS'] = "Linux"
|
9
|
+
ENV['SAUCE_BROWSER'] = "firefox"
|
10
|
+
ENV['SAUCE_BROWSER_VERSION'] = "3."
|
11
|
+
|
12
|
+
config = Sauce::Config.new
|
13
|
+
assert_equal "{\"name\":\"Unnamed Ruby job\",\"access-key\":\"test_access\",\"os\":\"Linux\",\"username\":\"test_user\",\"browser-version\":\"3.\",\"browser\":\"firefox\"}", config.to_browser_string
|
14
|
+
end
|
15
|
+
|
16
|
+
should "Generate a browser string from parameters" do
|
17
|
+
config = Sauce::Config.new(:username => "test_user", :access_key => "test_access",
|
18
|
+
:os => "Linux", :browser => "firefox", :browser_version => "3.")
|
19
|
+
assert_equal "{\"name\":\"Unnamed Ruby job\",\"access-key\":\"test_access\",\"os\":\"Linux\",\"username\":\"test_user\",\"browser-version\":\"3.\",\"browser\":\"firefox\"}", config.to_browser_string
|
20
|
+
end
|
21
|
+
|
22
|
+
should "Respond to convenience accessors" do
|
23
|
+
config = Sauce::Config.new
|
24
|
+
assert_equal "saucelabs.com", config.host
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/test/test_jobs.rb
CHANGED
@@ -6,7 +6,7 @@ class TestSauce < Test::Unit::TestCase
|
|
6
6
|
context "A V1 jobs instance" do
|
7
7
|
setup do
|
8
8
|
# Create this file and put in your details to run the tests
|
9
|
-
account = YAML.load_file "
|
9
|
+
account = YAML.load_file "account.yml"
|
10
10
|
@username = account["username"]
|
11
11
|
@access_key = account["access_key"]
|
12
12
|
@ip = account["ip"]
|
@@ -58,7 +58,7 @@ class TestSauce < Test::Unit::TestCase
|
|
58
58
|
assert_equal "complete", job.status
|
59
59
|
assert_equal "job-example-fixture", job.name
|
60
60
|
|
61
|
-
assert_equal "
|
61
|
+
assert_equal "firefox", job.browser
|
62
62
|
assert_equal "3.5.", job.browser_version
|
63
63
|
assert_equal "Windows 2003", job.os
|
64
64
|
|
@@ -70,7 +70,7 @@ class TestSauce < Test::Unit::TestCase
|
|
70
70
|
assert_equal "http://saucelabs.com/jobs/gem-test-job/selenium-server.log", job.log_url
|
71
71
|
|
72
72
|
assert_equal false, job.public
|
73
|
-
assert_equal ['test', 'equal', '
|
73
|
+
assert_equal ['test', 'equal', 'multilingualism_is_fun'], job.tags
|
74
74
|
end
|
75
75
|
|
76
76
|
should "update writable properties" do
|
@@ -78,12 +78,12 @@ class TestSauce < Test::Unit::TestCase
|
|
78
78
|
|
79
79
|
# Make sure it's in the expected condition before changing
|
80
80
|
assert_equal false, job.public
|
81
|
-
assert_equal ["test", "
|
81
|
+
assert_equal ["test", "example", "multilingualism_is_fun"], job.tags
|
82
82
|
assert_equal "job-example-fixture", job.name
|
83
83
|
|
84
84
|
job.public = true
|
85
85
|
job.tags = ["changed", "updated", "ruby_is_also_fun"]
|
86
|
-
job.name = "changed-job-name"
|
86
|
+
job.name = "changed-job-name", job.name
|
87
87
|
job.save
|
88
88
|
|
89
89
|
# Fresh copy of the same job
|
@@ -95,8 +95,8 @@ class TestSauce < Test::Unit::TestCase
|
|
95
95
|
|
96
96
|
# Return the job to its original state and check it out
|
97
97
|
job.public = false
|
98
|
-
job.tags = ["test", "example", "
|
99
|
-
job.name = "job-example-fixture"
|
98
|
+
job.tags = ["test", "example", "multilingualism_is_fun"]
|
99
|
+
job.name = "job-example-fixture", job.name
|
100
100
|
job.save
|
101
101
|
|
102
102
|
# Check to see if the change took
|
@@ -135,7 +135,7 @@ class TestSauce < Test::Unit::TestCase
|
|
135
135
|
assert_equal 2, jobs.count
|
136
136
|
end
|
137
137
|
|
138
|
-
should "show
|
138
|
+
should "show the full job information on index if requested" do
|
139
139
|
flunk "TODO: implement this"
|
140
140
|
end
|
141
141
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSelenium < Test::Unit::TestCase
|
4
|
+
context "The Sauce Selenium driver" do
|
5
|
+
should "Connect successfully using credentials from the environment" do
|
6
|
+
assert ENV['SAUCE_USERNAME'], "You haven't configured a Sauce OnDemand username. Please set $SAUCE_USERNAME"
|
7
|
+
assert ENV['SAUCE_USERNAME'], "You haven't configured a Sauce OnDemand access key. Please set $SAUCE_ACCESS_KEY"
|
8
|
+
selenium = Sauce::Selenium.new()
|
9
|
+
selenium.start
|
10
|
+
selenium.open "/"
|
11
|
+
selenium.stop
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/test/test_tunnels.rb
CHANGED
@@ -5,16 +5,14 @@ class TestSauce < Test::Unit::TestCase
|
|
5
5
|
context "A V1 tunnel instance" do
|
6
6
|
setup do
|
7
7
|
# Create this file and put in your details to run the tests
|
8
|
-
account = YAML.load_file "
|
8
|
+
account = YAML.load_file "account.yml"
|
9
9
|
@username = account["username"]
|
10
10
|
@access_key = account["access_key"]
|
11
11
|
@ip = account["ip"]
|
12
12
|
@client = Sauce::Client.new(:username => @username,
|
13
13
|
:access_key => @access_key,
|
14
|
-
:ip => @ip
|
15
|
-
|
16
|
-
:host => account["host"],
|
17
|
-
:port => account["port"])
|
14
|
+
:ip => @ip
|
15
|
+
)
|
18
16
|
|
19
17
|
#STDOUT.puts @client.api_url
|
20
18
|
@client.tunnels.destroy_all
|
@@ -33,14 +31,6 @@ class TestSauce < Test::Unit::TestCase
|
|
33
31
|
assert_equal @username, tunnel.owner
|
34
32
|
end
|
35
33
|
|
36
|
-
should "error if a tunnel is created without domain names" do
|
37
|
-
flunk "TODO: Implement this"
|
38
|
-
tunnel = @client.tunnels.create('DomainNames' => [])
|
39
|
-
tunnel.refresh!
|
40
|
-
assert_not_nil tunnel
|
41
|
-
assert_equal @username, tunnel.owner
|
42
|
-
end
|
43
|
-
|
44
34
|
should "list current tunnels" do
|
45
35
|
@client.tunnels.create('DomainNames' => ["192.168.0.111"])
|
46
36
|
@client.tunnels.create('DomainNames' => ["192.168.0.112"])
|
@@ -53,7 +43,7 @@ class TestSauce < Test::Unit::TestCase
|
|
53
43
|
should "destroy a tunnel" do
|
54
44
|
tunnel = @client.tunnels.create('DomainNames' => ["192.168.0.114"])
|
55
45
|
tunnel.destroy
|
56
|
-
|
46
|
+
assert_equal "halting", tunnel.status
|
57
47
|
end
|
58
48
|
|
59
49
|
should "destroy all tunnels" do
|
@@ -66,13 +56,12 @@ class TestSauce < Test::Unit::TestCase
|
|
66
56
|
@client.tunnels.all.each do |tunnel|
|
67
57
|
# This could be failing because the tunnels are already dead. Our servers too fast?
|
68
58
|
tunnel.refresh!
|
69
|
-
|
59
|
+
assert_equal "halting", tunnel.status
|
70
60
|
end
|
71
61
|
end
|
72
62
|
|
73
63
|
should "say hello on port 1025 if healthy" do
|
74
|
-
tunnel = @client.tunnels.create('DomainNames' => [
|
75
|
-
|
64
|
+
tunnel = @client.tunnels.create('DomainNames' => [@ip])
|
76
65
|
|
77
66
|
max_retries = 30
|
78
67
|
retries = 0
|
@@ -88,7 +77,7 @@ class TestSauce < Test::Unit::TestCase
|
|
88
77
|
end
|
89
78
|
|
90
79
|
should "have a host if finished booting" do
|
91
|
-
tunnel = @client.tunnels.create('DomainNames' => [
|
80
|
+
tunnel = @client.tunnels.create('DomainNames' => [@ip])
|
92
81
|
|
93
82
|
max_retries = 30
|
94
83
|
retries = 0
|
@@ -106,7 +95,7 @@ class TestSauce < Test::Unit::TestCase
|
|
106
95
|
end
|
107
96
|
|
108
97
|
should "not attempt to telnet if status is not running" do
|
109
|
-
tunnel = @client.tunnels.create('DomainNames' => [
|
98
|
+
tunnel = @client.tunnels.create('DomainNames' => [@ip])
|
110
99
|
|
111
100
|
tunnel.status = "booting"
|
112
101
|
assert_equal false, tunnel.says_hello?
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sauce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 6
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.6.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Sean Grove
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-10-22 00:00:00 -07:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: thoughtbot-shoulda
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
version: "0"
|
@@ -33,14 +36,60 @@ dependencies:
|
|
33
36
|
name: rest-client
|
34
37
|
prerelease: false
|
35
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ">="
|
38
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
39
44
|
segments:
|
40
45
|
- 0
|
41
46
|
version: "0"
|
42
|
-
type: :
|
47
|
+
type: :runtime
|
43
48
|
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: net-ssh
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: net-ssh-gateway
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :runtime
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: selenium-client
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 59
|
86
|
+
segments:
|
87
|
+
- 1
|
88
|
+
- 2
|
89
|
+
- 18
|
90
|
+
version: 1.2.18
|
91
|
+
type: :runtime
|
92
|
+
version_requirements: *id005
|
44
93
|
description: A ruby interface to Sauce Labs' services. Start/stop tunnels, retrieve Selenium logs, access video replays, etc.
|
45
94
|
email: sean@saucelabs.com
|
46
95
|
executables: []
|
@@ -57,13 +106,20 @@ files:
|
|
57
106
|
- README.markdown
|
58
107
|
- Rakefile
|
59
108
|
- VERSION
|
60
|
-
- lib/gateway_ext.rb
|
61
|
-
- lib/job.rb
|
62
|
-
- lib/rest.rb
|
63
109
|
- lib/sauce.rb
|
64
|
-
- lib/
|
110
|
+
- lib/sauce/client.rb
|
111
|
+
- lib/sauce/config.rb
|
112
|
+
- lib/sauce/gateway_ext.rb
|
113
|
+
- lib/sauce/heroku.rb
|
114
|
+
- lib/sauce/integrations.rb
|
115
|
+
- lib/sauce/job.rb
|
116
|
+
- lib/sauce/selenium.rb
|
117
|
+
- lib/sauce/tunnel.rb
|
65
118
|
- test/helper.rb
|
119
|
+
- test/saucelabs_spec.rb
|
120
|
+
- test/test_config.rb
|
66
121
|
- test/test_jobs.rb
|
122
|
+
- test/test_selenium.rb
|
67
123
|
- test/test_tunnels.rb
|
68
124
|
has_rdoc: true
|
69
125
|
homepage: http://github.com/sgrove/sauce
|
@@ -75,29 +131,34 @@ rdoc_options:
|
|
75
131
|
require_paths:
|
76
132
|
- lib
|
77
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
78
135
|
requirements:
|
79
136
|
- - ">="
|
80
137
|
- !ruby/object:Gem::Version
|
138
|
+
hash: 3
|
81
139
|
segments:
|
82
140
|
- 0
|
83
141
|
version: "0"
|
84
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
85
144
|
requirements:
|
86
145
|
- - ">="
|
87
146
|
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
88
148
|
segments:
|
89
149
|
- 0
|
90
150
|
version: "0"
|
91
151
|
requirements: []
|
92
152
|
|
93
153
|
rubyforge_project:
|
94
|
-
rubygems_version: 1.3.
|
154
|
+
rubygems_version: 1.3.7
|
95
155
|
signing_key:
|
96
156
|
specification_version: 3
|
97
157
|
summary: Ruby access to Sauce Labs' features
|
98
158
|
test_files:
|
99
|
-
- test/debug.rb
|
100
159
|
- test/helper.rb
|
101
|
-
- test/
|
160
|
+
- test/saucelabs_spec.rb
|
161
|
+
- test/test_config.rb
|
102
162
|
- test/test_jobs.rb
|
163
|
+
- test/test_selenium.rb
|
103
164
|
- test/test_tunnels.rb
|
data/test/debug.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
c = Sauce::Client.new(:username => "sgrove",
|
4
|
-
:access_key => "4c592ce3-8f45-4cd6-8e3e-65b9f0b173d0")
|
5
|
-
|
6
|
-
c.destroy_all_tunnels
|
7
|
-
t = c.create_tunnel('DomainNames' => ["111.111.111.111"])
|
8
|
-
|
9
|
-
puts c.tunnels.inspect
|
10
|
-
|
11
|
-
c.destroy_all_tunnels
|
data/test/monitor_jobs.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'yaml'
|
3
|
-
$: << "../lib/"
|
4
|
-
require 'sauce'
|
5
|
-
|
6
|
-
account = YAML.load_file("account.yml")
|
7
|
-
|
8
|
-
client = Sauce::Client.new(:username => account["username"],
|
9
|
-
:access_key => account["access_key"])
|
10
|
-
|
11
|
-
jobs = client.jobs.all
|
12
|
-
|
13
|
-
puts jobs.inspect
|