jasmine-selenium-sauce 1.0.0 → 1.1.0

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.
Files changed (24) hide show
  1. data/.travis.yml +4 -0
  2. data/README.md +34 -1
  3. data/lib/jasmine-selenium-sauce.rb +12 -4
  4. data/lib/jasmine-selenium-sauce/browser_config.rb +22 -0
  5. data/lib/jasmine-selenium-sauce/drivers.rb +4 -0
  6. data/lib/jasmine-selenium-sauce/drivers/selenium_browser_driver.rb +18 -0
  7. data/lib/jasmine-selenium-sauce/drivers/selenium_driver.rb +28 -0
  8. data/lib/jasmine-selenium-sauce/{selenium_saucelabs_driver.rb → drivers/selenium_saucelabs_driver.rb} +2 -16
  9. data/lib/jasmine-selenium-sauce/tasks/jasmine_selenium_sauce.rake +30 -0
  10. data/lib/jasmine-selenium-sauce/tasks/railtie.rb +1 -1
  11. data/lib/jasmine-selenium-sauce/tasks/rake_browser_runner.rb +22 -0
  12. data/lib/jasmine-selenium-sauce/tasks/{rake_runner.rb → rake_sauce_runner.rb} +9 -4
  13. data/lib/jasmine-selenium-sauce/version.rb +1 -1
  14. data/spec/fixtures/selenium_driver_fixtures.rb +42 -0
  15. data/spec/fixtures/vcr_cassettes/jasmine_browser_failures.yml +286 -0
  16. data/spec/fixtures/vcr_cassettes/jasmine_browser_success.yml +285 -0
  17. data/spec/fixtures/vcr_cassettes/{jasmine_failures.yml → jasmine_saucelabs_failures.yml} +0 -0
  18. data/spec/fixtures/vcr_cassettes/{jasmine_success.yml → jasmine_saucelabs_success.yml} +0 -0
  19. data/spec/jasmine-selenium-sauce/drivers/selenium_browser_driver_spec.rb +24 -0
  20. data/spec/jasmine-selenium-sauce/{selenium_saucelabs_driver_spec.rb → drivers/selenium_saucelabs_driver_spec.rb} +7 -45
  21. data/spec/jasmine-selenium-sauce_spec.rb +50 -4
  22. data/spec/spec_helper.rb +2 -2
  23. metadata +25 -17
  24. data/lib/jasmine-selenium-sauce/tasks/sauce.rake +0 -16
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.2"
4
+ - "1.9.3"
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ## Build Status [<img src="https://secure.travis-ci.org/darend/jasmine-selenium-sauce.png"/>](http://travis-ci.org/darend/jasmine-selenium-sauce)
2
+
1
3
  # Jasmine::Sauce::Ci
2
4
 
3
5
  Uses SauceLabs to connect to your server and run your Jasmine suites, producing an RSpec report
@@ -16,7 +18,7 @@ Or install it yourself as:
16
18
 
17
19
  $ gem install jasmine-selenium-sauce
18
20
 
19
- ## Usage
21
+ ## Running Jasmine via SauceLabs
20
22
 
21
23
  rake jasmine:sauce
22
24
 
@@ -54,6 +56,37 @@ You can specify the format of the RSpec report with:
54
56
 
55
57
  See [sauce_config.rb](https://github.com/darend/jasmine-selenium-sauce/tree/master/lib/jasmine-selenium-sauce/sauce_config.rb)
56
58
 
59
+ ## Running Jasmine via local browser
60
+
61
+ rake jasmine:browser
62
+
63
+ ### Required Environment Variables
64
+
65
+ Requires the following environment variables to be set:
66
+
67
+ #### JASMINE_URL
68
+
69
+ Where your Jasmine tests are hosted:
70
+
71
+ JASMINE_URL=http://my.server.com/jasmine
72
+
73
+ #### LOCAL_BROWSER
74
+
75
+ Which browser that will be used to run your tests. Selenium may require a driver be installed depending the driver. See
76
+ the Selenium documentation for more details.
77
+
78
+ LOCAL_BROWSER=firefox
79
+
80
+ See [Which browsers does WebDriver support?](http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_Which_browsers_does_WebDriver_support?).
81
+
82
+ ### Optional Configuration
83
+
84
+ #### RSpec
85
+
86
+ You can specify the format of the RSpec report with:
87
+
88
+ JASMINE_SPEC_FORMAT=documentation
89
+
57
90
  ## Contributing
58
91
 
59
92
  1. Fork it
@@ -1,19 +1,27 @@
1
1
  require 'jasmine-selenium-sauce/version'
2
2
  require 'jasmine-selenium-sauce/jasmine_results'
3
3
  require 'jasmine-selenium-sauce/rspec_reporter'
4
+ require 'jasmine-selenium-sauce/browser_config'
4
5
  require 'jasmine-selenium-sauce/sauce_config'
5
6
  require 'jasmine-selenium-sauce/selenium_runner'
6
- require 'jasmine-selenium-sauce/selenium_saucelabs_driver'
7
+ require 'jasmine-selenium-sauce/drivers'
7
8
 
8
9
  module Jasmine
9
10
  module Sauce
10
11
  module CI
11
12
 
12
13
  class Main
13
- def self.run(config, reporter = RspecReporter.new)
14
- driver = SeleniumSauceLabsDriver.new(config)
14
+ def self.run_via_saucelabs(sauce_config, reporter = RspecReporter.new)
15
+ driver = SeleniumSauceLabsDriver.new(sauce_config)
15
16
  selenium_runner = SeleniumRunner.new(driver)
16
- results = selenium_runner.run(config.jasmine_server_url)
17
+ results = selenium_runner.run(sauce_config.jasmine_server_url)
18
+ reporter.report(results)
19
+ end
20
+
21
+ def self.run_via_browser(browser_config, reporter = RspecReporter.new)
22
+ driver = SeleniumBrowserDriver.new(browser_config.browser)
23
+ selenium_runner = SeleniumRunner.new(driver)
24
+ results = selenium_runner.run(browser_config.jasmine_server_url)
17
25
  reporter.report(results)
18
26
  end
19
27
  end
@@ -0,0 +1,22 @@
1
+ module Jasmine
2
+ module Sauce
3
+ module CI
4
+
5
+ class BrowserConfig
6
+
7
+ def validate
8
+ raise ArgumentError.new("JASMINE_URL was not set") unless jasmine_server_url
9
+ raise ArgumentError.new("LOCAL_BROWSER was not set") unless browser
10
+ end
11
+
12
+ def jasmine_server_url
13
+ ENV['JASMINE_URL']
14
+ end
15
+
16
+ def browser
17
+ ENV['LOCAL_BROWSER']
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,4 @@
1
+ require_relative 'drivers/selenium_driver'
2
+ require_relative 'drivers/selenium_saucelabs_driver'
3
+ require_relative 'drivers/selenium_browser_driver'
4
+
@@ -0,0 +1,18 @@
1
+ require_relative 'selenium_driver'
2
+
3
+ module Jasmine
4
+ module Sauce
5
+ module CI
6
+ class SeleniumBrowserDriver < SeleniumDriver
7
+
8
+ def initialize(browser)
9
+ super(create_driver(browser))
10
+ end
11
+
12
+ def create_driver(browser)
13
+ Selenium::WebDriver.for browser.to_sym
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ require 'selenium-webdriver'
2
+ require 'json'
3
+
4
+ module Jasmine
5
+ module Sauce
6
+ module CI
7
+ class SeleniumDriver
8
+
9
+ def initialize(driver)
10
+ @driver = driver
11
+ end
12
+
13
+ def connect(url)
14
+ @driver.navigate.to url
15
+ end
16
+
17
+ def disconnect
18
+ @driver.quit
19
+ end
20
+
21
+ def evaluate_js(script)
22
+ result = @driver.execute_script(script)
23
+ JSON.parse("{\"result\":#{result}}", :max_nesting => false)["result"]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,10 +1,9 @@
1
- require 'selenium-webdriver'
2
- require 'json'
1
+ require_relative 'selenium_driver'
3
2
 
4
3
  module Jasmine
5
4
  module Sauce
6
5
  module CI
7
- class SeleniumSauceLabsDriver
6
+ class SeleniumSauceLabsDriver < SeleniumDriver
8
7
 
9
8
  def initialize(sauce_config)
10
9
  @driver = create_driver(sauce_config)
@@ -21,19 +20,6 @@ module Jasmine
21
20
  Selenium::WebDriver.for :remote, options
22
21
  end
23
22
 
24
- def connect(url)
25
- @driver.navigate.to url
26
- end
27
-
28
- def disconnect
29
- @driver.quit
30
- end
31
-
32
- def evaluate_js(script)
33
- result = @driver.execute_script(script)
34
- JSON.parse("{\"result\":#{result}}", :max_nesting => false)["result"]
35
- end
36
-
37
23
  def generate_capabilities(sauce_config)
38
24
  {
39
25
  'platform' => sauce_config.platform,
@@ -0,0 +1,30 @@
1
+ namespace :jasmine do
2
+
3
+ desc "Run Jasmine via SauceLabs"
4
+ task :sauce do
5
+ require "rspec/core/rake_task"
6
+
7
+ RSpec::Core::RakeTask.new(:jasmine_sauce_runner) do |t|
8
+ t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
9
+ t.verbose = true
10
+ runner_path = File.expand_path(File.join(File.dirname(__FILE__), "rake_sauce_runner.rb"))
11
+ t.pattern = [runner_path]
12
+ end
13
+
14
+ Rake::Task["jasmine_sauce_runner"].invoke
15
+ end
16
+
17
+ desc "Run Jasmine via local browser"
18
+ task :browser do
19
+ require "rspec/core/rake_task"
20
+
21
+ RSpec::Core::RakeTask.new(:jasmine_browser_runner) do |t|
22
+ t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
23
+ t.verbose = true
24
+ runner_path = File.expand_path(File.join(File.dirname(__FILE__), "rake_browser_runner.rb"))
25
+ t.pattern = [runner_path]
26
+ end
27
+
28
+ Rake::Task["jasmine_browser_runner"].invoke
29
+ end
30
+ end
@@ -8,7 +8,7 @@ module Jasmine
8
8
  railtie_name :jasmine_sauce_ci
9
9
 
10
10
  rake_tasks do
11
- load "jasmine-selenium-sauce/tasks/sauce.rake"
11
+ load "jasmine-selenium-sauce/tasks/jasmine_selenium_sauce.rake"
12
12
  end
13
13
  end
14
14
 
@@ -0,0 +1,22 @@
1
+ require_relative '../../jasmine-selenium-sauce'
2
+
3
+ config = Jasmine::Sauce::CI::BrowserConfig.new
4
+ begin
5
+ config.validate
6
+ Jasmine::Sauce::CI::Main.run_via_browser(config)
7
+ rescue ArgumentError => e
8
+ STDERR << "\nError: #{e.message}\n\n"
9
+ STDERR << "The following environment variables are required:\n"
10
+ STDERR << "\n"
11
+ STDERR << " JASMINE_URL - Where your Jasmine tests are hosted (http://my.host.com:80/jasmine)\n"
12
+ STDERR << " LOCAL_BROWSER - Which browser to run "
13
+ STDERR << "(ie, internet_explorer, remote, chrome, firefox, ff, android, iphone, opera, safari)\n"
14
+ STDERR << "\n"
15
+ exit -1
16
+ rescue StandardError => e
17
+ STDERR << "\nError: #{e.message}\n\n"
18
+ if e.message.include?("jsApiReporter is not defined")
19
+ STDERR << "Unable to find Jasmine tests, ensure server is running and #{config.jasmine_server_url} is correct\n\n"
20
+ end
21
+ exit -1
22
+ end
@@ -1,17 +1,22 @@
1
1
  require_relative '../../jasmine-selenium-sauce'
2
- #require_relative '../../jasmine-selenium-sauce/sauce_config'
3
2
 
4
3
  begin
5
4
  config = Jasmine::Sauce::CI::SauceConfig.new
6
5
  config.validate
7
- Jasmine::Sauce::CI::Main.run(config)
6
+ Jasmine::Sauce::CI::Main.run_via_saucelabs(config)
8
7
  rescue ArgumentError => e
9
8
  STDERR << "\nError: #{e.message}\n\n"
10
9
  STDERR << "The following environment variables are required:\n"
11
10
  STDERR << "\n"
12
- STDERR << " SAUCELABS_URL - Your SauceLabs OnDemand URL with Basic Auth\n"
13
- STDERR << " JASMINE_URL - Where your Jasmine tests are hosted\n"
11
+ STDERR << " SAUCELABS_URL - Your SauceLabs OnDemand URL with Basic Auth (http://username:password@ondemand.saucelabs.com:80/wd/hub)\n"
12
+ STDERR << " JASMINE_URL - Where your Jasmine tests are hosted (http://my.host.com:80/jasmine)\n"
14
13
  STDERR << " SAUCE_BROWSER - Which Browser SauceLabs should use\n"
15
14
  STDERR << "\n"
16
15
  exit -1
16
+ rescue StandardError => e
17
+ STDERR << "\nError: #{e.message}\n\n"
18
+ if e.message.include?("jsApiReporter is not defined")
19
+ STDERR << "Unable to find Jasmine tests, ensure server is running and #{config.jasmine_server_url} is correct\n\n"
20
+ end
21
+ exit -1
17
22
  end
@@ -1,7 +1,7 @@
1
1
  module Jasmine
2
2
  module Sauce
3
3
  module Ci
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,42 @@
1
+
2
+ shared_examples_for "selenium driver" do
3
+ describe "#connect" do
4
+ let(:url) { "http://jasmine.server.url/jasmine" }
5
+ let(:navigator) { double("SeleniumNavigator") }
6
+ subject { under_test.connect(url) }
7
+ before do
8
+ driver.should_receive(:navigate).and_return(navigator)
9
+ navigator.should_receive(:to).with(url)
10
+ end
11
+
12
+ specify { expect { subject }.not_to raise_error }
13
+ end
14
+
15
+ describe "#disconnect" do
16
+ subject { under_test.disconnect }
17
+ before do
18
+ driver.should_receive(:quit)
19
+ end
20
+
21
+ specify { expect { subject }.not_to raise_error }
22
+ end
23
+
24
+ describe "#evaluate_js" do
25
+ let(:script) { "the javascript" }
26
+ subject { under_test.evaluate_js(script) }
27
+ before do
28
+ driver.should_receive(:execute_script).and_return(script_result)
29
+ end
30
+
31
+ context "when simple result" do
32
+ let(:script_result) { "true" }
33
+ it { should be_true }
34
+ end
35
+
36
+ context "when json result" do
37
+ include_context "suites sample"
38
+ let(:script_result) { suites.to_json }
39
+ it { should eq(JSON.parse(script_result)) }
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,286 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://127.0.0.1:7055/hub/session
6
+ body:
7
+ encoding: UTF-8
8
+ string: ! '{"desiredCapabilities":{"browserName":"firefox","version":"","platform":"ANY","javascriptEnabled":true,"cssSelectorsEnabled":true,"takesScreenshot":true,"nativeEvents":false,"rotatable":false}}'
9
+ headers:
10
+ accept:
11
+ - application/json
12
+ content-type:
13
+ - application/json; charset=utf-8
14
+ content-length:
15
+ - '193'
16
+ user-agent:
17
+ - Ruby
18
+ response:
19
+ status:
20
+ code: 303
21
+ message: See Other
22
+ headers:
23
+ location:
24
+ - http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356
25
+ connection:
26
+ - close
27
+ content-length:
28
+ - '0'
29
+ server:
30
+ - httpd.js
31
+ date:
32
+ - Sat, 29 Sep 2012 21:02:37 GMT
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ''
36
+ http_version: '1.1'
37
+ recorded_at: Sat, 29 Sep 2012 21:02:37 GMT
38
+ - request:
39
+ method: get
40
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ''
44
+ headers:
45
+ accept:
46
+ - application/json
47
+ user-agent:
48
+ - Ruby
49
+ response:
50
+ status:
51
+ code: 200
52
+ message: OK
53
+ headers:
54
+ content-type:
55
+ - application/json; charset=UTF-8
56
+ connection:
57
+ - close
58
+ content-length:
59
+ - '283'
60
+ server:
61
+ - httpd.js
62
+ date:
63
+ - Sat, 29 Sep 2012 21:02:37 GMT
64
+ body:
65
+ encoding: US-ASCII
66
+ string: ! '{"name":"getSessionCapabilities","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":{"cssSelectorsEnabled":true,"browserName":"firefox","handlesAlerts":true,"javascriptEnabled":true,"nativeEvents":false,"platform":"Darwin","takesScreenshot":true,"version":"15.0"}}'
67
+ http_version: '1.1'
68
+ recorded_at: Sat, 29 Sep 2012 21:02:37 GMT
69
+ - request:
70
+ method: post
71
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356/url
72
+ body:
73
+ encoding: UTF-8
74
+ string: ! '{"url":"http://localhost:3000/jasmine"}'
75
+ headers:
76
+ accept:
77
+ - application/json
78
+ content-type:
79
+ - application/json; charset=utf-8
80
+ content-length:
81
+ - '39'
82
+ user-agent:
83
+ - Ruby
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ content-type:
90
+ - application/json; charset=UTF-8
91
+ connection:
92
+ - close
93
+ content-length:
94
+ - '87'
95
+ server:
96
+ - httpd.js
97
+ date:
98
+ - Sat, 29 Sep 2012 21:02:38 GMT
99
+ body:
100
+ encoding: US-ASCII
101
+ string: ! '{"name":"get","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":""}'
102
+ http_version: '1.1'
103
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
104
+ - request:
105
+ method: post
106
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356/execute
107
+ body:
108
+ encoding: UTF-8
109
+ string: ! '{"script":"return jsApiReporter && jsApiReporter.started","args":[]}'
110
+ headers:
111
+ accept:
112
+ - application/json
113
+ content-type:
114
+ - application/json; charset=utf-8
115
+ content-length:
116
+ - '68'
117
+ user-agent:
118
+ - Ruby
119
+ response:
120
+ status:
121
+ code: 200
122
+ message: OK
123
+ headers:
124
+ content-type:
125
+ - application/json; charset=UTF-8
126
+ connection:
127
+ - close
128
+ content-length:
129
+ - '99'
130
+ server:
131
+ - httpd.js
132
+ date:
133
+ - Sat, 29 Sep 2012 21:02:38 GMT
134
+ body:
135
+ encoding: US-ASCII
136
+ string: ! '{"name":"executeScript","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":true}'
137
+ http_version: '1.1'
138
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
139
+ - request:
140
+ method: post
141
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356/execute
142
+ body:
143
+ encoding: UTF-8
144
+ string: ! '{"script":"var result = jsApiReporter.suites(); if (window.Prototype
145
+ && Object.toJSON) { return Object.toJSON(result) } else { return JSON.stringify(result)
146
+ }","args":[]}'
147
+ headers:
148
+ accept:
149
+ - application/json
150
+ content-type:
151
+ - application/json; charset=utf-8
152
+ content-length:
153
+ - '170'
154
+ user-agent:
155
+ - Ruby
156
+ response:
157
+ status:
158
+ code: 200
159
+ message: OK
160
+ headers:
161
+ content-type:
162
+ - application/json; charset=UTF-8
163
+ connection:
164
+ - close
165
+ content-length:
166
+ - '735'
167
+ server:
168
+ - httpd.js
169
+ date:
170
+ - Sat, 29 Sep 2012 21:02:38 GMT
171
+ body:
172
+ encoding: US-ASCII
173
+ string: ! '{"name":"executeScript","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":"[{\"id\":0,\"name\":\"Document
174
+ Model\",\"type\":\"suite\",\"children\":[{\"id\":1,\"name\":\"URL\",\"type\":\"suite\",\"children\":[{\"id\":0,\"name\":\"when
175
+ new\",\"type\":\"spec\",\"children\":[]},{\"id\":1,\"name\":\"when is not
176
+ new\",\"type\":\"spec\",\"children\":[]}]}]},{\"id\":2,\"name\":\"Documents
177
+ Router\",\"type\":\"suite\",\"children\":[{\"id\":3,\"name\":\"routes\",\"type\":\"suite\",\"children\":[{\"id\":2,\"name\":\"fires
178
+ index on blank hash\",\"type\":\"spec\",\"children\":[]},{\"id\":3,\"name\":\"fires
179
+ new\",\"type\":\"spec\",\"children\":[]},{\"id\":4,\"name\":\"fires edit\",\"type\":\"spec\",\"children\":[]}]}]}]"}'
180
+ http_version: '1.1'
181
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
182
+ - request:
183
+ method: post
184
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356/execute
185
+ body:
186
+ encoding: UTF-8
187
+ string: ! '{"script":"return jsApiReporter.finished","args":[]}'
188
+ headers:
189
+ accept:
190
+ - application/json
191
+ content-type:
192
+ - application/json; charset=utf-8
193
+ content-length:
194
+ - '52'
195
+ user-agent:
196
+ - Ruby
197
+ response:
198
+ status:
199
+ code: 200
200
+ message: OK
201
+ headers:
202
+ content-type:
203
+ - application/json; charset=UTF-8
204
+ connection:
205
+ - close
206
+ content-length:
207
+ - '99'
208
+ server:
209
+ - httpd.js
210
+ date:
211
+ - Sat, 29 Sep 2012 21:02:38 GMT
212
+ body:
213
+ encoding: US-ASCII
214
+ string: ! '{"name":"executeScript","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":true}'
215
+ http_version: '1.1'
216
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
217
+ - request:
218
+ method: post
219
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356/execute
220
+ body:
221
+ encoding: UTF-8
222
+ string: ! '{"script":"var result = jsApiReporter.resultsForSpecs([0,1,2,3,4]);
223
+ if (window.Prototype && Object.toJSON) { return Object.toJSON(result) } else
224
+ { return JSON.stringify(result) }","args":[]}'
225
+ headers:
226
+ accept:
227
+ - application/json
228
+ content-type:
229
+ - application/json; charset=utf-8
230
+ content-length:
231
+ - '190'
232
+ user-agent:
233
+ - Ruby
234
+ response:
235
+ status:
236
+ code: 200
237
+ message: OK
238
+ headers:
239
+ content-type:
240
+ - application/json; charset=UTF-8
241
+ connection:
242
+ - close
243
+ content-length:
244
+ - '1555'
245
+ server:
246
+ - httpd.js
247
+ date:
248
+ - Sat, 29 Sep 2012 21:02:38 GMT
249
+ body:
250
+ encoding: US-ASCII
251
+ string: ! '{"name":"executeScript","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":"{\"0\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"1\":{\"result\":\"failed\",\"messages\":[{\"passed\":false,\"type\":\"expect\",\"message\":\"Expected
252
+ ''documents/1'' to equal ''documents/2''.\",\"trace\":{\"stack\":\"@http://localhost:3000/assets/jasmine.js?body=1:102\\n@http://localhost:3000/assets/jasmine.js?body=1:1171\\n@http://localhost:3000/assets/app/models/document_spec.js?body=1:13\\n@http://localhost:3000/assets/jasmine.js?body=1:996\\n@http://localhost:3000/assets/jasmine.js?body=1:1785\\n@http://localhost:3000/assets/jasmine.js?body=1:1738\\n@http://localhost:3000/assets/jasmine.js?body=1:2065\\n@http://localhost:3000/assets/jasmine.js?body=1:1785\\n@http://localhost:3000/assets/jasmine.js?body=1:1781\\n@http://localhost:3000/assets/jasmine.js?body=1:2039\\n@http://localhost:3000/assets/jasmine.js?body=1:2066\\n@http://localhost:3000/assets/jasmine.js?body=1:1795\\n@http://localhost:3000/assets/jasmine.js?body=1:1775\\n\"}}]},\"2\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"3\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"4\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}},{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]}}"}'
253
+ http_version: '1.1'
254
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
255
+ - request:
256
+ method: delete
257
+ uri: http://127.0.0.1:7055/hub/session/b698ea37-e045-7245-bc43-ee08c944d356
258
+ body:
259
+ encoding: US-ASCII
260
+ string: ''
261
+ headers:
262
+ accept:
263
+ - application/json
264
+ user-agent:
265
+ - Ruby
266
+ response:
267
+ status:
268
+ code: 200
269
+ message: OK
270
+ headers:
271
+ content-type:
272
+ - application/json; charset=UTF-8
273
+ connection:
274
+ - close
275
+ content-length:
276
+ - '88'
277
+ server:
278
+ - httpd.js
279
+ date:
280
+ - Sat, 29 Sep 2012 21:02:38 GMT
281
+ body:
282
+ encoding: US-ASCII
283
+ string: ! '{"name":"quit","sessionId":"b698ea37-e045-7245-bc43-ee08c944d356","status":0,"value":""}'
284
+ http_version: '1.1'
285
+ recorded_at: Sat, 29 Sep 2012 21:02:38 GMT
286
+ recorded_with: VCR 2.2.5
@@ -0,0 +1,285 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://127.0.0.1:7057/hub/session
6
+ body:
7
+ encoding: UTF-8
8
+ string: ! '{"desiredCapabilities":{"browserName":"firefox","version":"","platform":"ANY","javascriptEnabled":true,"cssSelectorsEnabled":true,"takesScreenshot":true,"nativeEvents":false,"rotatable":false}}'
9
+ headers:
10
+ accept:
11
+ - application/json
12
+ content-type:
13
+ - application/json; charset=utf-8
14
+ content-length:
15
+ - '193'
16
+ user-agent:
17
+ - Ruby
18
+ response:
19
+ status:
20
+ code: 303
21
+ message: See Other
22
+ headers:
23
+ location:
24
+ - http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417
25
+ connection:
26
+ - close
27
+ content-length:
28
+ - '0'
29
+ server:
30
+ - httpd.js
31
+ date:
32
+ - Sat, 29 Sep 2012 21:00:30 GMT
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ''
36
+ http_version: '1.1'
37
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
38
+ - request:
39
+ method: get
40
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ''
44
+ headers:
45
+ accept:
46
+ - application/json
47
+ user-agent:
48
+ - Ruby
49
+ response:
50
+ status:
51
+ code: 200
52
+ message: OK
53
+ headers:
54
+ content-type:
55
+ - application/json; charset=UTF-8
56
+ connection:
57
+ - close
58
+ content-length:
59
+ - '283'
60
+ server:
61
+ - httpd.js
62
+ date:
63
+ - Sat, 29 Sep 2012 21:00:30 GMT
64
+ body:
65
+ encoding: US-ASCII
66
+ string: ! '{"name":"getSessionCapabilities","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":{"cssSelectorsEnabled":true,"browserName":"firefox","handlesAlerts":true,"javascriptEnabled":true,"nativeEvents":false,"platform":"Darwin","takesScreenshot":true,"version":"15.0"}}'
67
+ http_version: '1.1'
68
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
69
+ - request:
70
+ method: post
71
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417/url
72
+ body:
73
+ encoding: UTF-8
74
+ string: ! '{"url":"http://localhost:3000/jasmine"}'
75
+ headers:
76
+ accept:
77
+ - application/json
78
+ content-type:
79
+ - application/json; charset=utf-8
80
+ content-length:
81
+ - '39'
82
+ user-agent:
83
+ - Ruby
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ content-type:
90
+ - application/json; charset=UTF-8
91
+ connection:
92
+ - close
93
+ content-length:
94
+ - '87'
95
+ server:
96
+ - httpd.js
97
+ date:
98
+ - Sat, 29 Sep 2012 21:00:30 GMT
99
+ body:
100
+ encoding: US-ASCII
101
+ string: ! '{"name":"get","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":""}'
102
+ http_version: '1.1'
103
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
104
+ - request:
105
+ method: post
106
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417/execute
107
+ body:
108
+ encoding: UTF-8
109
+ string: ! '{"script":"return jsApiReporter && jsApiReporter.started","args":[]}'
110
+ headers:
111
+ accept:
112
+ - application/json
113
+ content-type:
114
+ - application/json; charset=utf-8
115
+ content-length:
116
+ - '68'
117
+ user-agent:
118
+ - Ruby
119
+ response:
120
+ status:
121
+ code: 200
122
+ message: OK
123
+ headers:
124
+ content-type:
125
+ - application/json; charset=UTF-8
126
+ connection:
127
+ - close
128
+ content-length:
129
+ - '99'
130
+ server:
131
+ - httpd.js
132
+ date:
133
+ - Sat, 29 Sep 2012 21:00:30 GMT
134
+ body:
135
+ encoding: US-ASCII
136
+ string: ! '{"name":"executeScript","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":true}'
137
+ http_version: '1.1'
138
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
139
+ - request:
140
+ method: post
141
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417/execute
142
+ body:
143
+ encoding: UTF-8
144
+ string: ! '{"script":"var result = jsApiReporter.suites(); if (window.Prototype
145
+ && Object.toJSON) { return Object.toJSON(result) } else { return JSON.stringify(result)
146
+ }","args":[]}'
147
+ headers:
148
+ accept:
149
+ - application/json
150
+ content-type:
151
+ - application/json; charset=utf-8
152
+ content-length:
153
+ - '170'
154
+ user-agent:
155
+ - Ruby
156
+ response:
157
+ status:
158
+ code: 200
159
+ message: OK
160
+ headers:
161
+ content-type:
162
+ - application/json; charset=UTF-8
163
+ connection:
164
+ - close
165
+ content-length:
166
+ - '735'
167
+ server:
168
+ - httpd.js
169
+ date:
170
+ - Sat, 29 Sep 2012 21:00:30 GMT
171
+ body:
172
+ encoding: US-ASCII
173
+ string: ! '{"name":"executeScript","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":"[{\"id\":0,\"name\":\"Document
174
+ Model\",\"type\":\"suite\",\"children\":[{\"id\":1,\"name\":\"URL\",\"type\":\"suite\",\"children\":[{\"id\":0,\"name\":\"when
175
+ new\",\"type\":\"spec\",\"children\":[]},{\"id\":1,\"name\":\"when is not
176
+ new\",\"type\":\"spec\",\"children\":[]}]}]},{\"id\":2,\"name\":\"Documents
177
+ Router\",\"type\":\"suite\",\"children\":[{\"id\":3,\"name\":\"routes\",\"type\":\"suite\",\"children\":[{\"id\":2,\"name\":\"fires
178
+ index on blank hash\",\"type\":\"spec\",\"children\":[]},{\"id\":3,\"name\":\"fires
179
+ new\",\"type\":\"spec\",\"children\":[]},{\"id\":4,\"name\":\"fires edit\",\"type\":\"spec\",\"children\":[]}]}]}]"}'
180
+ http_version: '1.1'
181
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
182
+ - request:
183
+ method: post
184
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417/execute
185
+ body:
186
+ encoding: UTF-8
187
+ string: ! '{"script":"return jsApiReporter.finished","args":[]}'
188
+ headers:
189
+ accept:
190
+ - application/json
191
+ content-type:
192
+ - application/json; charset=utf-8
193
+ content-length:
194
+ - '52'
195
+ user-agent:
196
+ - Ruby
197
+ response:
198
+ status:
199
+ code: 200
200
+ message: OK
201
+ headers:
202
+ content-type:
203
+ - application/json; charset=UTF-8
204
+ connection:
205
+ - close
206
+ content-length:
207
+ - '99'
208
+ server:
209
+ - httpd.js
210
+ date:
211
+ - Sat, 29 Sep 2012 21:00:30 GMT
212
+ body:
213
+ encoding: US-ASCII
214
+ string: ! '{"name":"executeScript","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":true}'
215
+ http_version: '1.1'
216
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
217
+ - request:
218
+ method: post
219
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417/execute
220
+ body:
221
+ encoding: UTF-8
222
+ string: ! '{"script":"var result = jsApiReporter.resultsForSpecs([0,1,2,3,4]);
223
+ if (window.Prototype && Object.toJSON) { return Object.toJSON(result) } else
224
+ { return JSON.stringify(result) }","args":[]}'
225
+ headers:
226
+ accept:
227
+ - application/json
228
+ content-type:
229
+ - application/json; charset=utf-8
230
+ content-length:
231
+ - '190'
232
+ user-agent:
233
+ - Ruby
234
+ response:
235
+ status:
236
+ code: 200
237
+ message: OK
238
+ headers:
239
+ content-type:
240
+ - application/json; charset=UTF-8
241
+ connection:
242
+ - close
243
+ content-length:
244
+ - '773'
245
+ server:
246
+ - httpd.js
247
+ date:
248
+ - Sat, 29 Sep 2012 21:00:30 GMT
249
+ body:
250
+ encoding: US-ASCII
251
+ string: ! '{"name":"executeScript","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":"{\"0\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"1\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"2\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"3\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]},\"4\":{\"result\":\"passed\",\"messages\":[{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}},{\"passed\":true,\"type\":\"expect\",\"message\":\"Passed.\",\"trace\":{}}]}}"}'
252
+ http_version: '1.1'
253
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
254
+ - request:
255
+ method: delete
256
+ uri: http://127.0.0.1:7057/hub/session/0b88b0cf-2e6c-1d43-809f-00d96f249417
257
+ body:
258
+ encoding: US-ASCII
259
+ string: ''
260
+ headers:
261
+ accept:
262
+ - application/json
263
+ user-agent:
264
+ - Ruby
265
+ response:
266
+ status:
267
+ code: 200
268
+ message: OK
269
+ headers:
270
+ content-type:
271
+ - application/json; charset=UTF-8
272
+ connection:
273
+ - close
274
+ content-length:
275
+ - '88'
276
+ server:
277
+ - httpd.js
278
+ date:
279
+ - Sat, 29 Sep 2012 21:00:30 GMT
280
+ body:
281
+ encoding: US-ASCII
282
+ string: ! '{"name":"quit","sessionId":"0b88b0cf-2e6c-1d43-809f-00d96f249417","status":0,"value":""}'
283
+ http_version: '1.1'
284
+ recorded_at: Sat, 29 Sep 2012 21:00:30 GMT
285
+ recorded_with: VCR 2.2.5
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ require 'selenium_browser_driver'
3
+ require 'sample_results'
4
+ require 'selenium_driver_fixtures'
5
+
6
+ describe Jasmine::Sauce::CI::SeleniumBrowserDriver do
7
+
8
+ let(:under_test) { Jasmine::Sauce::CI::SeleniumBrowserDriver.new(browser) }
9
+ let(:browser) { "chrome" }
10
+ let(:driver) { double("SeleniumWebDriver") }
11
+
12
+ before do
13
+ Selenium::WebDriver.should_receive(:for).with(browser.to_sym).and_return(driver)
14
+ end
15
+
16
+ describe "#create_driver" do
17
+ subject { under_test }
18
+
19
+ specify { expect {subject}.not_to raise_error }
20
+ end
21
+
22
+ it_behaves_like "selenium driver"
23
+
24
+ end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
  require 'sauce_config'
3
3
  require 'selenium_saucelabs_driver'
4
4
  require 'sample_results'
5
+ require 'selenium_driver_fixtures'
5
6
 
6
7
  describe Jasmine::Sauce::CI::SeleniumSauceLabsDriver do
7
8
 
@@ -9,12 +10,6 @@ describe Jasmine::Sauce::CI::SeleniumSauceLabsDriver do
9
10
  let(:config) { Jasmine::Sauce::CI::SauceConfig.new }
10
11
  let(:driver) { double("SeleniumWebDriver") }
11
12
 
12
- shared_context "create driver is stubbed" do
13
- before do
14
- Jasmine::Sauce::CI::SeleniumSauceLabsDriver.any_instance.should_receive(:create_driver).with(config).and_return(driver)
15
- end
16
- end
17
-
18
13
  describe "#create_driver" do
19
14
  let(:selenium_client) { double("Selenium::WebDriver::Remote::Http::Default") }
20
15
  let(:timeout) { "client timeout" }
@@ -38,46 +33,9 @@ describe Jasmine::Sauce::CI::SeleniumSauceLabsDriver do
38
33
  it("should interact with webdriver correctly") { subject }
39
34
  end
40
35
 
41
- describe "#connect" do
42
- include_context "create driver is stubbed"
43
- let(:url) { "http://jasmine.server.url/jasmine" }
44
- let(:navigator) { double("SeleniumNavigator") }
45
- subject { under_test.connect(url) }
46
- before do
47
- driver.should_receive(:navigate).and_return(navigator)
48
- navigator.should_receive(:to).with(url)
49
- end
50
-
51
- specify { expect { subject }.not_to raise_error }
52
- end
53
-
54
- describe "#disconnect" do
55
- include_context "create driver is stubbed"
56
- subject { under_test.disconnect }
57
- before do
58
- driver.should_receive(:quit)
59
- end
60
-
61
- specify { expect { subject }.not_to raise_error }
62
- end
63
-
64
- describe "#evaluate_js" do
65
- include_context "create driver is stubbed"
66
- let(:script) { "the javascript" }
67
- subject { under_test.evaluate_js(script) }
36
+ shared_context "create driver is stubbed" do
68
37
  before do
69
- driver.should_receive(:execute_script).and_return(script_result)
70
- end
71
-
72
- context "when simple result" do
73
- let(:script_result) { "true" }
74
- it { should be_true }
75
- end
76
-
77
- context "when json result" do
78
- include_context "suites sample"
79
- let(:script_result) { suites.to_json }
80
- it { should eq(JSON.parse(script_result)) }
38
+ Jasmine::Sauce::CI::SeleniumSauceLabsDriver.any_instance.should_receive(:create_driver).with(config).and_return(driver)
81
39
  end
82
40
  end
83
41
 
@@ -103,4 +61,8 @@ describe Jasmine::Sauce::CI::SeleniumSauceLabsDriver do
103
61
  it { subject['max-duration'].should eq "duration" }
104
62
  end
105
63
 
64
+ it_behaves_like "selenium driver" do
65
+ include_context "create driver is stubbed"
66
+ end
67
+
106
68
  end
@@ -1,16 +1,61 @@
1
1
  require_relative 'spec_helper'
2
2
  require_relative 'vcr_helper'
3
3
  require 'jasmine-selenium-sauce'
4
+ require 'browser_config'
4
5
  require 'sauce_config'
5
6
  require 'reporter_fake'
6
7
 
7
8
  describe Jasmine::Sauce::CI::Main do
8
9
 
9
- describe "#run" do
10
+ describe "#run_via_browser" do
11
+
12
+ pending "These tests disabled for CI because they currently depend on an actual browser"
13
+
14
+ let(:config) { Jasmine::Sauce::CI::BrowserConfig.new }
15
+ let(:reporter) { ReporterFake.new }
16
+ subject { Jasmine::Sauce::CI::Main.run_via_browser(config, reporter) }
17
+ after do
18
+ ENV.delete('JASMINE_URL')
19
+ ENV.delete('LOCAL_BROWSER')
20
+ end
21
+
22
+ context "when there are no failures" do
23
+ use_vcr_cassette 'jasmine_browser_success', record: :none
24
+ before do
25
+ ENV['JASMINE_URL'] = 'http://localhost:3000/jasmine'
26
+ ENV['LOCAL_BROWSER'] = 'firefox'
27
+ end
28
+
29
+ describe "passing tests" do
30
+ xit { subject[:passed].should eq([0,1,2,3,4]) }
31
+ end
32
+ describe "failing tests" do
33
+ xit { subject[:failed].should be_empty }
34
+ end
35
+ end
36
+
37
+ context "when there are failures" do
38
+ use_vcr_cassette 'jasmine_browser_failures', record: :none
39
+ before do
40
+ ENV['JASMINE_URL'] = 'http://localhost:3000/jasmine'
41
+ ENV['LOCAL_BROWSER'] = 'firefox'
42
+ end
43
+
44
+ describe "passing tests" do
45
+ xit { subject[:passed].should eq([0,2,3,4]) }
46
+ end
47
+ describe "failing tests" do
48
+ xit { subject[:failed].should eq([1]) }
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ describe "#run_via_saucelabs" do
10
55
 
11
56
  let(:config) { Jasmine::Sauce::CI::SauceConfig.new }
12
57
  let(:reporter) { ReporterFake.new }
13
- subject { Jasmine::Sauce::CI::Main.run(config, reporter) }
58
+ subject { Jasmine::Sauce::CI::Main.run_via_saucelabs(config, reporter) }
14
59
 
15
60
  after do
16
61
  ENV.delete('SAUCELABS_URL')
@@ -19,7 +64,8 @@ describe Jasmine::Sauce::CI::Main do
19
64
  end
20
65
 
21
66
  context "when there are no failures" do
22
- use_vcr_cassette 'jasmine_success', record: :none
67
+ use_vcr_cassette 'jasmine_saucelabs_success', record: :none
68
+
23
69
  before do
24
70
  ENV['SAUCELABS_URL'] = 'http://username:password@ondemand.saucelabs.com:80/wd/hub'
25
71
  ENV['JASMINE_URL'] = 'http://jasmine.server.com/jasmine'
@@ -35,7 +81,7 @@ describe Jasmine::Sauce::CI::Main do
35
81
  end
36
82
 
37
83
  context "when there are failures" do
38
- use_vcr_cassette 'jasmine_failures', record: :none
84
+ use_vcr_cassette 'jasmine_saucelabs_failures', record: :none
39
85
  before do
40
86
  ENV['SAUCELABS_URL'] = 'http://username:password@ondemand.saucelabs.com:80/wd/hub'
41
87
  ENV['JASMINE_URL'] = 'http://jasmine.server.com/jasmine'
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib', 'jasmine-selenium-sauce'))
3
- $LOAD_PATH.unshift(File.dirname(__FILE__))
4
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'support'))
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib', 'jasmine-selenium-sauce', 'drivers'))
5
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'fixtures'))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'support'))
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-selenium-sauce
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-28 00:00:00.000000000 Z
12
+ date: 2012-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fakeweb
@@ -164,6 +164,7 @@ extra_rdoc_files: []
164
164
  files:
165
165
  - .gitignore
166
166
  - .rspec
167
+ - .travis.yml
167
168
  - Gemfile
168
169
  - Guardfile
169
170
  - LICENSE
@@ -171,21 +172,30 @@ files:
171
172
  - Rakefile
172
173
  - jasmine-selenium-sauce.gemspec
173
174
  - lib/jasmine-selenium-sauce.rb
175
+ - lib/jasmine-selenium-sauce/browser_config.rb
176
+ - lib/jasmine-selenium-sauce/drivers.rb
177
+ - lib/jasmine-selenium-sauce/drivers/selenium_browser_driver.rb
178
+ - lib/jasmine-selenium-sauce/drivers/selenium_driver.rb
179
+ - lib/jasmine-selenium-sauce/drivers/selenium_saucelabs_driver.rb
174
180
  - lib/jasmine-selenium-sauce/jasmine_results.rb
175
181
  - lib/jasmine-selenium-sauce/rspec_reporter.rb
176
182
  - lib/jasmine-selenium-sauce/sauce_config.rb
177
183
  - lib/jasmine-selenium-sauce/selenium_runner.rb
178
- - lib/jasmine-selenium-sauce/selenium_saucelabs_driver.rb
184
+ - lib/jasmine-selenium-sauce/tasks/jasmine_selenium_sauce.rake
179
185
  - lib/jasmine-selenium-sauce/tasks/railtie.rb
180
- - lib/jasmine-selenium-sauce/tasks/rake_runner.rb
181
- - lib/jasmine-selenium-sauce/tasks/sauce.rake
186
+ - lib/jasmine-selenium-sauce/tasks/rake_browser_runner.rb
187
+ - lib/jasmine-selenium-sauce/tasks/rake_sauce_runner.rb
182
188
  - lib/jasmine-selenium-sauce/version.rb
183
- - spec/fixtures/vcr_cassettes/jasmine_failures.yml
184
- - spec/fixtures/vcr_cassettes/jasmine_success.yml
189
+ - spec/fixtures/selenium_driver_fixtures.rb
190
+ - spec/fixtures/vcr_cassettes/jasmine_browser_failures.yml
191
+ - spec/fixtures/vcr_cassettes/jasmine_browser_success.yml
192
+ - spec/fixtures/vcr_cassettes/jasmine_saucelabs_failures.yml
193
+ - spec/fixtures/vcr_cassettes/jasmine_saucelabs_success.yml
194
+ - spec/jasmine-selenium-sauce/drivers/selenium_browser_driver_spec.rb
195
+ - spec/jasmine-selenium-sauce/drivers/selenium_saucelabs_driver_spec.rb
185
196
  - spec/jasmine-selenium-sauce/jasmine_results_spec.rb
186
197
  - spec/jasmine-selenium-sauce/sauce_config_spec.rb
187
198
  - spec/jasmine-selenium-sauce/selenium_runner_spec.rb
188
- - spec/jasmine-selenium-sauce/selenium_saucelabs_driver_spec.rb
189
199
  - spec/jasmine-selenium-sauce_spec.rb
190
200
  - spec/spec_helper.rb
191
201
  - spec/support/reporter_fake.rb
@@ -203,18 +213,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
213
  - - ! '>='
204
214
  - !ruby/object:Gem::Version
205
215
  version: '0'
206
- segments:
207
- - 0
208
- hash: -2211963693914659536
209
216
  required_rubygems_version: !ruby/object:Gem::Requirement
210
217
  none: false
211
218
  requirements:
212
219
  - - ! '>='
213
220
  - !ruby/object:Gem::Version
214
221
  version: '0'
215
- segments:
216
- - 0
217
- hash: -2211963693914659536
218
222
  requirements: []
219
223
  rubyforge_project:
220
224
  rubygems_version: 1.8.24
@@ -223,12 +227,16 @@ specification_version: 3
223
227
  summary: Uses SauceLabs to connect to your server and run your Jasmine suites, producing
224
228
  an RSpec report
225
229
  test_files:
226
- - spec/fixtures/vcr_cassettes/jasmine_failures.yml
227
- - spec/fixtures/vcr_cassettes/jasmine_success.yml
230
+ - spec/fixtures/selenium_driver_fixtures.rb
231
+ - spec/fixtures/vcr_cassettes/jasmine_browser_failures.yml
232
+ - spec/fixtures/vcr_cassettes/jasmine_browser_success.yml
233
+ - spec/fixtures/vcr_cassettes/jasmine_saucelabs_failures.yml
234
+ - spec/fixtures/vcr_cassettes/jasmine_saucelabs_success.yml
235
+ - spec/jasmine-selenium-sauce/drivers/selenium_browser_driver_spec.rb
236
+ - spec/jasmine-selenium-sauce/drivers/selenium_saucelabs_driver_spec.rb
228
237
  - spec/jasmine-selenium-sauce/jasmine_results_spec.rb
229
238
  - spec/jasmine-selenium-sauce/sauce_config_spec.rb
230
239
  - spec/jasmine-selenium-sauce/selenium_runner_spec.rb
231
- - spec/jasmine-selenium-sauce/selenium_saucelabs_driver_spec.rb
232
240
  - spec/jasmine-selenium-sauce_spec.rb
233
241
  - spec/spec_helper.rb
234
242
  - spec/support/reporter_fake.rb
@@ -1,16 +0,0 @@
1
- namespace :jasmine do
2
-
3
- desc "Run Jasmine via SauceLabs"
4
- task :sauce do
5
- require "rspec/core/rake_task"
6
-
7
- RSpec::Core::RakeTask.new(:jasmine_sauce_runner) do |t|
8
- t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
9
- t.verbose = true
10
- runner_path = File.expand_path(File.join(File.dirname(__FILE__), "rake_runner.rb"))
11
- t.pattern = [runner_path]
12
- end
13
-
14
- Rake::Task["jasmine_sauce_runner"].invoke
15
- end
16
- end