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
- Glue for running your Jasmine tests in Sauce OnDemand
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/test_*.rb'
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
@@ -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
- spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
8
+ $jasmine_config = Sauce::Jasmine::Config.new
9
+ $jasmine_config.sauce_connect = false
10
10
 
11
- should_stop = false
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
- spec_builder.stop if should_stop
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
- spec_builder.start
18
- should_stop = true
19
- spec_builder.declare_suites
62
+ at_exit do
63
+ puts "\nShutting down Sauce Connect..."
64
+ end
@@ -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, @jasmine_server_port)
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
- @tunnel_domain = "#{rand(10000)}.jasmine.test"
10
+ @sauce_connect = sauce_connect
11
+ base_url ||= "#{rand(10000)}.jasmine.test"
11
12
  @driver = Sauce::Selenium.new(:browser => browser,
12
- :browser_url => "http://#{@tunnel_domain}",
13
+ :os => os,
14
+ :browser_version => version,
15
+ :browser_url => base_url,
13
16
  :job_name => "Jasmine",
14
- :'record-video' => false,
15
- :'record-screenshots' => false)
17
+ :'record-video' => true,
18
+ :'record-screenshots' => true)
16
19
  end
17
20
 
18
21
  def connect
19
- puts "Setting up Sauce Connect..."
20
- @connection = Sauce::Connect.new(:domain => @tunnel_domain,
21
- :host => @host,
22
- :port => @port,
23
- :quiet => true)
24
- @connection.wait_until_ready
25
- puts "Sauce Connect ready."
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: 27
5
- prerelease:
4
+ hash: -3702664322
5
+ prerelease: 6
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
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-02-17 00:00:00 -08:00
20
+ date: 2011-03-23 00:00:00 -07:00
19
21
  default_executable:
20
22
  dependencies:
21
23
  - !ruby/object:Gem::Dependency