jasmine-sauce 0.1.0 → 0.2.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
data/README.md
CHANGED
@@ -1 +1,16 @@
|
|
1
|
-
|
1
|
+
Jasmine Sauce
|
2
|
+
=============
|
3
|
+
|
4
|
+
The jasmine-sauce gem provides the glue necessary to run your Jasmine tests
|
5
|
+
across browsers in the Sauce OnDemand cloud.
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
Getting Started
|
10
|
+
---------------
|
11
|
+
|
12
|
+
1. Add jasmine-sauce to your Gemfile
|
13
|
+
2. bundle install
|
14
|
+
3. bundle exec sauce config <YOUR_SAUCE_USENRAME> <YOUR_SAUCE_API_KEY>
|
15
|
+
4. rails generate sauce:jasmine
|
16
|
+
5. rake jasmine:ci:sauce
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
-
require 'rake/testtask'
|
4
3
|
|
4
|
+
require 'rake/testtask'
|
5
5
|
Rake::TestTask.new(:test) do |test|
|
6
|
-
test.libs << 'lib'
|
7
|
-
test.pattern = 'test
|
6
|
+
test.libs << 'lib' << 'test'
|
7
|
+
test.pattern = 'test/**/test_*.rb'
|
8
8
|
test.verbose = true
|
9
9
|
end
|
10
10
|
|
@@ -15,5 +15,3 @@ end
|
|
15
15
|
task :push => :build do
|
16
16
|
system "gem push `ls *.gem | sort | tail -n 1`"
|
17
17
|
end
|
18
|
-
|
19
|
-
task :default => :test
|
data/lib/generators/sauce/jasmine/templates/spec/javascripts/support/jasmine_sauce_runner.rb
CHANGED
@@ -5,15 +5,60 @@ require 'sauce/jasmine'
|
|
5
5
|
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
|
6
6
|
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
|
7
7
|
|
8
|
-
jasmine_config = Sauce::Jasmine::Config.new
|
9
|
-
|
8
|
+
$jasmine_config = Sauce::Jasmine::Config.new
|
9
|
+
$jasmine_config.sauce_connect = false
|
10
10
|
|
11
|
-
|
11
|
+
$tunnel_domain = "#{rand(10000)}.jasmine.test"
|
12
|
+
|
13
|
+
def start_server(port = 8888)
|
14
|
+
handler = Rack::Handler.default
|
15
|
+
handler.run Jasmine.app($jasmine_config), :Port => port, :AccessLog => []
|
16
|
+
end
|
17
|
+
|
18
|
+
def start_jasmine_server
|
19
|
+
jasmine_server_port = Jasmine::find_unused_port
|
20
|
+
Thread.new do
|
21
|
+
start_server(jasmine_server_port)
|
22
|
+
end
|
23
|
+
Jasmine::wait_for_listener(jasmine_server_port, "jasmine server")
|
24
|
+
puts "jasmine server started."
|
25
|
+
return jasmine_server_port
|
26
|
+
end
|
27
|
+
|
28
|
+
port = start_jasmine_server
|
29
|
+
|
30
|
+
|
31
|
+
puts "Setting up Sauce Connect..."
|
32
|
+
@connection = Sauce::Connect.new(:domain => $tunnel_domain,
|
33
|
+
:host => "127.0.0.1",
|
34
|
+
:port => port,
|
35
|
+
:quiet => true)
|
36
|
+
@connection.wait_until_ready
|
37
|
+
puts "Sauce Connect ready!"
|
38
|
+
|
39
|
+
builders = []
|
12
40
|
|
13
41
|
RSpec.configuration.after(:suite) do
|
14
|
-
|
42
|
+
builders.each do |builder|
|
43
|
+
builder.stop
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
Sauce::Config.new.browsers.each do |os, browser, browser_version|
|
48
|
+
config = Sauce::Jasmine::Config.new
|
49
|
+
config.sauce_connect = false
|
50
|
+
config.os = os
|
51
|
+
config.browser = browser
|
52
|
+
config.browser_version = browser_version
|
53
|
+
|
54
|
+
config.base_url = "http://#{$tunnel_domain}"
|
55
|
+
spec_builder = Jasmine::SpecBuilder.new(config)
|
56
|
+
builders << spec_builder
|
57
|
+
|
58
|
+
spec_builder.start
|
59
|
+
spec_builder.declare_suites
|
15
60
|
end
|
16
61
|
|
17
|
-
|
18
|
-
|
19
|
-
|
62
|
+
at_exit do
|
63
|
+
puts "\nShutting down Sauce Connect..."
|
64
|
+
end
|
data/lib/sauce/jasmine/config.rb
CHANGED
@@ -4,9 +4,17 @@ require 'sauce/jasmine/selenium_driver'
|
|
4
4
|
module Sauce
|
5
5
|
module Jasmine
|
6
6
|
class Config < ::Jasmine::Config
|
7
|
+
attr_accessor :sauce_connect, :os, :browser, :browser_version
|
8
|
+
attr_writer :base_url
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
sauce_connect = true
|
12
|
+
end
|
13
|
+
|
7
14
|
def start
|
8
|
-
start_jasmine_server
|
9
|
-
@client = Sauce::Jasmine::SeleniumDriver.new(browser, jasmine_host,
|
15
|
+
start_jasmine_server if sauce_connect
|
16
|
+
@client = Sauce::Jasmine::SeleniumDriver.new(browser, os, browser_version, jasmine_host,
|
17
|
+
@jasmine_server_port, sauce_connect, @base_url)
|
10
18
|
@client.connect
|
11
19
|
end
|
12
20
|
end
|
@@ -3,26 +3,31 @@ require 'jasmine/selenium_driver'
|
|
3
3
|
module Sauce
|
4
4
|
module Jasmine
|
5
5
|
class SeleniumDriver < ::Jasmine::SeleniumDriver
|
6
|
-
def initialize(browser, host, port)
|
6
|
+
def initialize(browser, os, version, host, port, sauce_connect, base_url = nil)
|
7
7
|
host = host[7..-1] if host =~ /^http:\/\//
|
8
8
|
@host = host
|
9
9
|
@port = port
|
10
|
-
@
|
10
|
+
@sauce_connect = sauce_connect
|
11
|
+
base_url ||= "#{rand(10000)}.jasmine.test"
|
11
12
|
@driver = Sauce::Selenium.new(:browser => browser,
|
12
|
-
:
|
13
|
+
:os => os,
|
14
|
+
:browser_version => version,
|
15
|
+
:browser_url => base_url,
|
13
16
|
:job_name => "Jasmine",
|
14
|
-
:'record-video' =>
|
15
|
-
:'record-screenshots' =>
|
17
|
+
:'record-video' => true,
|
18
|
+
:'record-screenshots' => true)
|
16
19
|
end
|
17
20
|
|
18
21
|
def connect
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
if @sauce_connect
|
23
|
+
puts "Setting up Sauce Connect..."
|
24
|
+
@connection = Sauce::Connect.new(:domain => @tunnel_domain,
|
25
|
+
:host => @host,
|
26
|
+
:port => @port,
|
27
|
+
:quiet => true)
|
28
|
+
@connection.wait_until_ready
|
29
|
+
puts "Sauce Connect ready."
|
30
|
+
end
|
26
31
|
super
|
27
32
|
end
|
28
33
|
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine-sauce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -3702664322
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
|
10
|
+
- alpha
|
11
|
+
- 1
|
12
|
+
version: 0.2.0.alpha1
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Eric Allen
|
@@ -15,7 +17,7 @@ autorequire:
|
|
15
17
|
bindir: bin
|
16
18
|
cert_chain: []
|
17
19
|
|
18
|
-
date: 2011-
|
20
|
+
date: 2011-03-23 00:00:00 -07:00
|
19
21
|
default_executable:
|
20
22
|
dependencies:
|
21
23
|
- !ruby/object:Gem::Dependency
|