Culerity integrates Cucumber and Celerity in order to test your application’s full stack.
Culerity lets you:
- run Celerity from within Cucumber which allows you to test the full stack of your Rails (or other web) application from Database to in browser JavaScript
- run your application in any Ruby (like MRI 1.8.6) while Celerity runs in JRuby so you can still use gems/plugins that would not work with JRuby
- reuse existing Webrat-Style step definitions
The following guide is written for a Rails application (tested with 2.2.2) but Culerity should work with any other Web Framework that is supported by Cucumber.
First download JRuby and unpack it to some location, for example $HOME/jruby. Make sure that the jruby executable is in your path. You can do this by either setting your PATH accordingly…
<pre> export PATH=$HOME/jruby/bin:$PATH</pre>
… or by creating a symlink from your bin directory:
<pre> ln -s $HOME/jruby/bin/jruby /usr/bin/jruby</pre>
Next install the celerity gem for JRuby:
<pre> jruby -S gem install celerity</pre>
Now (assuming you have a Rails application set up already) install Culerity as a Rails Plugin:
<pre> cd RAILS_ROOT
git clone git://github.com/langalex/culerity.git</pre>
or as a gem: (definitely preferred)
<pre> gem install langalex-culerity --source http://gems.github.com</pre>
Run the RSpec, Cucumber and Culerity generators:
<pre>
cd RAILS_ROOT
script/generate rspec
script/generate cucumber
script/generate culerity
</pre>
This creates the features folder and a file common_celerity.rb into your application. This file contains step definitions for basic interactions like clicking links or filling out forms.
After you have written a first feature you can run it just like you would run a standard cucumber feature. The only difference is that you have to start a web server (e.g. mongrel) with the test environment enabled beforehand.
NOTE: The default port for this server is 3001. You can change this in features/step_definitions/common_celerity.rb
script/server -p 3001 -e test
cucumber features/my_feature.feature
While Celerity is based on Java and requires JRuby to run, with Culerity you can still run your tests in your own Ruby Environment. When you run your features a separate JRuby process for Celerity is spawned and all Celerity Commands are redirected to this other process.
I get a broken pipe error:
- make sure JRuby is installed and in your path: running jruby -v should not produce an error
I get Connection Refused errors
- make sure you have started a server in the test environment that runs on port 3001
My application can’t find the data I create in my steps
- make sure you have disabled transactional fixtures in your env.rb
Written 2009 by Alexander Lang, contact alex[at]upstream-berlin.com or http://github.com/langalex, released under the MIT license