 <p>Generally there are 2 approaches:</p> <h2><a href="https://github.com/cucumber/cucumber/wiki/Background">Backgrounds</a></h2> <p>If you want a set of steps to run before <em>each</em> of the scenarios in a feature file:</p> <pre><code>Background: given my app has started then enter "guest" in "user-field" and enter "1234" in "password-field" and press "login" then I will see "welcome" Scenario: Some scenario then *** here's the work specific to this scenario *** Scenario: Some other scenario then *** here's the work specific to this scenario *** </code></pre> <h2><a href="https://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions">Calling steps from step definitions</a></h2> <p>If you need the 'block' of steps to be used in different feature files, or a Background section is not suitable because some scenarios don't need it, then create a high-level step definition which calls the other ones:</p> <pre><code>Given /^I have logged in$/ do steps %Q { given my app has started then enter "guest" in "user-field" and enter "1234" in "password-field" and press "login" then I will see "welcome" } end </code></pre> <hr> <p>Also, in this case I'd be tempted <em>not</em> to implement your common steps as separate steps at all, but to create a single step definition: (assuming Capybara)</p> <pre><code>Given /^I have logged in$/ do fill_in 'user-field', :with =&gt; 'guest' fill_in 'password-field', :with =&gt; '1234' click_button 'login' end </code></pre> <p>This lends a little bit more meaning to your step definitions, rather than creating a sequence of page interactions which need to be mentally parsed before you realise 'oh, this section is logging me in'.</p>