jasmine_selenium_runner 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/jasmine-selenium-runner.gemspec +2 -2
- data/lib/jasmine/runners/selenium.rb +20 -2
- data/lib/jasmine/runners/selenium/version.rb +1 -1
- data/lib/jasmine_selenium_runner/configure_jasmine.rb +3 -1
- data/lib/jasmine_selenium_runner/tasks/jasmine_selenium_runner.rake +1 -1
- data/spec/fixtures/contains_circular_references_spec.js +7 -0
- data/spec/jasmine_selenium_runner/configure_jasmine_spec.rb +38 -18
- data/spec/selenium_runner_integration_spec.rb +25 -5
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71c49524cded239d450de93167e2e595e783d265
|
4
|
+
data.tar.gz: 61c45501e41dbda1c35b7fbc8f07f881c6a956c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5e1c6a43f07697730c1309809aca6da84d9552df5e9224a6251ef1c86d3d0625a1b75b428ace67a64b7379708ed1c6258fd21869b4f846f41a343f250fd2b2b
|
7
|
+
data.tar.gz: 314d392cdc9071ceab94f0a5c5ef02769d1dc52ac40640f6f30ff450ccdc853f33caf0511f066cce74d725cf188c57d95bd5ff53ffe554ee918e5ecbd2ae8698
|
data/.travis.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
before_script:
|
2
2
|
- sh -e /etc/init.d/xvfb start
|
3
|
-
- curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash
|
3
|
+
- curl -L https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash
|
4
4
|
script: DISPLAY=:99.0 bundle exec rake
|
5
5
|
rvm:
|
6
6
|
- 2.0.0
|
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
|
-
spec.add_development_dependency 'rails'
|
24
|
+
spec.add_development_dependency 'rails', '> 3.0'
|
25
25
|
spec.add_dependency 'jasmine', '~> 2.0.0.alpha'
|
26
26
|
spec.add_dependency 'selenium-webdriver', '~> 2.35'
|
27
27
|
spec.add_dependency 'sauce-connect'
|
@@ -52,14 +52,32 @@ module Jasmine
|
|
52
52
|
spec_results = []
|
53
53
|
|
54
54
|
loop do
|
55
|
-
slice =
|
56
|
-
spec_results <<
|
55
|
+
slice = results_without_circular_references(index)
|
56
|
+
spec_results << slice
|
57
57
|
index += result_batch_size
|
58
58
|
break if slice.size < result_batch_size
|
59
59
|
end
|
60
60
|
spec_results.flatten
|
61
61
|
end
|
62
62
|
|
63
|
+
def results_without_circular_references(starting_index)
|
64
|
+
slice = driver.execute_script(<<-JS)
|
65
|
+
var specResults = jsApiReporter.specResults(#{starting_index}, #{result_batch_size})
|
66
|
+
for (var i = 0; i < specResults.length; i++) {
|
67
|
+
var expectations = specResults[i].failedExpectations;
|
68
|
+
if (specResults[i].passedExpectations) {
|
69
|
+
expectations = expectations.concat(specResults[i].passedExpectations);
|
70
|
+
}
|
71
|
+
for (var j = 0; j < expectations.length; j++) {
|
72
|
+
var expectation = expectations[j];
|
73
|
+
try { JSON.stringify(expectation.expected); } catch (e) { expectation.expected = '<circular expected>'; }
|
74
|
+
try { JSON.stringify(expectation.actual); } catch (e) { expectation.actual = '<circular actual>'; }
|
75
|
+
}
|
76
|
+
}
|
77
|
+
return specResults;
|
78
|
+
JS
|
79
|
+
Jasmine::Result.map_raw_results(slice)
|
80
|
+
end
|
63
81
|
end
|
64
82
|
end
|
65
83
|
end
|
@@ -21,7 +21,9 @@ module JasmineSeleniumRunner
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.load_config
|
24
|
-
filepath =
|
24
|
+
filepath = ENV['JASMINE_SELENIUM_CONFIG_PATH']
|
25
|
+
filepath ||= File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine_selenium_runner.yml')
|
26
|
+
|
25
27
|
if File.exist?(filepath)
|
26
28
|
YAML::load(ERB.new(File.read(filepath)).result(binding))
|
27
29
|
else
|
@@ -10,7 +10,7 @@ describe "Configuring jasmine" do
|
|
10
10
|
let(:config) { { 'selenium_server' => 'http://example.com/selenium/stuff' }}
|
11
11
|
|
12
12
|
it "make a webdriver pointing to the custom server" do
|
13
|
-
Selenium::WebDriver.
|
13
|
+
expect(Selenium::WebDriver).to receive(:for).with(:remote, hash_including(url: 'http://example.com/selenium/stuff'))
|
14
14
|
configurer.make_runner
|
15
15
|
end
|
16
16
|
end
|
@@ -20,8 +20,8 @@ describe "Configuring jasmine" do
|
|
20
20
|
|
21
21
|
it "should create a firebug profile and pass that to WebDriver" do
|
22
22
|
profile = double(:profile, enable_firebug: nil)
|
23
|
-
Selenium::WebDriver::Firefox::Profile.
|
24
|
-
Selenium::WebDriver.
|
23
|
+
allow(Selenium::WebDriver::Firefox::Profile).to receive(:new).and_return(profile)
|
24
|
+
expect(Selenium::WebDriver).to receive(:for).with('firefox-firebug'.to_sym, {profile: profile})
|
25
25
|
configurer.make_runner
|
26
26
|
end
|
27
27
|
end
|
@@ -32,17 +32,17 @@ describe "Configuring jasmine" do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def configure
|
35
|
-
Dir.
|
36
|
-
Jasmine.
|
35
|
+
allow(Dir).to receive(:pwd).and_return(working_dir)
|
36
|
+
allow(Jasmine).to receive(:configure).and_yield(fake_config)
|
37
37
|
JasmineSeleniumRunner::ConfigureJasmine.install_selenium_runner
|
38
38
|
end
|
39
39
|
|
40
|
-
def stub_config_file(config_obj)
|
41
|
-
config_path
|
42
|
-
File.
|
43
|
-
File.
|
44
|
-
File.
|
45
|
-
File.
|
40
|
+
def stub_config_file(config_obj, config_path=nil)
|
41
|
+
config_path ||= File.join(working_dir, 'spec', 'javascripts', 'support', 'jasmine_selenium_runner.yml')
|
42
|
+
allow(File).to receive(:exist?).and_call_original
|
43
|
+
allow(File).to receive(:exist?).with(config_path).and_return(true)
|
44
|
+
allow(File).to receive(:read).and_call_original
|
45
|
+
allow(File).to receive(:read).with(config_path).and_return(YAML.dump(config_obj))
|
46
46
|
end
|
47
47
|
|
48
48
|
let(:working_dir) { 'hi' }
|
@@ -58,15 +58,35 @@ describe "Configuring jasmine" do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
context 'with the default config file location' do
|
62
|
+
before do
|
63
|
+
stub_config_file 'configuration_class' => 'Foo::Bar'
|
64
|
+
configure
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should use the custom class" do
|
68
|
+
expect(Selenium::WebDriver).not_to receive(:for)
|
69
|
+
expect_any_instance_of(Foo::Bar).to receive(:make_runner)
|
70
|
+
fake_config.runner.call(nil, nil)
|
71
|
+
end
|
64
72
|
end
|
65
73
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
74
|
+
context 'with a custom config file path' do
|
75
|
+
before do
|
76
|
+
stub_config_file({ 'configuration_class' => 'Foo::Bar' }, '/tmp/config.yml')
|
77
|
+
ENV['JASMINE_SELENIUM_CONFIG_PATH'] = '/tmp/config.yml'
|
78
|
+
configure
|
79
|
+
end
|
80
|
+
|
81
|
+
after do
|
82
|
+
ENV.delete 'JASMINE_SELENIUM_CONFIG_PATH'
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should use the custom class" do
|
86
|
+
expect(Selenium::WebDriver).not_to receive(:for)
|
87
|
+
expect_any_instance_of(Foo::Bar).to receive(:make_runner)
|
88
|
+
fake_config.runner.call(nil, nil)
|
89
|
+
end
|
70
90
|
end
|
71
91
|
end
|
72
92
|
end
|
@@ -21,7 +21,27 @@ GEMFILE
|
|
21
21
|
`bundle exec jasmine examples`
|
22
22
|
FileUtils.cp(File.join(project_root, 'spec', 'fixtures', 'is_in_firefox_spec.js'), File.join(dir, 'spec', 'javascripts'))
|
23
23
|
ci_output = `bundle exec rake -E "require 'jasmine_selenium_runner'" --trace jasmine:ci`
|
24
|
-
ci_output.
|
24
|
+
expect(ci_output).to match(/[1-9][0-9]* specs, 0 failures/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "allows rake jasmine:ci to retrieve results even though Selenium can't transmit back circular JS objects" do
|
30
|
+
in_temp_dir do |dir, project_root|
|
31
|
+
File.open(File.join(dir, 'Gemfile'), 'w') do |file|
|
32
|
+
file.write <<-GEMFILE
|
33
|
+
source 'https://rubygems.org'
|
34
|
+
gem 'jasmine_selenium_runner', :path => '#{project_root}'
|
35
|
+
gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git'
|
36
|
+
GEMFILE
|
37
|
+
end
|
38
|
+
Bundler.with_clean_env do
|
39
|
+
`bundle`
|
40
|
+
`bundle exec jasmine init`
|
41
|
+
`bundle exec jasmine examples`
|
42
|
+
FileUtils.cp(File.join(project_root, 'spec', 'fixtures', 'contains_circular_references_spec.js'), File.join(dir, 'spec', 'javascripts'))
|
43
|
+
ci_output = `bundle exec rake -E "require 'jasmine_selenium_runner'" --trace jasmine:ci`
|
44
|
+
expect(ci_output).to match(/[1-9][0-9]* specs, 1 failure/)
|
25
45
|
end
|
26
46
|
end
|
27
47
|
end
|
@@ -68,13 +88,13 @@ YAML
|
|
68
88
|
before = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
69
89
|
http.request(job_list_request)
|
70
90
|
end
|
71
|
-
JSON.parse(before.body).
|
91
|
+
expect(JSON.parse(before.body)).to be_empty
|
72
92
|
ci_output = %x{bundle exec rake -E "require 'jasmine_selenium_runner'" --trace jasmine:ci}
|
73
|
-
ci_output.
|
93
|
+
expect(ci_output).to match(/[1-9][0-9]* specs, 0 failures/)
|
74
94
|
after = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
75
95
|
http.request(job_list_request)
|
76
96
|
end
|
77
|
-
JSON.parse(after.body).
|
97
|
+
expect(JSON.parse(after.body)).not_to be_empty
|
78
98
|
end
|
79
99
|
end
|
80
100
|
end
|
@@ -107,7 +127,7 @@ YAML
|
|
107
127
|
`bundle exec rails g jasmine:examples`
|
108
128
|
FileUtils.cp(File.join(project_root, 'spec', 'fixtures', 'is_in_firefox_spec.js'), File.join(dir, 'rails-test', 'spec', 'javascripts'))
|
109
129
|
output = `bundle exec rake jasmine:ci`
|
110
|
-
output.
|
130
|
+
expect(output).to match(/[1-9]\d* specs, 0 failures/)
|
111
131
|
end
|
112
132
|
end
|
113
133
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine_selenium_runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rajan Agaskar
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,16 +57,16 @@ dependencies:
|
|
57
57
|
name: rails
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - '
|
60
|
+
- - '>'
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
62
|
+
version: '3.0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - '
|
67
|
+
- - '>'
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
69
|
+
version: '3.0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: jasmine
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/jasmine_selenium_runner/firebug/firebug.rb
|
135
135
|
- lib/jasmine_selenium_runner/railtie.rb
|
136
136
|
- lib/jasmine_selenium_runner/tasks/jasmine_selenium_runner.rake
|
137
|
+
- spec/fixtures/contains_circular_references_spec.js
|
137
138
|
- spec/fixtures/is_in_firefox_spec.js
|
138
139
|
- spec/fixtures/is_in_ie_spec.js
|
139
140
|
- spec/jasmine_selenium_runner/configure_jasmine_spec.rb
|
@@ -159,11 +160,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
160
|
version: '0'
|
160
161
|
requirements: []
|
161
162
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.0.
|
163
|
+
rubygems_version: 2.0.3
|
163
164
|
signing_key:
|
164
165
|
specification_version: 4
|
165
166
|
summary: Run your jasmine tests in a real live browser!
|
166
167
|
test_files:
|
168
|
+
- spec/fixtures/contains_circular_references_spec.js
|
167
169
|
- spec/fixtures/is_in_firefox_spec.js
|
168
170
|
- spec/fixtures/is_in_ie_spec.js
|
169
171
|
- spec/jasmine_selenium_runner/configure_jasmine_spec.rb
|