brentsnook edited this page Sep 13, 2010 · 21 revisions
Clone this wiki locally

Bumps extends Cucumber and allows you to pull feature content and push run results to and from a remote server.

Bumps has been designed to work with a Google Wave robot to allow feature text to be stored and edited inside of a wave. It should remain usable with any server that confirms to the push pull contract but will evolve in line with Wave technology.

Running Cucumber with Bumps

Ain’t nothing to it, after dropping in the right configuration, just run Cucumber as normal:


You must also remember the following things:

  • you can only specify a single feature directory
  • the default or provided feature directory must be creatable and writable
  • don’t feed your mogwai after midnight

You will of course also need a push/pull server running. If you just want to play around, try running the example server

   ruby feature_server feature_content_directory results_output_file

This example will serve all features from the given directory on a pull request and write any pushed results to the given results file.

How does it work?

Bumps extends Cucumber using the AfterConfiguration hook. A new hook is registered as the Bumps gem is required.

To perform a feature pull, Bumps effectively needs to jump right in front of Cucumber at the point it attempts to read feature files. This way bumps has access to the same configuration options that will be used by Cucumber (like the feature directory). Bumps also has the opportunity to write the feature files to disk before Cucumber attempts to read them.

To perform a push, Bumps registers a new custom wrapper formatter programatically. The wrapper formatter collects the results of running the nominated formatter (see configuration) and then pushes them off the the nominated URL.


  • doesn’t support authentication in any way
  • doesn’t support retrieval of a single file
  • hasn’t been tried with large volumes of feature files; if the current approach (bring everything over every time) becomes a problem then it will be addressed