Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
103 lines (66 sloc) 4.01 KB

This is a skeleton app demonstrating jasmine-headless-webkit. Be sure to check out its page for detailed instructions.

Check this out if you want to:

  • write Jasmine specs
  • use CoffeeScript
  • leverage the asset pipeline in Rails 3.1
  • run specs headless & quickly enough to remove browser-refreshing from your workflow
  • (optional) getting growl notifications via Guard as your specs run

##Prerequisites

This was put together running Mac OS X Lion (10.7). I'm sure the details will differ slightly on other platforms.

Install XCode & Growl.

Install QT with homebrew. (Full disclosure: upon running brew update, I needed to git stash in /usr/local then git pull to get the latest recipes.)

brew update
brew install qt

##Try it out

Once you've cloned this repository and changed into the directory, you should be able to run the Jasmine specs like so:

bundle install
bundle exec guard

When you run guard, it first compiles your assets, run your specs and then monitors for changes.

Note: if you don't care for the Growl, make sure you remove growl_notify from the Gemfile to prevent exceptions.

##Running specs in your browser

If you'd like to run your specs in a browser, which is obviously very helpful when debugging, you can do so by visiting http://localhost:3000/jasmine.

The browser runner is generated by a rails engine by a jasmine-rails gem (which I'm hoping to also add some generator magic to)

##The play-by-play

If you're looking to recreate a similar setup for your existing project, here are most of the steps I took.

###Dependencies

Added to your Gemfile:

group :test, :development do
  gem 'jasmine-rails'

  if RUBY_PLATFORM =~ /darwin/i
    gem 'growl_notify'
    gem 'rb-fsevent', :require => false 
  end
  gem 'guard-rails-assets'
  gem 'guard-jasmine-headless-webkit'
end

###Jasmine config Next, Run:

jasmine init

This will create a little structure, most importantly your spec/javascripts/support/jasmine.yml configuration file. You can safely remove lib/tasks/jasmine.rake, though.

Then, update your jasmine.yml file to look for CoffeeScript in the assets directories. Mine looks something like this.

src_files:
  - "vendor/**/*.{js,coffee}"
  - "lib/**/*.{js,coffee}"
  - "public/**/*.{js,coffee}"
helpers:
  - "helpers/**/*.{js,coffee}"
spec_files:
  - "**/*[Ss]pec.{js,coffee}"
src_dir:
spec_dir: spec/javascripts

###Guard I set guard up by running

bundle exec guard init rails-assets
bundle exec jasmine-headless-webkit

And changed these lines in my Guardfile to monitor all of my assets directories (under app, lib, and vendor):

guard 'rails-assets' do
  watch(%r{^*/assets/.+$})
  ...
end

guard 'jasmine-headless-webkit' do
  ...
  watch(%r{^.*/assets/javascripts/(.*)\.(js|coffee)$}) { |m| newest_js_file(spec_location % m[1]) }
  ...
end

Notes

Many thanks to John Bintz for making jasmine-headless-webkit, it's a wonderful tool.