Logo: Relish

  1. Sign up
  2. Sign in

Project: Cucumber

Background

In order to provide a context to my scenarios within a feature
As a feature editor
I want to write a background section in my features.

Background
Given
a file named "features/passing_background.feature" with:
Feature: Passing background sample

  Background:
    Given '10' cukes

  Scenario: passing background
    Then I should have '10' cukes    

  Scenario: another passing background
    Then I should have '10' cukes
And
a file named "features/scenario_outline_passing_background.feature" with:
Feature: Passing background with scenario outlines sample

  Background:
    Given '10' cukes

  Scenario Outline: passing background
    Then I should have '<count>' cukes
    Examples:
      |count|
      | 10  |

  Scenario Outline: another passing background
    Then I should have '<count>' cukes
    Examples:
      |count|
      | 10  |
And
a file named "features/background_tagged_before_on_outline.feature" with:
@background_tagged_before_on_outline
Feature: Background tagged Before on Outline

  Background: 
    Given passing without a table

  Scenario Outline: passing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 888   |
And
a file named "features/failing_background.feature" with:
Feature: Failing background sample

  Background:
    Given failing without a table
    And '10' cukes

  Scenario: failing background
    Then I should have '10' cukes

  Scenario: another failing background
    Then I should have '10' cukes
And
a file named "features/scenario_outline_failing_background.feature" with:
Feature: Failing background with scenario outlines sample

  Background:
    Given failing without a table

  Scenario Outline: failing background
    Then I should have '<count>' cukes
    Examples:
      |count|
      | 10  |

  Scenario Outline: another failing background
    Then I should have '<count>' cukes
    Examples:
      |count|
      | 10  |
And
a file named "features/pending_background.feature" with:
Feature: Pending background sample

  Background:
    Given pending

  Scenario: pending background
    Then I should have '10' cukes

  Scenario: another pending background
    Then I should have '10' cukes
And
a file named "features/failing_background_after_success.feature" with:
Feature: Failing background after previously successful background sample

  Background:
    Given passing without a table
    And '10' global cukes

  Scenario: passing background
    Then I should have '10' global cukes

  Scenario: failing background
    Then I should have '10' global cukes
And
a file named "features/multiline_args_background.feature" with:
Feature: Passing background with multiline args

  Background:
    Given table
      |a|b|
      |c|d|
    And multiline string
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """

  Scenario: passing background
    Then the table should be
      |a|b|
      |c|d|
    Then the multiline string should be
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """

  Scenario: another passing background
    Then the table should be
      |a|b|
      |c|d|
    Then the multiline string should be
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """
And
a file named "features/step_definitions/steps.rb" with:
def flunker
  raise "FAIL"
end

Given /^'(.+)' cukes$/ do |cukes| x=1
  raise "We already have #{@cukes} cukes!" if @cukes
  @cukes = cukes
end

Given(/^passing without a table$/) do
end

Given /^failing without a table$/ do x=1
  flunker
end

Given /^'(.+)' global cukes$/ do |cukes| x=1
  $scenario_runs ||= 0
  flunker if $scenario_runs >= 1
  $cukes = cukes
  $scenario_runs += 1
end

Then /^I should have '(.+)' global cukes$/ do |cukes| x=1
  $cukes.should == cukes
end

Then /^I should have '(.+)' cukes$/ do |cukes| x=1
  @cukes.should == cukes
end

Before('@background_tagged_before_on_outline') do
  @cukes = '888'
end

After('@background_tagged_before_on_outline') do
  @cukes.should == '888'
end
Scenarios
run a specific scenario with a background
When
I run cucumber -q features/passing_background.feature:9
Then
it should pass with exactly:
Feature: Passing background sample

  Background: 
    Given '10' cukes

  Scenario: another passing background
    Then I should have '10' cukes

1 scenario (1 passed)
2 steps (2 passed)
0m0.012s
run a feature with a background that passes
When
I run cucumber -q features/passing_background.feature
Then
it should pass with exactly:
Feature: Passing background sample

  Background: 
    Given '10' cukes

  Scenario: passing background
    Then I should have '10' cukes

  Scenario: another passing background
    Then I should have '10' cukes

2 scenarios (2 passed)
4 steps (4 passed)
0m0.012s
run a feature with scenario outlines that has a background that passes
When
I run cucumber -q features/scenario_outline_passing_background.feature
Then
it should pass with exactly:
Feature: Passing background with scenario outlines sample

  Background: 
    Given '10' cukes

  Scenario Outline: passing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 10    |

  Scenario Outline: another passing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 10    |

2 scenarios (2 passed)
4 steps (4 passed)
0m0.012s
run a feature with scenario outlines that has a background that passes
When
I run cucumber -q features/background_tagged_before_on_outline.feature
Then
it should pass with exactly:
@background_tagged_before_on_outline
Feature: Background tagged Before on Outline

  Background: 
    Given passing without a table

  Scenario Outline: passing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 888   |

1 scenario (1 passed)
2 steps (2 passed)
0m0.012s
run a feature with a background that fails
When
I run cucumber -q features/failing_background.feature
Then
it should fail with exactly:
Feature: Failing background sample

  Background: 
    Given failing without a table
      FAIL (RuntimeError)
      ./features/step_definitions/steps.rb:2:in flunker'
      ./features/step_definitions/steps.rb:14:in /^failing without a table$/'
      features/failing_background.feature:4:in `Given failing without a table'
    And '10' cukes

  Scenario: failing background
    Then I should have '10' cukes

  Scenario: another failing background
    Then I should have '10' cukes

Failing Scenarios:
cucumber features/failing_background.feature:7

2 scenarios (1 failed, 1 skipped)
6 steps (1 failed, 5 skipped)
0m0.012s
run a feature with scenario outlines that has a background that fails
When
I run cucumber -q features/scenario_outline_failing_background.feature
Then
it should fail with exactly:
Feature: Failing background with scenario outlines sample

  Background: 
    Given failing without a table
      FAIL (RuntimeError)
      ./features/step_definitions/steps.rb:2:in flunker'
      ./features/step_definitions/steps.rb:14:in /^failing without a table$/'
      features/scenario_outline_failing_background.feature:4:in `Given failing without a table'

  Scenario Outline: failing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 10    |

  Scenario Outline: another failing background
    Then I should have '<count>' cukes

    Examples: 
      | count |
      | 10    |

Failing Scenarios:
cucumber features/scenario_outline_failing_background.feature:6

2 scenarios (1 failed, 1 skipped)
4 steps (1 failed, 3 skipped)
0m0.012s
run a feature with a background that is pending
When
I run cucumber -q features/pending_background.feature
Then
it should pass with exactly:
Feature: Pending background sample

  Background: 
    Given pending

  Scenario: pending background
    Then I should have '10' cukes

  Scenario: another pending background
    Then I should have '10' cukes

2 scenarios (2 undefined)
4 steps (2 skipped, 2 undefined)
0m0.012s
background passes with first scenario but fails with second
When
I run cucumber -q features/failing_background_after_success.feature
Then
it should fail with exactly:
Feature: Failing background after previously successful background sample

  Background: 
    Given passing without a table
    And '10' global cukes

  Scenario: passing background
    Then I should have '10' global cukes

  Scenario: failing background
    And '10' global cukes
      FAIL (RuntimeError)
      ./features/step_definitions/steps.rb:2:in flunker'
      ./features/step_definitions/steps.rb:19:in /^'(.+)' global cukes$/'
      features/failing_background_after_success.feature:5:in `And '10' global cukes'
    Then I should have '10' global cukes

Failing Scenarios:
cucumber features/failing_background_after_success.feature:10

2 scenarios (1 failed, 1 passed)
6 steps (1 failed, 1 skipped, 4 passed)
0m0.012s
background with multline args
Given
a file named "features/step_definitions/multiline_steps.rb" with:
Given /^table$/ do |table| x=1
  @table = table
end

Given /^multiline string$/ do |string| x=1
  @multiline = string
end

Then /^the table should be$/ do |table| x=1
  @table.raw.should == table.raw
end

Then /^the multiline string should be$/ do |string| x=1
  @multiline.should == string
end
When
I run cucumber -q features/multiline_args_background.feature
Then
it should pass with exactly:
Feature: Passing background with multiline args

  Background: 
    Given table
      | a | b |
      | c | d |
    And multiline string
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """

  Scenario: passing background
    Then the table should be
      | a | b |
      | c | d |
    Then the multiline string should be
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """

  Scenario: another passing background
    Then the table should be
      | a | b |
      | c | d |
    Then the multiline string should be
      """
      I'm a cucumber and I'm okay. 
      I sleep all night and I test all day
      """

2 scenarios (2 passed)
8 steps (8 passed)
0m0.012s
https://rspec.lighthouseapp.com/projects/16211/tickets/329
Given
a file named "features/only_background_and_hooks.feature" with:
Feature: woo yeah

  Background: Whatever
    Given whatever
And
a file named "features/only_background_and_hooks_steps.rb" with:
begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end

Before do
  $before = true
end

After do
  $after = true
end

Given(/^whatever$/) { $before.should == true; $step = true }

at_exit do
  $before.should == true
  $step.should == true
  $after.should == true
end
When
I run cucumber features/only_background_and_hooks.feature
Then
it should pass with exactly:
Feature: woo yeah

  Background: Whatever # features/only_background_and_hooks.feature:3
    Given whatever     # features/only_background_and_hooks_steps.rb:11

0 scenarios
1 step (1 passed)
0m0.012s

Last published over 1 year ago by mattwynne.