Skip to content
Harmony plugin for Ruby on Rails tests
Branch: master
Clone or download
Latest commit 0c6ef60 Apr 1, 2010
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Update inline docs Apr 1, 2010
public/javascripts Wait for async processes Mar 31, 2010
rails Rename Assertions -> Extensions, and clean up Mar 26, 2010
test Update README Apr 1, 2010
LICENSE Add license Feb 7, 2010
Manifest Wait for async processes Mar 31, 2010 Update README Apr 1, 2010
Rakefile Hide private methods in yardocs Feb 8, 2010
docs.watchr Hide private methods in yardocs Feb 8, 2010
holygrail.gemspec v0.6 Apr 1, 2010
specs.watchr Split specs for functional and integration tests Mar 13, 2010



The Holy Grail of testing for front-end development; execute browser-less, console-based, javascript + DOM code right from within your Rails test suite.

HolyGrail is a Harmony plugin for Ruby on Rails.


Use the js method in your functional and integration tests to execute javascript within the context of a view (the last response body). js returns the value of the last javascript statement, cast to an equivalent ruby object.

class PeopleControllerTest < ActionController::TestCase

  test "executes simple js" do
    assert_equal 2, js('1+1')

  test "accesses the DOM" do
    get :foo
    assert_equal 'Foo', js("document.title")
    assert_equal  2,    js("document.getElementsByTagName('div').length")

Ajax requests in integration tests will be handled as expected


Install the gem

# There's a gem dependency bug in rubygems currently, so we'll have to
# install some dependencies manually. This will be fixed soon.
gem install stackdeck
gem install johnson -v "2.0.0.pre3" #exact version matters

gem install holygrail

and add it to your environment

config.gem "holygrail"


HolyGrail is based on Harmony, which in turn is a thin DSL wrapper around three amazing libs, Johnson, env.js and Envjs . The authors of those libs have been doing a huge amount of great work for quite a while, so please go recommend them on WorkingWithRails right now and/or follow them on github:

jbarnette, tenderlove, smparkes, wycats, matthewd, thatcher, jeresig

Special thanks go to smparkes for his patient help, and for providing the last puzzle pieces that made everything work together.


  • Support integration tests
  • Support Rails3


You can’t perform that action at this time.