guard-jasmine 1.19.2 → 2.0.0beta1
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/README.md +31 -234
- data/lib/generators/guard_jasmine/install_generator.rb +17 -0
- data/lib/generators/guard_jasmine/templates/Guardfile +9 -0
- data/lib/guard/jasmine.rb +18 -15
- data/lib/guard/jasmine/cli.rb +5 -5
- data/lib/guard/jasmine/formatter.rb +10 -0
- data/lib/guard/jasmine/inspector.rb +1 -2
- data/lib/guard/jasmine/phantomjs/guard-jasmine.js +54 -180
- data/lib/guard/jasmine/phantomjs/guard-reporter.js +187 -0
- data/lib/guard/jasmine/phantomjs/src/guard-jasmine.coffee +101 -0
- data/lib/guard/jasmine/phantomjs/src/guard-reporter.coffee +109 -0
- data/lib/guard/jasmine/phantomjs/test/guard-reporter_spec.coffee +41 -0
- data/lib/guard/jasmine/runner.rb +178 -268
- data/lib/guard/jasmine/server.rb +17 -3
- data/lib/guard/jasmine/util.rb +1 -7
- data/lib/guard/jasmine/version.rb +1 -1
- metadata +135 -26
- data/lib/guard/jasmine/phantomjs/guard-jasmine.coffee +0 -193
- data/lib/guard/jasmine/phantomjs/lib/console.js +0 -188
- data/lib/guard/jasmine/phantomjs/lib/junit_reporter.js +0 -224
- data/lib/guard/jasmine/phantomjs/lib/reporter.js +0 -144
- data/lib/guard/jasmine/phantomjs/lib/result.js +0 -155
- data/lib/guard/jasmine/phantomjs/src/console.coffee +0 -149
- data/lib/guard/jasmine/phantomjs/src/reporter.coffee +0 -139
- data/lib/guard/jasmine/phantomjs/src/result.coffee +0 -95
- data/lib/guard/jasmine/phantomjs/test/console_spec.coffee +0 -125
- data/lib/guard/jasmine/phantomjs/test/reporter_spec.coffee +0 -0
- data/lib/guard/jasmine/phantomjs/test/result_spec.coffee +0 -311
data/lib/guard/jasmine/server.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'socket'
|
4
4
|
require 'timeout'
|
5
5
|
require 'childprocess'
|
6
|
+
require 'jasmine'
|
6
7
|
|
7
8
|
module Guard
|
8
9
|
class Jasmine
|
@@ -53,13 +54,27 @@ module Guard
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
57
|
+
# A port was not specified, therefore we attempt to detect the best port to use
|
58
|
+
# @param [Hash] options the server options
|
59
|
+
# @option options [Symbol] server the rack server to use
|
60
|
+
# @return [Integer] port number
|
61
|
+
def choose_server_port(options)
|
62
|
+
if options[:server] == :jasmine_gem
|
63
|
+
::Jasmine.config.port(:server)
|
64
|
+
else
|
65
|
+
::Guard::Jasmine.find_free_server_port
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
56
69
|
# Detect the server to use
|
57
70
|
#
|
58
71
|
# @param [String] spec_dir the spec directory
|
59
72
|
# @return [Symbol] the server strategy
|
60
73
|
#
|
61
74
|
def detect_server(spec_dir)
|
62
|
-
if File.exists?('
|
75
|
+
if spec_dir && File.exists?(File.join(spec_dir, 'support','jasmine.yml'))
|
76
|
+
:jasmine_gem
|
77
|
+
elsif File.exists?('config.ru')
|
63
78
|
%w(unicorn thin mongrel puma).each do |server|
|
64
79
|
begin
|
65
80
|
require server
|
@@ -69,8 +84,6 @@ module Guard
|
|
69
84
|
end
|
70
85
|
end
|
71
86
|
:webrick
|
72
|
-
elsif spec_dir && File.exists?(File.join(spec_dir, 'support', 'jasmine.yml'))
|
73
|
-
:jasmine_gem
|
74
87
|
else
|
75
88
|
:none
|
76
89
|
end
|
@@ -136,6 +149,7 @@ module Guard
|
|
136
149
|
# @option options [Symbol] server the rack server to use
|
137
150
|
#
|
138
151
|
def start_rake_server(port, task, options)
|
152
|
+
|
139
153
|
::Guard::UI.info "Guard::Jasmine starts Jasmine Gem test server on port #{ port }."
|
140
154
|
|
141
155
|
self.process = ChildProcess.build('ruby', '-S', 'rake', task, "JASMINE_PORT=#{ port }")
|
data/lib/guard/jasmine/util.rb
CHANGED
@@ -86,13 +86,7 @@ module Guard
|
|
86
86
|
# @return [Integer] a free server port
|
87
87
|
#
|
88
88
|
def find_free_server_port
|
89
|
-
|
90
|
-
port = server.addr[1]
|
91
|
-
server.close
|
92
|
-
|
93
|
-
port
|
94
|
-
rescue Errno::EADDRINUSE
|
95
|
-
retry
|
89
|
+
::Jasmine.find_unused_port
|
96
90
|
end
|
97
91
|
|
98
92
|
# Cross-platform way of finding an executable in the $PATH.
|
metadata
CHANGED
@@ -1,37 +1,108 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard-jasmine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Kessler
|
8
|
+
- Nathan Stitt
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-11-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: guard
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
20
|
+
version: '2.8'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- - "
|
25
|
+
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
27
|
+
version: '2.8'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: jasmine
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.1'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.1'
|
27
42
|
- !ruby/object:Gem::Dependency
|
28
43
|
name: multi_json
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.10'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.10'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: childprocess
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.5'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.5'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: thor
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.19'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0.19'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: tilt
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '2.0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: bundler
|
29
100
|
requirement: !ruby/object:Gem::Requirement
|
30
101
|
requirements:
|
31
102
|
- - ">="
|
32
103
|
- !ruby/object:Gem::Version
|
33
104
|
version: '0'
|
34
|
-
type: :
|
105
|
+
type: :development
|
35
106
|
prerelease: false
|
36
107
|
version_requirements: !ruby/object:Gem::Requirement
|
37
108
|
requirements:
|
@@ -39,13 +110,13 @@ dependencies:
|
|
39
110
|
- !ruby/object:Gem::Version
|
40
111
|
version: '0'
|
41
112
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
113
|
+
name: rake
|
43
114
|
requirement: !ruby/object:Gem::Requirement
|
44
115
|
requirements:
|
45
116
|
- - ">="
|
46
117
|
- !ruby/object:Gem::Version
|
47
118
|
version: '0'
|
48
|
-
type: :
|
119
|
+
type: :development
|
49
120
|
prerelease: false
|
50
121
|
version_requirements: !ruby/object:Gem::Requirement
|
51
122
|
requirements:
|
@@ -53,13 +124,13 @@ dependencies:
|
|
53
124
|
- !ruby/object:Gem::Version
|
54
125
|
version: '0'
|
55
126
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
127
|
+
name: rack
|
57
128
|
requirement: !ruby/object:Gem::Requirement
|
58
129
|
requirements:
|
59
130
|
- - ">="
|
60
131
|
- !ruby/object:Gem::Version
|
61
132
|
version: '0'
|
62
|
-
type: :
|
133
|
+
type: :development
|
63
134
|
prerelease: false
|
64
135
|
version_requirements: !ruby/object:Gem::Requirement
|
65
136
|
requirements:
|
@@ -67,13 +138,13 @@ dependencies:
|
|
67
138
|
- !ruby/object:Gem::Version
|
68
139
|
version: '0'
|
69
140
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
141
|
+
name: guard-coffeescript
|
71
142
|
requirement: !ruby/object:Gem::Requirement
|
72
143
|
requirements:
|
73
144
|
- - ">="
|
74
145
|
- !ruby/object:Gem::Version
|
75
146
|
version: '0'
|
76
|
-
type: :
|
147
|
+
type: :development
|
77
148
|
prerelease: false
|
78
149
|
version_requirements: !ruby/object:Gem::Requirement
|
79
150
|
requirements:
|
@@ -81,7 +152,49 @@ dependencies:
|
|
81
152
|
- !ruby/object:Gem::Version
|
82
153
|
version: '0'
|
83
154
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
155
|
+
name: guard-shell
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
type: :development
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: guard-rspec
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: rspec
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '3'
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - "~>"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '3'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: yard
|
85
198
|
requirement: !ruby/object:Gem::Requirement
|
86
199
|
requirements:
|
87
200
|
- - ">="
|
@@ -97,6 +210,7 @@ dependencies:
|
|
97
210
|
description: Guard::Jasmine automatically tests your Jasmine specs on PhantomJS
|
98
211
|
email:
|
99
212
|
- michi@flinkfinger.com
|
213
|
+
- nathan@stitt.org
|
100
214
|
executables:
|
101
215
|
- guard-jasmine
|
102
216
|
- guard-jasmine-debug
|
@@ -107,23 +221,18 @@ files:
|
|
107
221
|
- README.md
|
108
222
|
- bin/guard-jasmine
|
109
223
|
- bin/guard-jasmine-debug
|
224
|
+
- lib/generators/guard_jasmine/install_generator.rb
|
225
|
+
- lib/generators/guard_jasmine/templates/Guardfile
|
110
226
|
- lib/guard/jasmine.rb
|
111
227
|
- lib/guard/jasmine/cli.rb
|
112
228
|
- lib/guard/jasmine/coverage.rb
|
113
229
|
- lib/guard/jasmine/formatter.rb
|
114
230
|
- lib/guard/jasmine/inspector.rb
|
115
|
-
- lib/guard/jasmine/phantomjs/guard-jasmine.coffee
|
116
231
|
- lib/guard/jasmine/phantomjs/guard-jasmine.js
|
117
|
-
- lib/guard/jasmine/phantomjs/
|
118
|
-
- lib/guard/jasmine/phantomjs/
|
119
|
-
- lib/guard/jasmine/phantomjs/
|
120
|
-
- lib/guard/jasmine/phantomjs/
|
121
|
-
- lib/guard/jasmine/phantomjs/src/console.coffee
|
122
|
-
- lib/guard/jasmine/phantomjs/src/reporter.coffee
|
123
|
-
- lib/guard/jasmine/phantomjs/src/result.coffee
|
124
|
-
- lib/guard/jasmine/phantomjs/test/console_spec.coffee
|
125
|
-
- lib/guard/jasmine/phantomjs/test/reporter_spec.coffee
|
126
|
-
- lib/guard/jasmine/phantomjs/test/result_spec.coffee
|
232
|
+
- lib/guard/jasmine/phantomjs/guard-reporter.js
|
233
|
+
- lib/guard/jasmine/phantomjs/src/guard-jasmine.coffee
|
234
|
+
- lib/guard/jasmine/phantomjs/src/guard-reporter.coffee
|
235
|
+
- lib/guard/jasmine/phantomjs/test/guard-reporter_spec.coffee
|
127
236
|
- lib/guard/jasmine/runner.rb
|
128
237
|
- lib/guard/jasmine/server.rb
|
129
238
|
- lib/guard/jasmine/task.rb
|
@@ -150,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
259
|
version: 1.3.6
|
151
260
|
requirements: []
|
152
261
|
rubyforge_project: guard-jasmine
|
153
|
-
rubygems_version: 2.
|
262
|
+
rubygems_version: 2.4.3
|
154
263
|
signing_key:
|
155
264
|
specification_version: 4
|
156
265
|
summary: Guard gem for headless testing with Jasmine
|
@@ -1,193 +0,0 @@
|
|
1
|
-
# This file is the script that runs within PhantomJS, requests the Jasmine specs
|
2
|
-
# and waits until they are ready.
|
3
|
-
phantom.injectJs 'lib/result.js'
|
4
|
-
|
5
|
-
# Set default values
|
6
|
-
options =
|
7
|
-
url: phantom.args[0] || 'http://127.0.0.1:3000/jasmine'
|
8
|
-
timeout: parseInt(phantom.args[1] || 10000)
|
9
|
-
specdoc: phantom.args[2] || 'failure'
|
10
|
-
focus: /true/i.test phantom.args[3]
|
11
|
-
console: phantom.args[4] || 'failure'
|
12
|
-
errors: phantom.args[5] || 'failure'
|
13
|
-
junit: /true/i.test phantom.args[6]
|
14
|
-
junit_consolidate: /true/i.test phantom.args[7]
|
15
|
-
junit_save_path: phantom.args[8] || ''
|
16
|
-
|
17
|
-
# Create the web page.
|
18
|
-
#
|
19
|
-
page = require('webpage').create()
|
20
|
-
|
21
|
-
# Used to collect log messages for later assignment to the spec
|
22
|
-
#
|
23
|
-
currentSpecId = -1
|
24
|
-
logs = {}
|
25
|
-
errors = {}
|
26
|
-
resultsKey = "__jr" + Math.ceil(Math.random() * 1000000)
|
27
|
-
fs = require("fs")
|
28
|
-
|
29
|
-
# Catch JavaScript errors
|
30
|
-
#
|
31
|
-
page.onError = (msg, trace) ->
|
32
|
-
if currentSpecId
|
33
|
-
errors[currentSpecId] ||= []
|
34
|
-
errors[currentSpecId].push({ msg: msg, trace: trace })
|
35
|
-
|
36
|
-
# Capture console.log output to add it to
|
37
|
-
# the result when specs have finished.
|
38
|
-
#
|
39
|
-
page.onConsoleMessage = (msg, line, source) ->
|
40
|
-
if /^RUNNER_END$/.test(msg)
|
41
|
-
result = page.evaluate -> window.reporter.runnerResult
|
42
|
-
console.log JSON.stringify(new Result(result, logs, errors, options).process())
|
43
|
-
page.evaluate -> window.resultReceived = true
|
44
|
-
|
45
|
-
else if /^SPEC_START: (\d+)$/.test(msg)
|
46
|
-
currentSpecId = Number(RegExp.$1)
|
47
|
-
|
48
|
-
else
|
49
|
-
logs[currentSpecId] ||= []
|
50
|
-
logs[currentSpecId].push(msg)
|
51
|
-
|
52
|
-
# Initialize the page before the JavaScript is run.
|
53
|
-
#
|
54
|
-
page.onInitialized = ->
|
55
|
-
overloadPageEvaluate(page)
|
56
|
-
setupWriteFileFunction(page, resultsKey, fs.separator)
|
57
|
-
|
58
|
-
page.injectJs 'lib/console.js'
|
59
|
-
page.injectJs 'lib/reporter.js'
|
60
|
-
page.injectJs 'lib/junit_reporter.js'
|
61
|
-
|
62
|
-
setupReporters = ->
|
63
|
-
# Attach the console reporter when the document is ready.
|
64
|
-
window.onload = ->
|
65
|
-
window.onload = null
|
66
|
-
window.resultReceived = false
|
67
|
-
window.reporter = new ConsoleReporter()
|
68
|
-
if window.jasmine
|
69
|
-
jasmine.getEnv().addReporter(new JUnitXmlReporter("%save_path%", "%consolidate%"))
|
70
|
-
jasmine.getEnv().addReporter(window.reporter)
|
71
|
-
|
72
|
-
page.evaluate(setupReporters, {save_path: options.junit_save_path, consolidate: options.junit_consolidate})
|
73
|
-
|
74
|
-
|
75
|
-
getXmlResults = (page, key) ->
|
76
|
-
getWindowObj = ->
|
77
|
-
window["%resultsObj%"] || {}
|
78
|
-
page.evaluate getWindowObj, {resultsObj: key}
|
79
|
-
|
80
|
-
replaceFunctionPlaceholders= (fn, replacements) ->
|
81
|
-
if replacements && typeof replacements == 'object'
|
82
|
-
fn = fn.toString()
|
83
|
-
for p of replacements
|
84
|
-
if replacements.hasOwnProperty(p)
|
85
|
-
match = new RegExp("%" + p + "%", "g")
|
86
|
-
loop
|
87
|
-
fn = fn.replace(match, replacements[p])
|
88
|
-
break unless fn.indexOf(match) != -1
|
89
|
-
fn
|
90
|
-
|
91
|
-
overloadPageEvaluate = (page) ->
|
92
|
-
page._evaluate = page.evaluate
|
93
|
-
page.evaluate = (fn, replacements) ->
|
94
|
-
page._evaluate(replaceFunctionPlaceholders(fn, replacements))
|
95
|
-
page
|
96
|
-
|
97
|
-
setupWriteFileFunction= (page,key, path_separator) ->
|
98
|
-
saveData = () ->
|
99
|
-
window["%resultsObj%"] = {}
|
100
|
-
window.fs_path_separator = "%fs_path_separator%"
|
101
|
-
window.__phantom_writeFile = (filename, text) ->
|
102
|
-
window["%resultsObj%"][filename] = text;
|
103
|
-
|
104
|
-
page.evaluate saveData, {resultsObj: key, fs_path_separator: path_separator}
|
105
|
-
|
106
|
-
# Open web page and run the Jasmine test runner
|
107
|
-
#
|
108
|
-
page.open options.url, (status) ->
|
109
|
-
# Avoid that a failed iframe load breaks the runner, see https://github.com/netzpirat/guard-jasmine/pull/19
|
110
|
-
page.onLoadFinished = ->
|
111
|
-
if status isnt 'success'
|
112
|
-
console.log JSON.stringify({ error: "Unable to access Jasmine specs at #{ options.url }" })
|
113
|
-
phantom.exit()
|
114
|
-
else
|
115
|
-
waitFor jasmineReady, jasmineAvailable, options.timeout, jasmineMissing
|
116
|
-
|
117
|
-
# Test if the jasmine has been loaded
|
118
|
-
#
|
119
|
-
jasmineReady = ->
|
120
|
-
page.evaluate -> window.jasmine
|
121
|
-
|
122
|
-
# Start specs after they are have been loaded
|
123
|
-
#
|
124
|
-
jasmineAvailable = ->
|
125
|
-
waitFor specsReady, specsDone, options.timeout, specsTimedout
|
126
|
-
|
127
|
-
# Error message for when jasmine never loaded asynchronously
|
128
|
-
#
|
129
|
-
jasmineMissing = ->
|
130
|
-
text = page.evaluate -> document.getElementsByTagName('body')[0]?.innerText
|
131
|
-
|
132
|
-
if text
|
133
|
-
error = """
|
134
|
-
The Jasmine reporter is not available!
|
135
|
-
|
136
|
-
#{ text }
|
137
|
-
"""
|
138
|
-
console.log JSON.stringify({ error: error })
|
139
|
-
else
|
140
|
-
console.log JSON.stringify({ error: 'The Jasmine reporter is not available!' })
|
141
|
-
|
142
|
-
# Test if the specs have finished.
|
143
|
-
#
|
144
|
-
specsReady = ->
|
145
|
-
page.evaluate -> window.resultReceived
|
146
|
-
|
147
|
-
# Error message for when specs time out
|
148
|
-
#
|
149
|
-
specsTimedout = ->
|
150
|
-
text = page.evaluate -> document.getElementsByTagName('body')[0]?.innerText
|
151
|
-
if text
|
152
|
-
error = """
|
153
|
-
Timeout waiting for the Jasmine test results!
|
154
|
-
|
155
|
-
#{ text }
|
156
|
-
"""
|
157
|
-
console.log JSON.stringify({ error: error })
|
158
|
-
else
|
159
|
-
console.log JSON.stringify({ error: 'Timeout for the Jasmine test results!' })
|
160
|
-
|
161
|
-
specsDone = ->
|
162
|
-
if options.junit == true
|
163
|
-
xml_results = getXmlResults(page, resultsKey)
|
164
|
-
for filename of xml_results
|
165
|
-
if xml_results.hasOwnProperty(filename) && (output = xml_results[filename]) && typeof(output) == 'string'
|
166
|
-
fs.write(filename, output, 'w')
|
167
|
-
|
168
|
-
phantom.exit()
|
169
|
-
|
170
|
-
# Wait until the test condition is true or a timeout occurs.
|
171
|
-
#
|
172
|
-
# @param [Function] test the test that returns true if condition is met
|
173
|
-
# @param [Function] ready the action when the condition is fulfilled
|
174
|
-
# @param [Number] timeout the max amount of time to wait in milliseconds
|
175
|
-
#
|
176
|
-
waitFor = (test, ready, timeout = 10000, timeoutFunction) ->
|
177
|
-
start = Date.now()
|
178
|
-
condition = false
|
179
|
-
interval = undefined
|
180
|
-
|
181
|
-
wait = ->
|
182
|
-
if (Date.now() - start < timeout) and not condition
|
183
|
-
condition = test()
|
184
|
-
else
|
185
|
-
clearInterval interval
|
186
|
-
|
187
|
-
if condition
|
188
|
-
ready()
|
189
|
-
else
|
190
|
-
timeoutFunction()
|
191
|
-
phantom.exit(1)
|
192
|
-
|
193
|
-
interval = setInterval wait, 250
|