guard-jasmine 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
![Guard Jasmine](https://github.com/netzpirat/guard-jasmine/raw/master/resources/guard-jasmine.png)
|
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
|