Make jasmine:ci use phantomjs (under Rails)
If you write [jasmine][jasmine] specs within your rails app you probably know, that rake jasmine
will start a webrick server serving your jasmine test suite under localhost:8888. You also probably know that you also can run your test suite using a selenium driver with the rake jasmine:ci
command. This will start a server, spawn of a [firefox][firefox] instance that navigates to the test suite and after it has run, it will tell in your console if it failed or succeeded.
Making it headless
But running firefox is slow. You really want to use a headless browser for testing it. It's also good for [jenkins]jenkins. So, why not use [PhantomJS][phantomjs]?
You do not know how?
Well, I didn't really do either, until yesterday when a colleague finally looked into the [jasmine-gem code][jasminegem]. It's simple (but undocumented), so here it goes:
Install PhantomJS and then add a file called spec/javascripts/support/jasmine_helper.rb
into your rails app with the following contents:
Jasmine.configure do |config|
config.browser = :phantomjs
end
Thats it. Just run
rake jasmine:ci` and see for yourself.
[jasmine]: http://pivotal.github.io/jasmine/
[firefox]: http://www.mozilla.org/firefox/
[jenkins]: http://jenkins-ci.org/
[phantomjs]: http://phantomjs.org/
[jasminegem]: https://github.com/pivotal/jasmine-gem
Written by Georg
Related protips
1 Response
Doing this on Ubuntu 12.04, hit a problem with Jasmine server not being found. Turned out I had an OLD version of PhantomJS (1.4) via apt package manager - so do make sure you get a later version from the site (1.9.1, currently).
Great tip - just what I was after