From 84692f545cc63544bc55330dab51b35ae8744d5c Mon Sep 17 00:00:00 2001 From: Gregg Van Hove and Rajan Agaskar Date: Wed, 25 Sep 2013 10:45:04 -0700 Subject: [PATCH] Use jasmine_selenium_runner to run specs via Sauce --- .gitignore | 1 + .travis.yml | 28 ++++----- Rakefile | 9 +-- spec/jasmine_self_test_spec.rb | 63 ------------------- .../support/jasmine_selenium_runner.yml | 16 +++++ travis-core-script.sh | 2 +- 6 files changed, 35 insertions(+), 84 deletions(-) delete mode 100644 spec/jasmine_self_test_spec.rb create mode 100644 spec/javascripts/support/jasmine_selenium_runner.yml diff --git a/.gitignore b/.gitignore index 33dd8123..119b97d1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ pkg/* .sass-cache/* src/html/.sass-cache/* node_modules/ +sauce_connect.log *.swp diff --git a/.travis.yml b/.travis.yml index ba630fea..15ff23f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,32 +16,32 @@ matrix: - TEST_COMMAND="bash travis-node-script.sh" - env: - JASMINE_BROWSER="firefox" - - SAUCE_PLATFORM="Linux" - - SAUCE_VERSION='' + - SAUCE_OS="Linux" + - SAUCE_BROWSER_VERSION='' - env: - JASMINE_BROWSER="safari" - - SAUCE_PLATFORM="OS X 10.8" - - SAUCE_VERSION=6 + - SAUCE_OS="OS X 10.8" + - SAUCE_BROWSER_VERSION=6 - env: - JASMINE_BROWSER="safari" - - SAUCE_PLATFORM="OS X 10.6" - - SAUCE_VERSION=5 + - SAUCE_OS="OS X 10.6" + - SAUCE_BROWSER_VERSION=5 - env: - JASMINE_BROWSER="internet explorer" - - SAUCE_PLATFORM="Windows 8" - - SAUCE_VERSION=10 + - SAUCE_OS="Windows 8" + - SAUCE_BROWSER_VERSION=10 - env: - JASMINE_BROWSER="internet explorer" - - SAUCE_PLATFORM="Windows 7" - - SAUCE_VERSION=9 + - SAUCE_OS="Windows 7" + - SAUCE_BROWSER_VERSION=9 - env: - JASMINE_BROWSER="internet explorer" - - SAUCE_PLATFORM="Windows 7" - - SAUCE_VERSION=8 + - SAUCE_OS="Windows 7" + - SAUCE_BROWSER_VERSION=8 - env: - JASMINE_BROWSER="chrome" - - SAUCE_PLATFORM="Linux" - - SAUCE_VERSION='' + - SAUCE_OS="Linux" + - SAUCE_BROWSER_VERSION='' - env: - JASMINE_BROWSER="phantomjs" - USE_SAUCE=false diff --git a/Rakefile b/Rakefile index 2f052611..9abac452 100644 --- a/Rakefile +++ b/Rakefile @@ -2,12 +2,9 @@ require "bundler" Bundler::GemHelper.install_tasks require "json" require "jasmine" +unless ENV["JASMINE_BROWSER"] == 'phantomjs' + require "jasmine_selenium_runner" +end load "jasmine/tasks/jasmine.rake" -# TODO: Is there better way to invoke this using Jasmine gem??? -desc "Run jasmine core specs in a browser." -task :core_spec do - exec "ruby spec/jasmine_self_test_spec.rb" -end -task :default => :core_spec diff --git a/spec/jasmine_self_test_spec.rb b/spec/jasmine_self_test_spec.rb deleted file mode 100644 index f43d0699..00000000 --- a/spec/jasmine_self_test_spec.rb +++ /dev/null @@ -1,63 +0,0 @@ -require 'rubygems' -require 'bundler/setup' -require 'jasmine' - -Jasmine.load_configuration_from_yaml(File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine.yml')) -config = Jasmine.config - -browser = ENV['JASMINE_BROWSER'] || 'firefox' - -if ENV['USE_SAUCE'] == 'true' - require 'selenium-webdriver' - - unless ENV['TRAVIS_BUILD_NUMBER'] - require 'sauce/connect' - - # we want Sauce Connect locally, not on Travis - Sauce::Connect.connect! - end - - username = ENV['SAUCE_USERNAME'] - key = ENV['SAUCE_ACCESS_KEY'] - platform = ENV['SAUCE_PLATFORM'] - version = ENV['SAUCE_VERSION'] - url = "http://#{username}:#{key}@localhost:4445/wd/hub" - - config.port = 5555 - - capabilities = { - :platform => platform, - :version => version, - :build => ENV['TRAVIS_BUILD_NUMBER'], - :tags => [ENV['TRAVIS_RUBY_VERSION'], 'CI'], - :browserName => browser - } - - capabilities.merge!('tunnel-identifier' => ENV['TRAVIS_JOB_NUMBER']) if ENV['TRAVIS_JOB_NUMBER'] - - webdriver = Selenium::WebDriver.for :remote, :url => url, :desired_capabilities => capabilities -end - -config.webdriver = webdriver if webdriver -config.browser = browser if browser -config.runner = lambda { |formatter, jasmine_server_url| Jasmine::Runners::HTTP.new(formatter, jasmine_server_url, config) } -server = Jasmine::Server.new(config.port, Jasmine::Application.app(config)) - -t = Thread.new do - begin - server.start - rescue ChildProcess::TimeoutError - end - # # ignore bad exits -end -t.abort_on_exception = true -Jasmine::wait_for_listener(config.port, "jasmine server") -puts "jasmine server started." - -formatters = config.formatters.map { |formatter_class| formatter_class.new(config) } -url = "#{config.host}:#{config.port}/" -runner = config.runner.call(Jasmine::Formatters::Multi.new(formatters), url) -runner.run - -exit runner.succeeded? ? 0 : 1 - diff --git a/spec/javascripts/support/jasmine_selenium_runner.yml b/spec/javascripts/support/jasmine_selenium_runner.yml new file mode 100644 index 00000000..1417966f --- /dev/null +++ b/spec/javascripts/support/jasmine_selenium_runner.yml @@ -0,0 +1,16 @@ +--- +use_sauce: <%= ENV['USE_SAUCE'] %> +browser: <%= ENV['JASMINE_BROWSER'] %> +sauce: + name: jasmine-core <%= Time.now.to_s %> + username: <%= ENV['SAUCE_USERNAME'] %> + access_key: <%= ENV['SAUCE_ACCESS_KEY'] %> + build: <%= ENV['TRAVIS_BUILD_NUMBER'] || 'Ran locally' %> + tags: + - <%= ENV['TRAVIS_RUBY_VERSION'] || RUBY_VERSION %> + - CI + tunnel_identifier: <%= ENV['TRAVIS_JOB_NUMBER'] %> + os: <%= ENV['SAUCE_OS'] %> + browser_version: <%= ENV['SAUCE_BROWSER_VERSION'] %> + + diff --git a/travis-core-script.sh b/travis-core-script.sh index 5e133598..f01656a7 100644 --- a/travis-core-script.sh +++ b/travis-core-script.sh @@ -9,4 +9,4 @@ then curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash fi -bundle exec rake core_spec +bundle exec rake jasmine:ci