Cucumber Directory Convention

I’ve been organizing Cucumber features in Rails apps using a strict directory convention:


The convention

All features go inside a directory named after a user type (including non-human users such as API clients).

  • Visitors are un-authenticated users.
  • Users are authenticated users.
  • Use domain-specific language. If authenticated users are “editors”, use features/editors instead of features/users.
  • No features are at the top level.


I believe the single-most important attribute of a well-written feature is that it clearly captures the mindset of an end user.

The convention keeps the vocabulary tight and enforces the concept that all stories should be written by walking a mile in the shoes of some one or some system.



Hound automatically reviews Ruby, JavaScript, CoffeeScript, and SCSS code in your GitHub pull requests and comments on style violations. It is free for open source repos and $12/month per private repo.