testingbot 0.1.4 → 0.1.5
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/Gemfile +0 -2
- data/README.rdoc +1 -1
- data/bin/testingbot +0 -0
- data/examples/android.rb +3 -5
- data/examples/capybara.rb +4 -6
- data/examples/test_rspec.rb +2 -2
- data/lib/testingbot/api.rb +3 -3
- data/lib/testingbot/config.rb +8 -1
- data/lib/testingbot/jasmine.rb +29 -0
- data/lib/testingbot/jasmine/README.rdoc +16 -0
- data/lib/testingbot/jasmine/Rakefile +35 -0
- data/lib/testingbot/jasmine/public/javascripts/Player.js +22 -0
- data/lib/testingbot/jasmine/public/javascripts/Song.js +7 -0
- data/lib/testingbot/jasmine/runner.rb +4 -0
- data/lib/testingbot/jasmine/spec/javascripts/PlayerSpec.js +58 -0
- data/lib/testingbot/jasmine/spec/javascripts/helpers/SpecHelper.js +9 -0
- data/lib/testingbot/jasmine/spec/javascripts/support/jasmine.yml +73 -0
- data/lib/testingbot/jasmine/test/Rakefile +9 -0
- data/lib/testingbot/jasmine/test/public/javascripts/Player.js +22 -0
- data/lib/testingbot/jasmine/test/public/javascripts/Song.js +7 -0
- data/lib/testingbot/jasmine/test/spec/javascripts/PlayerSpec.js +58 -0
- data/lib/testingbot/jasmine/test/spec/javascripts/helpers/SpecHelper.js +9 -0
- data/lib/testingbot/jasmine/test/spec/javascripts/support/jasmine.yml +73 -0
- data/lib/testingbot/selenium.rb +2 -1
- data/lib/testingbot/tunnel.rb +1 -1
- data/lib/testingbot/version.rb +2 -2
- data/vendor/Testingbot-Tunnel.jar +0 -0
- metadata +27 -12
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    
    
        data/bin/testingbot
    CHANGED
    
    | 
            File without changes
         | 
    
        data/examples/android.rb
    CHANGED
    
    | @@ -4,13 +4,11 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/testingbot/config.rb' | |
| 4 4 | 
             
            require File.expand_path(File.dirname(__FILE__) + '/../lib/testingbot/selenium.rb')
         | 
| 5 5 |  | 
| 6 6 | 
             
            TestingBot::config do |config|
         | 
| 7 | 
            -
            	config[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities. | 
| 8 | 
            -
            #config[:desired_capabilities] = { "platform" => "ANDROID", "browserName" => "galaxytab" }
         | 
| 7 | 
            +
            	config[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.android
         | 
| 9 8 | 
             
            end
         | 
| 10 9 |  | 
| 11 10 | 
             
            driver = TestingBot::SeleniumWebdriver.new
         | 
| 12 11 |  | 
| 13 | 
            -
            driver.navigate.to "http:// | 
| 12 | 
            +
            driver.navigate.to "http://testingbot.com/"
         | 
| 14 13 | 
             
            puts driver.title
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            driver.quit
         | 
| 14 | 
            +
            driver.quit
         | 
    
        data/examples/capybara.rb
    CHANGED
    
    | @@ -4,11 +4,12 @@ require 'testingbot' | |
| 4 4 | 
             
            require 'testingbot/capybara'
         | 
| 5 5 |  | 
| 6 6 | 
             
            TestingBot::config do |config|
         | 
| 7 | 
            -
            	config[:desired_capabilities] =  | 
| 7 | 
            +
            	config[:desired_capabilities] = { :browserName => "firefox", :version => 9, :platform => "WINDOWS" }
         | 
| 8 | 
            +
            	config[:options] = { :screenshot => false, :extra => "Some extra data" }
         | 
| 8 9 | 
             
            	#config.require_tunnel
         | 
| 9 10 | 
             
            end
         | 
| 10 11 |  | 
| 11 | 
            -
            describe "People", :type => :request | 
| 12 | 
            +
            describe "People", :type => :request do
         | 
| 12 13 | 
             
            	before :all do
         | 
| 13 14 | 
             
            		Capybara.current_driver = :testingbot
         | 
| 14 15 | 
             
            	    Capybara.app_host = "http://testingbot.com"
         | 
| @@ -16,9 +17,6 @@ describe "People", :type => :request, :multibrowser => true do | |
| 16 17 |  | 
| 17 18 | 
             
            	it 'has a homepage with the word Selenium' do
         | 
| 18 19 | 
             
            		visit '/'
         | 
| 19 | 
            -
            #sleep 150
         | 
| 20 | 
            -
            p "inspect"
         | 
| 21 | 
            -
            p page.inspect
         | 
| 22 20 | 
             
            		page.should have_content('Selenium')
         | 
| 23 21 | 
             
            	end
         | 
| 24 | 
            -
            end
         | 
| 22 | 
            +
            end
         | 
    
        data/examples/test_rspec.rb
    CHANGED
    
    | @@ -5,7 +5,7 @@ require 'testingbot' | |
| 5 5 | 
             
            require 'testingbot/tunnel'
         | 
| 6 6 |  | 
| 7 7 | 
             
            TestingBot::config do |config|
         | 
| 8 | 
            -
              config[:desired_capabilities] = [{ :browserName => " | 
| 8 | 
            +
              config[:desired_capabilities] = [{ :browserName => "firefox", :version => 9, :platform => "WINDOWS" }, { :browserName => "firefox", :version => 11, :platform => "WINDOWS" }]
         | 
| 9 9 | 
             
            end
         | 
| 10 10 |  | 
| 11 11 | 
             
            # rspec 2
         | 
| @@ -14,4 +14,4 @@ describe "People", :type => :selenium, :multibrowser => true do | |
| 14 14 | 
             
                  page.navigate.to "http://www.google.com"
         | 
| 15 15 | 
             
                  page.title.should eql("Google")   
         | 
| 16 16 | 
             
                end
         | 
| 17 | 
            -
            end
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/testingbot/api.rb
    CHANGED
    
    | @@ -4,7 +4,7 @@ module TestingBot | |
| 4 4 | 
             
              class Api
         | 
| 5 5 |  | 
| 6 6 | 
             
                VERSION = 1
         | 
| 7 | 
            -
                API_URL = " | 
| 7 | 
            +
                API_URL = "https://api.testingbot.com"
         | 
| 8 8 |  | 
| 9 9 | 
             
                attr_reader :config
         | 
| 10 10 |  | 
| @@ -26,7 +26,7 @@ module TestingBot | |
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 28 | 
             
                def get_tests(offset = 0, count = 10)
         | 
| 29 | 
            -
                  get("/tests")
         | 
| 29 | 
            +
                  get("/tests?offset=#{offset}&count=#{count}")
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                def get_single_test(test_id)
         | 
| @@ -109,4 +109,4 @@ module TestingBot | |
| 109 109 | 
             
                  response = http.post(url.path, params.map { |k, v| "#{k.to_s}=#{v}" }.join("&"))
         | 
| 110 110 | 
             
                end
         | 
| 111 111 | 
             
              end
         | 
| 112 | 
            -
            end
         | 
| 112 | 
            +
            end
         | 
    
        data/lib/testingbot/config.rb
    CHANGED
    
    | @@ -89,7 +89,14 @@ module TestingBot | |
| 89 89 | 
             
                def load_config_file
         | 
| 90 90 | 
             
                  options = {}
         | 
| 91 91 |  | 
| 92 | 
            -
                  is_windows =  | 
| 92 | 
            +
                  is_windows = false
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  begin
         | 
| 95 | 
            +
                    require 'rbconfig'
         | 
| 96 | 
            +
                    is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
         | 
| 97 | 
            +
                  rescue
         | 
| 98 | 
            +
                    is_windows = (RUBY_PLATFORM =~ /w.*32/) || (ENV["OS"] && ENV["OS"] == "Windows_NT")
         | 
| 99 | 
            +
                  end
         | 
| 93 100 |  | 
| 94 101 | 
             
                  if is_windows
         | 
| 95 102 | 
             
                    config_file = "#{ENV['HOMEDRIVE']}\\.testingbot"
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'jasmine'
         | 
| 2 | 
            +
            require 'testingbot/tunnel'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module TestingBot
         | 
| 5 | 
            +
            	module Jasmine
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            		class Driver < ::Jasmine::SeleniumDriver
         | 
| 8 | 
            +
            			attr_reader :http_address, :driver, :browser
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            			def initialize(browser, http_address)
         | 
| 11 | 
            +
            				tunnel = TestingBot::Tunnel.new(TestingBot.get_config[:tunnel_options] || {})
         | 
| 12 | 
            +
            	   			tunnel.start
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            				@browser = browser
         | 
| 15 | 
            +
            				@http_address = http_address
         | 
| 16 | 
            +
            				@driver = TestingBot::SeleniumWebdriver.new({ :browserName => browser, :name => "Jasmine Test" })
         | 
| 17 | 
            +
            			end
         | 
| 18 | 
            +
            		end
         | 
| 19 | 
            +
            	end
         | 
| 20 | 
            +
            end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            module Jasmine
         | 
| 23 | 
            +
            	class Config
         | 
| 24 | 
            +
            		def start
         | 
| 25 | 
            +
            			@client = TestingBot::Jasmine::Driver.new(browser, "#{jasmine_host}:3001/")
         | 
| 26 | 
            +
            			@client.connect
         | 
| 27 | 
            +
            		end
         | 
| 28 | 
            +
            	end
         | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            = TestingBot
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Testingbot.com is a website where you can use our cloud based Selenium grid. Test your web applications in various environments/browsers/devices.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            == How to run a Jasmine test on TestingBot
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            Make sure you have the Jasmine gem installed
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              $ gem install jasmine
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            Now run our example Rake task:
         | 
| 12 | 
            +
              $ rake jasmine:testingbot
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
            == More information
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Get more information on http://testingbot.com
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require 'jasmine'
         | 
| 2 | 
            +
            require 'rspec/core/rake_task'
         | 
| 3 | 
            +
            require 'testingbot'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            namespace :jasmine do
         | 
| 6 | 
            +
              def run_jasmine_server
         | 
| 7 | 
            +
                ENV['JASMINE_PORT'] = '3001'
         | 
| 8 | 
            +
                Jasmine::Config.new.start_jasmine_server
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              desc "Execute Jasmine tests in a Chrome browser on testingbot"
         | 
| 12 | 
            +
              task :testingbot do
         | 
| 13 | 
            +
                run_jasmine_server
         | 
| 14 | 
            +
                Rake::Task['jasmine:testingbot:chrome'].execute
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              namespace :testingbot do
         | 
| 18 | 
            +
                desc "Execute Jasmine tests in Chrome and Firefox on TestingBot"
         | 
| 19 | 
            +
                task :all do
         | 
| 20 | 
            +
                  run_jasmine_server
         | 
| 21 | 
            +
                  threads = []
         | 
| 22 | 
            +
                  [:chrome, :firefox].each do |browser|
         | 
| 23 | 
            +
                    t = Thread.new do
         | 
| 24 | 
            +
                      Rake::Task["jasmine:testingbot:#{browser}"].invoke
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                    t.abort_on_exception = true
         | 
| 27 | 
            +
                    threads << t
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  threads.each do |t|
         | 
| 31 | 
            +
                    t.join
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            function Player() {
         | 
| 2 | 
            +
            }
         | 
| 3 | 
            +
            Player.prototype.play = function(song) {
         | 
| 4 | 
            +
              this.currentlyPlayingSong = song;
         | 
| 5 | 
            +
              this.isPlaying = true;
         | 
| 6 | 
            +
            };
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Player.prototype.pause = function() {
         | 
| 9 | 
            +
              this.isPlaying = false;
         | 
| 10 | 
            +
            };
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            Player.prototype.resume = function() {
         | 
| 13 | 
            +
              if (this.isPlaying) {
         | 
| 14 | 
            +
                throw new Error("song is already playing");
         | 
| 15 | 
            +
              }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              this.isPlaying = true;
         | 
| 18 | 
            +
            };
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            Player.prototype.makeFavorite = function() {
         | 
| 21 | 
            +
              this.currentlyPlayingSong.persistFavoriteStatus(true);
         | 
| 22 | 
            +
            };
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            describe("Player", function() {
         | 
| 2 | 
            +
              var player;
         | 
| 3 | 
            +
              var song;
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              beforeEach(function() {
         | 
| 6 | 
            +
                player = new Player();
         | 
| 7 | 
            +
                song = new Song();
         | 
| 8 | 
            +
              });
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it("should be able to play a Song", function() {
         | 
| 11 | 
            +
                player.play(song);
         | 
| 12 | 
            +
                expect(player.currentlyPlayingSong).toEqual(song);
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                //demonstrates use of custom matcher
         | 
| 15 | 
            +
                expect(player).toBePlaying(song);
         | 
| 16 | 
            +
              });
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              describe("when song has been paused", function() {
         | 
| 19 | 
            +
                beforeEach(function() {
         | 
| 20 | 
            +
                  player.play(song);
         | 
| 21 | 
            +
                  player.pause();
         | 
| 22 | 
            +
                });
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it("should indicate that the song is currently paused", function() {
         | 
| 25 | 
            +
                  expect(player.isPlaying).toBeFalsy();
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  // demonstrates use of 'not' with a custom matcher
         | 
| 28 | 
            +
                  expect(player).not.toBePlaying(song);
         | 
| 29 | 
            +
                });
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                it("should be possible to resume", function() {
         | 
| 32 | 
            +
                  player.resume();
         | 
| 33 | 
            +
                  expect(player.isPlaying).toBeTruthy();
         | 
| 34 | 
            +
                  expect(player.currentlyPlayingSong).toEqual(song);
         | 
| 35 | 
            +
                });
         | 
| 36 | 
            +
              });
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              // demonstrates use of spies to intercept and test method calls
         | 
| 39 | 
            +
              it("tells the current song if the user has made it a favorite", function() {
         | 
| 40 | 
            +
                spyOn(song, 'persistFavoriteStatus');
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                player.play(song);
         | 
| 43 | 
            +
                player.makeFavorite();
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true);
         | 
| 46 | 
            +
              });
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              //demonstrates use of expected exceptions
         | 
| 49 | 
            +
              describe("#resume", function() {
         | 
| 50 | 
            +
                it("should throw an exception if song is already playing", function() {
         | 
| 51 | 
            +
                  player.play(song);
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  expect(function() {
         | 
| 54 | 
            +
                    player.resume();
         | 
| 55 | 
            +
                  }).toThrow("song is already playing");
         | 
| 56 | 
            +
                });
         | 
| 57 | 
            +
              });
         | 
| 58 | 
            +
            });
         | 
| @@ -0,0 +1,73 @@ | |
| 1 | 
            +
            # src_files
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # Return an array of filepaths relative to src_dir to include before jasmine specs.
         | 
| 4 | 
            +
            # Default: []
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            # EXAMPLE:
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # src_files:
         | 
| 9 | 
            +
            #   - lib/source1.js
         | 
| 10 | 
            +
            #   - lib/source2.js
         | 
| 11 | 
            +
            #   - dist/**/*.js
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            src_files:
         | 
| 14 | 
            +
                - public/javascripts/**/*.js
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # stylesheets
         | 
| 17 | 
            +
            #
         | 
| 18 | 
            +
            # Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
         | 
| 19 | 
            +
            # Default: []
         | 
| 20 | 
            +
            #
         | 
| 21 | 
            +
            # EXAMPLE:
         | 
| 22 | 
            +
            #
         | 
| 23 | 
            +
            # stylesheets:
         | 
| 24 | 
            +
            #   - css/style.css
         | 
| 25 | 
            +
            #   - stylesheets/*.css
         | 
| 26 | 
            +
            #
         | 
| 27 | 
            +
            stylesheets:
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            # helpers
         | 
| 30 | 
            +
            #
         | 
| 31 | 
            +
            # Return an array of filepaths relative to spec_dir to include before jasmine specs.
         | 
| 32 | 
            +
            # Default: ["helpers/**/*.js"]
         | 
| 33 | 
            +
            #
         | 
| 34 | 
            +
            # EXAMPLE:
         | 
| 35 | 
            +
            #
         | 
| 36 | 
            +
            # helpers:
         | 
| 37 | 
            +
            #   - helpers/**/*.js
         | 
| 38 | 
            +
            #
         | 
| 39 | 
            +
            helpers:
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            # spec_files
         | 
| 42 | 
            +
            #
         | 
| 43 | 
            +
            #  Return an array of filepaths relative to spec_dir to include.
         | 
| 44 | 
            +
            # Default: ["**/*[sS]pec.js"]
         | 
| 45 | 
            +
            #
         | 
| 46 | 
            +
            # EXAMPLE:
         | 
| 47 | 
            +
            #
         | 
| 48 | 
            +
            # spec_files:
         | 
| 49 | 
            +
            #   - **/*[sS]pec.js
         | 
| 50 | 
            +
            #
         | 
| 51 | 
            +
            spec_files:
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            # src_dir
         | 
| 54 | 
            +
            #
         | 
| 55 | 
            +
            # Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
         | 
| 56 | 
            +
            # Default: project root
         | 
| 57 | 
            +
            #
         | 
| 58 | 
            +
            # EXAMPLE:
         | 
| 59 | 
            +
            #
         | 
| 60 | 
            +
            # src_dir: public
         | 
| 61 | 
            +
            #
         | 
| 62 | 
            +
            src_dir:
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            # spec_dir
         | 
| 65 | 
            +
            #
         | 
| 66 | 
            +
            # Spec directory path. Your spec_files must be returned relative to this path.
         | 
| 67 | 
            +
            # Default: spec/javascripts
         | 
| 68 | 
            +
            #
         | 
| 69 | 
            +
            # EXAMPLE:
         | 
| 70 | 
            +
            #
         | 
| 71 | 
            +
            # spec_dir: spec/javascripts
         | 
| 72 | 
            +
            #
         | 
| 73 | 
            +
            spec_dir:
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            function Player() {
         | 
| 2 | 
            +
            }
         | 
| 3 | 
            +
            Player.prototype.play = function(song) {
         | 
| 4 | 
            +
              this.currentlyPlayingSong = song;
         | 
| 5 | 
            +
              this.isPlaying = true;
         | 
| 6 | 
            +
            };
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Player.prototype.pause = function() {
         | 
| 9 | 
            +
              this.isPlaying = false;
         | 
| 10 | 
            +
            };
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            Player.prototype.resume = function() {
         | 
| 13 | 
            +
              if (this.isPlaying) {
         | 
| 14 | 
            +
                throw new Error("song is already playing");
         | 
| 15 | 
            +
              }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              this.isPlaying = true;
         | 
| 18 | 
            +
            };
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            Player.prototype.makeFavorite = function() {
         | 
| 21 | 
            +
              this.currentlyPlayingSong.persistFavoriteStatus(true);
         | 
| 22 | 
            +
            };
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            describe("Player", function() {
         | 
| 2 | 
            +
              var player;
         | 
| 3 | 
            +
              var song;
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              beforeEach(function() {
         | 
| 6 | 
            +
                player = new Player();
         | 
| 7 | 
            +
                song = new Song();
         | 
| 8 | 
            +
              });
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it("should be able to play a Song", function() {
         | 
| 11 | 
            +
                player.play(song);
         | 
| 12 | 
            +
                expect(player.currentlyPlayingSong).toEqual(song);
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                //demonstrates use of custom matcher
         | 
| 15 | 
            +
                expect(player).toBePlaying(song);
         | 
| 16 | 
            +
              });
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              describe("when song has been paused", function() {
         | 
| 19 | 
            +
                beforeEach(function() {
         | 
| 20 | 
            +
                  player.play(song);
         | 
| 21 | 
            +
                  player.pause();
         | 
| 22 | 
            +
                });
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it("should indicate that the song is currently paused", function() {
         | 
| 25 | 
            +
                  expect(player.isPlaying).toBeFalsy();
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  // demonstrates use of 'not' with a custom matcher
         | 
| 28 | 
            +
                  expect(player).not.toBePlaying(song);
         | 
| 29 | 
            +
                });
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                it("should be possible to resume", function() {
         | 
| 32 | 
            +
                  player.resume();
         | 
| 33 | 
            +
                  expect(player.isPlaying).toBeTruthy();
         | 
| 34 | 
            +
                  expect(player.currentlyPlayingSong).toEqual(song);
         | 
| 35 | 
            +
                });
         | 
| 36 | 
            +
              });
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              // demonstrates use of spies to intercept and test method calls
         | 
| 39 | 
            +
              it("tells the current song if the user has made it a favorite", function() {
         | 
| 40 | 
            +
                spyOn(song, 'persistFavoriteStatus');
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                player.play(song);
         | 
| 43 | 
            +
                player.makeFavorite();
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true);
         | 
| 46 | 
            +
              });
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              //demonstrates use of expected exceptions
         | 
| 49 | 
            +
              describe("#resume", function() {
         | 
| 50 | 
            +
                it("should throw an exception if song is already playing", function() {
         | 
| 51 | 
            +
                  player.play(song);
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  expect(function() {
         | 
| 54 | 
            +
                    player.resume();
         | 
| 55 | 
            +
                  }).toThrow("song is already playing");
         | 
| 56 | 
            +
                });
         | 
| 57 | 
            +
              });
         | 
| 58 | 
            +
            });
         | 
| @@ -0,0 +1,73 @@ | |
| 1 | 
            +
            # src_files
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # Return an array of filepaths relative to src_dir to include before jasmine specs.
         | 
| 4 | 
            +
            # Default: []
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            # EXAMPLE:
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # src_files:
         | 
| 9 | 
            +
            #   - lib/source1.js
         | 
| 10 | 
            +
            #   - lib/source2.js
         | 
| 11 | 
            +
            #   - dist/**/*.js
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            src_files:
         | 
| 14 | 
            +
                - public/javascripts/**/*.js
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # stylesheets
         | 
| 17 | 
            +
            #
         | 
| 18 | 
            +
            # Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
         | 
| 19 | 
            +
            # Default: []
         | 
| 20 | 
            +
            #
         | 
| 21 | 
            +
            # EXAMPLE:
         | 
| 22 | 
            +
            #
         | 
| 23 | 
            +
            # stylesheets:
         | 
| 24 | 
            +
            #   - css/style.css
         | 
| 25 | 
            +
            #   - stylesheets/*.css
         | 
| 26 | 
            +
            #
         | 
| 27 | 
            +
            stylesheets:
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            # helpers
         | 
| 30 | 
            +
            #
         | 
| 31 | 
            +
            # Return an array of filepaths relative to spec_dir to include before jasmine specs.
         | 
| 32 | 
            +
            # Default: ["helpers/**/*.js"]
         | 
| 33 | 
            +
            #
         | 
| 34 | 
            +
            # EXAMPLE:
         | 
| 35 | 
            +
            #
         | 
| 36 | 
            +
            # helpers:
         | 
| 37 | 
            +
            #   - helpers/**/*.js
         | 
| 38 | 
            +
            #
         | 
| 39 | 
            +
            helpers:
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            # spec_files
         | 
| 42 | 
            +
            #
         | 
| 43 | 
            +
            #  Return an array of filepaths relative to spec_dir to include.
         | 
| 44 | 
            +
            # Default: ["**/*[sS]pec.js"]
         | 
| 45 | 
            +
            #
         | 
| 46 | 
            +
            # EXAMPLE:
         | 
| 47 | 
            +
            #
         | 
| 48 | 
            +
            # spec_files:
         | 
| 49 | 
            +
            #   - **/*[sS]pec.js
         | 
| 50 | 
            +
            #
         | 
| 51 | 
            +
            spec_files:
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            # src_dir
         | 
| 54 | 
            +
            #
         | 
| 55 | 
            +
            # Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
         | 
| 56 | 
            +
            # Default: project root
         | 
| 57 | 
            +
            #
         | 
| 58 | 
            +
            # EXAMPLE:
         | 
| 59 | 
            +
            #
         | 
| 60 | 
            +
            # src_dir: public
         | 
| 61 | 
            +
            #
         | 
| 62 | 
            +
            src_dir:
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            # spec_dir
         | 
| 65 | 
            +
            #
         | 
| 66 | 
            +
            # Spec directory path. Your spec_files must be returned relative to this path.
         | 
| 67 | 
            +
            # Default: spec/javascripts
         | 
| 68 | 
            +
            #
         | 
| 69 | 
            +
            # EXAMPLE:
         | 
| 70 | 
            +
            #
         | 
| 71 | 
            +
            # spec_dir: spec/javascripts
         | 
| 72 | 
            +
            #
         | 
| 73 | 
            +
            spec_dir:
         | 
    
        data/lib/testingbot/selenium.rb
    CHANGED
    
    | @@ -47,8 +47,9 @@ if defined?(Selenium) && defined?(Selenium::Client) && defined?(Selenium::Client | |
| 47 47 | 
             
                  module Protocol
         | 
| 48 48 | 
             
                      # add custom parameters for testingbot.com
         | 
| 49 49 | 
             
                      def http_request_for_testingbot(verb, args)
         | 
| 50 | 
            +
                        raise "Please specify your key and secret in a ~/.testingbot or C:\\.testingbot file" if TestingBot.get_config[:client_key].nil?
         | 
| 50 51 | 
             
                        data = http_request_for_original(verb, args)
         | 
| 51 | 
            -
                        data << "&client_key=#{TestingBot.get_config[:client_key]}&client_secret=#{TestingBot.get_config[:client_secret]}" | 
| 52 | 
            +
                        data << "&client_key=#{TestingBot.get_config[:client_key]}&client_secret=#{TestingBot.get_config[:client_secret]}"
         | 
| 52 53 | 
             
                      end
         | 
| 53 54 |  | 
| 54 55 | 
             
                      begin
         | 
    
        data/lib/testingbot/tunnel.rb
    CHANGED
    
    
    
        data/lib/testingbot/version.rb
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            module Testingbot
         | 
| 2 | 
            -
              VERSION = "0.1. | 
| 3 | 
            -
            end
         | 
| 2 | 
            +
              VERSION = "0.1.5"
         | 
| 3 | 
            +
            end
         | 
| Binary file | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: testingbot
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.5
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2013-04-23 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: json
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &70143118085740 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *70143118085740
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: net-http-persistent
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &70143118085320 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *70143118085320
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: selenium-webdriver
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &70143118084900 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ! '>='
         | 
| @@ -43,10 +43,10 @@ dependencies: | |
| 43 43 | 
             
                    version: '0'
         | 
| 44 44 | 
             
              type: :runtime
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *70143118084900
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: rspec
         | 
| 49 | 
            -
              requirement: & | 
| 49 | 
            +
              requirement: &70143118084380 !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ! '>='
         | 
| @@ -54,10 +54,10 @@ dependencies: | |
| 54 54 | 
             
                    version: 2.9.0
         | 
| 55 55 | 
             
              type: :development
         | 
| 56 56 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 57 | 
            +
              version_requirements: *70143118084380
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: rake
         | 
| 60 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &70143118100340 !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                none: false
         | 
| 62 62 | 
             
                requirements:
         | 
| 63 63 | 
             
                - - ! '>='
         | 
| @@ -65,7 +65,7 @@ dependencies: | |
| 65 65 | 
             
                    version: '0'
         | 
| 66 66 | 
             
              type: :development
         | 
| 67 67 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *70143118100340
         | 
| 69 69 | 
             
            description: This gem makes using our Selenium grid on testingbot.com easy
         | 
| 70 70 | 
             
            email:
         | 
| 71 71 | 
             
            - info@testingbot.com
         | 
| @@ -98,6 +98,21 @@ files: | |
| 98 98 | 
             
            - lib/testingbot/config.rb
         | 
| 99 99 | 
             
            - lib/testingbot/cucumber.rb
         | 
| 100 100 | 
             
            - lib/testingbot/hooks.rb
         | 
| 101 | 
            +
            - lib/testingbot/jasmine.rb
         | 
| 102 | 
            +
            - lib/testingbot/jasmine/README.rdoc
         | 
| 103 | 
            +
            - lib/testingbot/jasmine/Rakefile
         | 
| 104 | 
            +
            - lib/testingbot/jasmine/public/javascripts/Player.js
         | 
| 105 | 
            +
            - lib/testingbot/jasmine/public/javascripts/Song.js
         | 
| 106 | 
            +
            - lib/testingbot/jasmine/runner.rb
         | 
| 107 | 
            +
            - lib/testingbot/jasmine/spec/javascripts/PlayerSpec.js
         | 
| 108 | 
            +
            - lib/testingbot/jasmine/spec/javascripts/helpers/SpecHelper.js
         | 
| 109 | 
            +
            - lib/testingbot/jasmine/spec/javascripts/support/jasmine.yml
         | 
| 110 | 
            +
            - lib/testingbot/jasmine/test/Rakefile
         | 
| 111 | 
            +
            - lib/testingbot/jasmine/test/public/javascripts/Player.js
         | 
| 112 | 
            +
            - lib/testingbot/jasmine/test/public/javascripts/Song.js
         | 
| 113 | 
            +
            - lib/testingbot/jasmine/test/spec/javascripts/PlayerSpec.js
         | 
| 114 | 
            +
            - lib/testingbot/jasmine/test/spec/javascripts/helpers/SpecHelper.js
         | 
| 115 | 
            +
            - lib/testingbot/jasmine/test/spec/javascripts/support/jasmine.yml
         | 
| 101 116 | 
             
            - lib/testingbot/selenium.rb
         | 
| 102 117 | 
             
            - lib/testingbot/tunnel.rb
         | 
| 103 118 | 
             
            - lib/testingbot/version.rb
         |