jasmine-sauce 0.1.0 → 0.2.0.alpha1

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.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