I have the following scenarios:
Scenario: Create a game with valid information
Given I am logged in
When I visit the new game page
And I fill in "Game type" with "Basketball"
And I fill in "Zip code" with "94040"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Awesome! Your game has been created."
Scenario: Create a game with missing information
Given I am logged in
When I visit the new game page
And I fill in "Zip code" with "94040"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Game type can't be blank."
As you can see I am repeating code and as a developer point of view, I hate that I am repeating some sentences in both scenarios. However, I assume that scenarios have to be independent clear, so any stakeholder can take a look and say..Oh, I know what this scenario is describing.
I am trying to test if my form validation is working correctly for different kind of field values. So, I will have many similar scenarios that will be basically changing the “fill in” parts. So, another similar/related scenario would be the one that checks that zip code has to be numeric:
Scenario: Create a game with invalid zip code
Given I am logged in
When I visit the new game page
And I fill in "Game type" with "Basketball"
And I fill in "Zip code" with "ffff"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Zip code has to contain 5 digits."
So, my question is: Is there any DRY, business people friendly way of doing this? I mean, a balance between code optimization and clear and understandable independent scenario definition?
I think scenario outline would suit you well.