From 696c706dd134cc6461cf20e1e94eb0e79452c9a9 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 27 Mar 2013 20:08:28 +0100 Subject: [PATCH] Run specs on sauce labs --- .travis.yml | 4 ++++ public/spec.html | 4 ++-- run_jasmine.coffee | 2 +- script/ci | 6 ++++++ script/saucelabs.rb | 27 +++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 script/saucelabs.rb diff --git a/.travis.yml b/.travis.yml index c99ba3cc..77580b07 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,9 +11,13 @@ env: - "ARTIFACTS_S3_BUCKET=travis-web-production" - secure: "RFuCOppyjWHC4XWKtQlgS4zO4B6KVxytdX8+G5jRY3XM+OEGte8VDD88gZLM\nKDpkqMFDbNJAVTsh1kMANCTct2ONi30RTxuJWLtRyK7RE5zCcaGbAkTNZgXo\nOR5OWLEPJZbNfbh17H6J7izTy6yiLR+CsVP1wMgeVusP0eoDhCA=" - secure: "duqMXPALumXB3e2j/kM2uCaCGwgZsRrU0GCDY+3Zk6a+PK+s0mE9BftcXdxm\n6u87ld2PvCBO0inpe5YeS9LOZsT+OFS4jj+GGTsRI6rmGz+kok0N+ATLTdcj\nu15zhLhUUlhoKW0DZURrDv/iTiC/FKvJ0u5Rft0XbjfTY+0go/M=" + - secure: "sW8X/OxQQnCfSWfo5uho8os/4eV8Y3QWOx5LdhqcmOxb4KLlQkndRNNqz+DF\nKynSgnSpty2uvol6611J9RDPEVn6cZw7EFQj/EO7NRVQC8uD+8LtT/2C2J8L\nc/bf7sQqpAkDq9MOEub/A6R4jIk043lGQ4IyWAQmGlETMQ2Q/K0=" + - secure: "XCGOrMQHDR59KARYeN2GaAkDQKwq2nW9okEFMaKEH1AuUFFcU4hHAsunNeXe\nwSHu4Dpo/CioI2EKQpxL8nwMUPsx3HaY/2W8ef1YPvhU1GuSyiPDW0va8sV7\nBmZf1b26ktrzqaYDxyJjwe1EKrzfZx0LPV0MNU6wSWdHILthPY8=" matrix: - "TEST_SUITE=spec" - "TEST_SUITE=ember" + - "TEST_SUITE=browser BROWSER='firefox::Windows 2012'" + - "TEST_SUITE=browser BROWSER='chrome::Windows 2008'" script: "script/ci" after_script: diff --git a/public/spec.html b/public/spec.html index 6d1ef344..0b9dbe8d 100644 --- a/public/spec.html +++ b/public/spec.html @@ -60,9 +60,9 @@ // if(key.match(/_spec$/)) // minispade.require(key); - var console_reporter = new jasmine.ConsoleReporter(); + var consoleReporter = new jasmine.ConsoleReporter(); jasmine.getEnv().addReporter(new jasmine.HtmlReporter()); - jasmine.getEnv().addReporter(console_reporter); + jasmine.getEnv().addReporter(consoleReporter); jasmine.getEnv().execute(); diff --git a/run_jasmine.coffee b/run_jasmine.coffee index 3c276aea..05706719 100755 --- a/run_jasmine.coffee +++ b/run_jasmine.coffee @@ -9,7 +9,7 @@ class PhantomJasmineRunner @tries = 0 @max_tries = 10 - get_status: -> @page.evaluate(-> console_reporter.status) + get_status: -> @page.evaluate(-> consoleReporter.status) terminate: -> switch @get_status() diff --git a/script/ci b/script/ci index 866b79cf..45962145 100755 --- a/script/ci +++ b/script/ci @@ -6,4 +6,10 @@ elif [ "$TEST_SUITE" == "ember" ]; then bundle exec rackup -s puma -p 5000 -D sleep 3 ./run_jasmine.coffee http://localhost:5000/spec.html +elif [ "$TEST_SUITE" == "browser" ]; then + curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash + gem install selenium-webdriver + bundle exec rackup -s puma -p 5000 -D + sleep 3 + ruby script/saucelabs.rb fi diff --git a/script/saucelabs.rb b/script/saucelabs.rb new file mode 100644 index 00000000..925a9ddf --- /dev/null +++ b/script/saucelabs.rb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'selenium-webdriver' + +browser = ENV['BROWSER'].split(':') + +caps = Selenium::WebDriver::Remote::Capabilities.send browser[0] +caps.version = browser[1] +caps.platform = browser[2] +caps['tunnel-identifier'] = ENV['TRAVIS_JOB_NUMBER'] +caps['name'] = "Travis ##{ENV['TRAVIS_JOB_NUMBER']}" + +driver = Selenium::WebDriver.for( + :remote, + :url => "http://#{ENV['SAUCE_USERNAME']}:#{ENV['SAUCE_ACCESS_KEY']}@localhost:4445/wd/hub", + :desired_capabilities => caps) + +driver.navigate.to "http://localhost:4000/spec.html" +begin + status = driver.execute_script('return consoleReporter.status;') + sleep 1 +end while status == 'running' + +driver.quit + +raise 'tests failed' unless status == 'success'