David Talbot
David Talbot

Reputation: 151

Re-use scenarios on multiple pages

I am new to Specflow and need a way to reuse scenarios in multiple feature files.

I have a web application consisting of multiple pages that each share a many items such as footer content. Say my footer contains 3 links:

Help | Feedback | FAQ

I have a scenario to test the "Help" link functionality:

Scenario: Help link
    Given I am on page1
    When  I click on the link containing text "Help"
    Then  I see the help popup

As the "Given" statement specifies which page to open, the scenario is tied to that page. In order to test the same help link functionality on page2, page3, page4, etc., I would need to:

1) Copy the scenario into another feature file

2) Change the given statement to reference the correct page

3) Repeat for all pages containing the help link!

This seems like an awful lot of duplication and there must be a better way to do this.

Upvotes: 2

Views: 1196

Answers (2)

diabolist
diabolist

Reputation: 4099

You can't test everything when you work at this level. In fact you can only test a fraction of whats possible. So what you have to do is think about what benefit you get for testing the footer on each other page, and see if this is worth the cost of

  1. Writing the tests
  2. Running the tests

Secondly you don't need to repeat all the tests for each page. If the links work on one page then they will work on every other page, so you could test the links once, and then subsequently check that the footer appears on other pages e.g.

Feature: Footer checks

Scenario: Footer appears on pages
  Given a selection of pages
  When each page is visited
  Then each page should have the footer

and have your selection of pages be a random small sample from all the pages.

Upvotes: 1

Greg Burghardt
Greg Burghardt

Reputation: 18783

You can use a Scenario Outline, which is basically a data driven test:

Scenario Outline: Help link
    Given I am on <Page>
    When I click on the link containing text "Help"
    Then I see the help popup

Examples:
    | Page       |
    | Home       |
    | Contact Us |
    | About Us   |

Upvotes: 2

Related Questions