guard-jasmine 0.3.0 → 0.3.1
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/README.md +51 -30
- data/lib/guard/jasmine.rb +2 -2
- data/lib/guard/jasmine/runner.rb +1 -1
- data/lib/guard/jasmine/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -12,23 +12,28 @@ If you have any questions please join us on our [Google group](http://groups.goo
|
|
12
12
|
* Continuous testing based on file modifications by [Guard][], manifold configurable rules
|
13
13
|
with RegEx and Ruby.
|
14
14
|
|
15
|
-
* Fast headless testing
|
15
|
+
* Fast headless testing on [PhantomJS][], a full featured WebKit browser with native support for
|
16
16
|
various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.
|
17
17
|
|
18
|
-
*
|
18
|
+
* You can write your [Jasmine][] specs in [CoffeeScript][], fully integrated into the
|
19
19
|
[Rails 3.1 asset pipeline][] with [Jasminerice][].
|
20
20
|
|
21
21
|
* Runs on Mac OS X, Linux and Windows.
|
22
22
|
|
23
23
|
## How it works
|
24
24
|
|
25
|
-
|
26
|
-
the normal Jasmine Spec Runner. (With Rails 2 & 3 you configure your plain JavaScript Jasmine specs with [the Jasmine Gem][].)
|
25
|
+

|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
3.
|
31
|
-
|
27
|
+
1. Guard is triggered by a file modification.
|
28
|
+
2. Guard::Jasmine executes the [PhantomJS script][].
|
29
|
+
3. The PhantomJS script requests the Jasmine test runner via HTTP.
|
30
|
+
4. Rails uses the asset pipeline to get the Jasmine runner, the code to be tested and the specs.
|
31
|
+
5. The asset pipeline prepares the assets, compiles the CoffeeScripts if necessary.
|
32
|
+
6. The asset pipeline has finished to prepare the needed assets.
|
33
|
+
7. Rails returns the Jasmine runner HTML.
|
34
|
+
8. PhantomJS requests linked assets and runs the Jasmine tests headless.
|
35
|
+
9. The PhantomJS script extracts the result from the DOM and returns a JSON report.
|
36
|
+
10. Guard::Jasmine reports the results to the console and system notifications.
|
32
37
|
|
33
38
|
## Install
|
34
39
|
|
@@ -58,7 +63,7 @@ Please read the detailed installation and configuration instructions at [Jasmine
|
|
58
63
|
In short, you add it to your `Gemfile`:
|
59
64
|
|
60
65
|
group :development, :test do
|
61
|
-
gem '
|
66
|
+
gem 'jasminerice'
|
62
67
|
end
|
63
68
|
|
64
69
|
and add a route for the Jasmine Test Runner to `config/routes.rb`:
|
@@ -72,11 +77,6 @@ asset pipeline manifest in `spec/javascripts/spec.js.coffee`:
|
|
72
77
|
|
73
78
|
#=require_tree ./
|
74
79
|
|
75
|
-
### Rails 2 & 3
|
76
|
-
|
77
|
-
With Rails 3 you write your Jasmine specs in JavaScript, configured and server with the Jasmine gem. Please read the
|
78
|
-
detailed installation and configuration instructions at [the Jasmine Gem][].
|
79
|
-
|
80
80
|
### PhantomJS
|
81
81
|
|
82
82
|
You need the PhantomJS browser installed on your system. You can download binaries for Mac OS X and Windows from
|
@@ -112,15 +112,6 @@ Guard::Jasmine can be adapted to all kind of projects. Please read the
|
|
112
112
|
watch(%r{spec/javascripts/spec\.(js\.coffee|js)}) { "spec/javascripts" }
|
113
113
|
end
|
114
114
|
|
115
|
-
### Rails 2 & 3 with the Jasmine gem
|
116
|
-
|
117
|
-
guard 'jasmine', :url => 'http://127.0.0.1:8888' do
|
118
|
-
watch(%r{public/javascripts/(.+)\.js}) { |m| "spec/javascripts/#{m[1]}_spec.js" }
|
119
|
-
watch(%r{spec/javascripts/(.+)_spec\.js}) { |m| "spec/javascripts/#{m[1]}_spec.js" }
|
120
|
-
watch(%r{spec/javascripts/support/jasmine\.yml}) { "spec/javascripts" }
|
121
|
-
watch(%r{spec/javascripts/support/jasmine_config\.rb}) { "spec/javascripts" }
|
122
|
-
end
|
123
|
-
|
124
115
|
## Options
|
125
116
|
|
126
117
|
There following options can be passed to Guard::Jasmine:
|
@@ -132,13 +123,13 @@ There following options can be passed to Guard::Jasmine:
|
|
132
123
|
:phantomjs_bin => '~/bin/phantomjs' # Path to phantomjs.
|
133
124
|
# default: '/usr/local/bin/phantomjs'
|
134
125
|
|
135
|
-
:all_on_start => false # Run all
|
126
|
+
:all_on_start => false # Run all suites on start.
|
136
127
|
# default: true
|
137
128
|
|
138
|
-
:keep_failed => false # Keep failed
|
129
|
+
:keep_failed => false # Keep failed suites and add them to the next run again.
|
139
130
|
# default: true
|
140
131
|
|
141
|
-
:all_after_pass => false # Run all
|
132
|
+
:all_after_pass => false # Run all suites after a suite has passed again after failing.
|
142
133
|
# default: true
|
143
134
|
|
144
135
|
:notifications => false # Show success and error messages.
|
@@ -147,6 +138,34 @@ There following options can be passed to Guard::Jasmine:
|
|
147
138
|
:hide_success => true # Disable successful compilation messages.
|
148
139
|
# default: false
|
149
140
|
|
141
|
+
The `:keep_failed` failed option remembers failed suites and not failed specs. The reason for this decision is to
|
142
|
+
avoid to much round trip time to request the Jasmine test runner for each single spec, which is mostly more expensive
|
143
|
+
than running a whole suite.
|
144
|
+
|
145
|
+
### A note on Rails 2 and 3
|
146
|
+
|
147
|
+
This readme describes the use of Guard::Jasmine with Jasminerice through the asset pipeline. But as long as you
|
148
|
+
serve the Jasmine test runner under a certain url, it's freely up to you how to prepare and serve the runner.
|
149
|
+
|
150
|
+
You can use [the Jasmine Gem][], configure the test suite in `jasmine.yml` and start the Jasmine test runner with
|
151
|
+
the supplied Rake task:
|
152
|
+
|
153
|
+
$ rake jasmine
|
154
|
+
|
155
|
+
Next follows an example on how to configure your `Guardfile` with the Jasmine gem:
|
156
|
+
|
157
|
+
guard 'jasmine', :url => 'http://127.0.0.1:8888' do
|
158
|
+
watch(%r{public/javascripts/(.+)\.js}) { |m| "spec/javascripts/#{m[1]}_spec.js" }
|
159
|
+
watch(%r{spec/javascripts/(.+)_spec\.js}) { |m| "spec/javascripts/#{m[1]}_spec.js" }
|
160
|
+
watch(%r{spec/javascripts/support/jasmine\.yml}) { "spec/javascripts" }
|
161
|
+
watch(%r{spec/javascripts/support/jasmine_config\.rb}) { "spec/javascripts" }
|
162
|
+
end
|
163
|
+
|
164
|
+
It is also possible to use CoffeeScript in this setup, by using [Guard::CoffeeScript][] to compile your code and even
|
165
|
+
specs. Just add something like this *before* Guard::Jasmine:
|
166
|
+
|
167
|
+
guard 'coffeescript', :input => 'app/coffeescripts', :output => 'public/javascripts'
|
168
|
+
guard 'coffeescript', :input => 'spec/coffeescripts', :output => 'spec/javascripts'
|
150
169
|
|
151
170
|
## Alternatives
|
152
171
|
|
@@ -159,8 +178,8 @@ featured browser environment.
|
|
159
178
|
## Development
|
160
179
|
|
161
180
|
- Documentation hosted at [RubyDoc](http://rubydoc.info/gems/guard-jasmine/file/README.md).
|
162
|
-
- Source hosted at [GitHub](https://github.com/netzpirat/guard-
|
163
|
-
- Report issues and feature requests to [GitHub Issues](https://github.com/netzpirat/guard-
|
181
|
+
- Source hosted at [GitHub](https://github.com/netzpirat/guard-jasmine).
|
182
|
+
- Report issues and feature requests to [GitHub Issues](https://github.com/netzpirat/guard-jasmine/issues).
|
164
183
|
|
165
184
|
Pull requests are very welcome! Please try to follow these simple "rules", though:
|
166
185
|
|
@@ -174,11 +193,11 @@ For questions please join us on our [Google group](http://groups.google.com/grou
|
|
174
193
|
|
175
194
|
## Acknowledgment
|
176
195
|
|
177
|
-
- [Ariya Hidayat][] for [PhantomJS][], a
|
196
|
+
- [Ariya Hidayat][] for [PhantomJS][], a powerful headless WebKit browser.
|
178
197
|
- [Brad Phelan][] for [Jasminerice][], an elegant solution for [Jasmine][] in the Rails 3.1 asset pipeline.
|
179
198
|
- [Pivotal Labs][] for their beautiful [Jasmine][] BDD testing framework that makes JavaScript testing fun.
|
180
199
|
- [Jeremy Ashkenas][] for [CoffeeScript][], that little language that compiles into JavaScript and makes me enjoy the
|
181
|
-
|
200
|
+
front-end.
|
182
201
|
- The [Guard Team][] for giving us such a nice piece of software that is so easy to extend, one *has* to make a plugin
|
183
202
|
for it!
|
184
203
|
- All the authors of the numerous [Guards][] available for making the Guard ecosystem so much growing and comprehensive.
|
@@ -229,3 +248,5 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
229
248
|
[guard-jasmine-headless-webkit]: https://github.com/johnbintz/guard-jasmine-headless-webkit
|
230
249
|
[jasmine-headless-webkit]: https://github.com/johnbintz/jasmine-headless-webkit/
|
231
250
|
[Evergreen]: https://github.com/jnicklas/evergreen
|
251
|
+
[PhantomJS script]: https://github.com/netzpirat/guard-jasmine/blob/master/lib/guard/jasmine/phantomjs/run-jasmine.coffee
|
252
|
+
[Guard::CoffeeScript]: https://github.com/guard/guard-coffeescript
|
data/lib/guard/jasmine.rb
CHANGED
@@ -25,8 +25,8 @@ module Guard
|
|
25
25
|
# @option options [Boolean] :notification show notifications
|
26
26
|
# @option options [Boolean] :hide_success hide success message notification
|
27
27
|
# @option options [Boolean] :all_on_start run all suites on start
|
28
|
-
# @option options [Boolean] :keep_failed keep failed
|
29
|
-
# @option options [Boolean] :all_after_pass run all
|
28
|
+
# @option options [Boolean] :keep_failed keep failed suites and add them to the next run again
|
29
|
+
# @option options [Boolean] :all_after_pass run all suites after a suite has passed again after failing
|
30
30
|
#
|
31
31
|
def initialize(watchers = [], options = { })
|
32
32
|
defaults = {
|
data/lib/guard/jasmine/runner.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard-jasmine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Kessler
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09-
|
18
|
+
date: 2011-09-09 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: guard
|