Add running your Jasmine specs to your Guardfile via jasmine-headless-webkit. Nice!
guard 'jasmine-headless-webkit' do
watch(%r{^app/assets/javascripts/(.*)\..*}) { |m| newest_js_file("spec/javascripts/#{m[1]}_spec") }
endgem install guard-jasmine-headless-webkit and then guard init jasmine-headless-webkit in your project directory to get started.
You should also put it in your Gemfile because, hey, why not, right?
Output is colored by default. If you want it not colored, place a --no-colors option into the project's or your
home folder's .jasmine-headless-webkit file.
:all_on_start => falseto not run everything when starting, just likeguard-rspec.:valid_extensions => %w{js coffee}to only triggerrun_on_changeevents for files with these extensions. Forces Guard to re-run all tests when any other matched file changes.- All other options from
Jasmine::Headless::Runner: (see the list of available options)
If your code required Jammit or ERB templates, which aren't directly supported by jasmine-headledd-webkit,
use guard-rails-assets chained in before guard-jasmine-headless-webkit to precompile your application
code for testing:
guard 'rails-assets' do
watch(%r{^app/assets/javascripts/.*})
end
guard 'jasmine-headless-webkit' do
watch(%r{^public/assets/.*\.js})
... specs ...
endDo the same for Jammit, using guard-jammit.
Jammit >= 0.6.0 changed how it determines the Rails environment. Use my fork of guard-jammit until it's fixed upstream.
Since one could, theoretically, have a CoffeeScript app file and a JavaScript spec file (or vice versa), the search for the correct matching
file is a little more complicated. newest_js_file extends the Guard DSL to search the given path for the newest .js or .coffee file:
newest_js_file('spec/javascripts/models/my_model')
#=> search for Dir['spec/javascripts/models/my_model*.{js,coffee}'] and return the newest file found
If you 100% know you won't need that support, modify your Guardfile as appropriate.
This library is released under the MIT license: