bdd-patterns

Master Behavior-Driven Development patterns to write clear, business-readable specifications that drive implementation.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "bdd-patterns" with this command: npx skills add thebushidocollective/han/thebushidocollective-han-bdd-patterns

BDD Patterns

Master Behavior-Driven Development patterns to write clear, business-readable specifications that drive implementation.

Given-When-Then Structure

The fundamental BDD pattern uses three parts:

  • Given: The initial context or preconditions

  • When: The action or event being tested

  • Then: The expected outcome or result

Feature: User Authentication

Scenario: Successful login with valid credentials Given a registered user with email "user@example.com" And the user has password "secure123" When the user submits the login form with correct credentials Then the user should be redirected to the dashboard And a session should be created

Feature File Organization

Feature: Shopping Cart As a customer I want to manage items in my cart So that I can purchase products I'm interested in

Background: Given I am logged in as a customer And the product catalog is available

Scenario: Add item to empty cart Given my cart is empty When I add "Blue T-Shirt" to my cart Then my cart should contain 1 item And the cart total should be $29.99

Scenario: Remove item from cart Given my cart contains "Blue T-Shirt" When I remove "Blue T-Shirt" from my cart Then my cart should be empty

Scenario Outlines for Data-Driven Tests

Scenario Outline: Password validation Given I am on the registration page When I enter password "<password>" Then I should see "<message>"

Examples: | password | message | | abc | Password too short | | abcdefgh | Password needs a number | | abcdefgh1 | Password accepted | | abcdefgh1! | Password accepted |

Step Definition Patterns

Ruby/Cucumber example

Given('a registered user with email {string}') do |email| @user = User.create!(email: email, password: 'password123') end

When('the user submits the login form with correct credentials') do visit login_path fill_in 'Email', with: @user.email fill_in 'Password', with: 'password123' click_button 'Log In' end

Then('the user should be redirected to the dashboard') do expect(page).to have_current_path(dashboard_path) end

When to Use This Skill

Use bdd-patterns when you need to:

  • Write acceptance tests that stakeholders can understand

  • Define behavior before implementation

  • Create living documentation from tests

  • Bridge communication between developers and business

  • Ensure features meet business requirements

Best Practices

  • Write scenarios from the user's perspective

  • Keep scenarios focused on single behaviors

  • Use declarative language, not implementation details

  • Reuse step definitions across scenarios

  • Use Background for common setup steps

  • Keep feature files organized by domain area

Common Pitfalls

  • Writing scenarios that are too technical

  • Coupling steps to specific UI implementations

  • Creating overly complex scenario outlines

  • Not maintaining feature files as code changes

  • Mixing multiple behaviors in one scenario

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

typescript-type-system

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript-async-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

c-systems-programming

No summary provided by upstream source.

Repository SourceNeeds Review