[rspec-users] Straw Poll: How are you using plain text stories (in rails)?

Ben Mabey ben at benmabey.com
Wed Aug 6 10:43:17 EDT 2008

Matt Wynne wrote:
> Interesting. On the surface HtmlUnit looks just like webrat - what's the 
> difference?
HtmlUnit is quite different.  It is a language/framework agnostic way to 
test any webapp *including* the app's JS.  All of this, even the JS, is 
in memory and does not require a browser just like webrat.  It does the 
JS by using Rhino, Java's implementation of JS.  At the moment, webrat 
is tied to rails integration testing framework (their are forks that 
allow merb testing as well that I have used successfully.)  As Joseph 
said their is currently some work to wrap the webrat API around 
Selenuin, mechanize, etc, that would break it's dependence on the 
integration testing framework in rails.  Having it tied to the 
integration framework does give you some flexibility though and is most 
likely faster.

To answer your original question on how people are using it... In the 
past project I did I ended up with 100+ scenarios all using webrat.  We 
decided to make the entire site with UJS (unobtrusive JS) which lent it 
self to testing it with webrat.  The extra JS we added we have not yet 
wrapped stories around it so we have a manual testing cycle before each 
major deployment.  On the current project I'm on we are going to be 
using JS heavily and will most likely leverage HtmlUnit (Celerity) in 
our stories to keep them all in-memory.  If your app is not extremely JS 
dependent then I would recommend the UJS + webrat route.

> If you are using JRuby a nice tool which wraps the Java HtmlUnit is
> Celerity:
> http://celerity.rubyforge.org/
> At the moment I'm yet to see something like HtmlUnit on the ruby
> platform. I watch Celerity in envy :)

Have you seen Johnson yet?

It's goal is to wrap Mozilla's JS engine written in C, SpiderMonkey, in 
ruby.  With this equivalent solution in place like Java's Rhino it will 
be possible to create an HtmlUnit like testing framwork entirely in Ruby 
and perhaps just extend webrat to get JS functionality.  I have not yet 
realll played around with it and I haven't been able to find any posts 
about how to use it..  but it is something to keep your eye on.

Johnson seems young so, as I said earlier, we will probably try to use 
the more mature HtmlUnit (a'la JRuby) to do our in-memory JS testing.


More information about the rspec-users mailing list