cucumber-fundamentals

Cucumber Fundamentals

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 "cucumber-fundamentals" with this command: npx skills add thebushidocollective/han/thebushidocollective-han-cucumber-fundamentals

Cucumber Fundamentals

Master the core concepts of Cucumber and Gherkin for behavior-driven development.

Gherkin Syntax

Use the Given-When-Then structure for scenarios:

Feature: User Authentication As a user I want to log in to the application So that I can access my account

Scenario: Successful login with valid credentials Given I am on the login page When I enter valid credentials And I click the login button Then I should be redirected to the dashboard And I should see a welcome message

Keywords

  • Feature: High-level description of a software feature

  • Scenario: Concrete example illustrating a business rule

  • Given: Context or preconditions

  • When: Action or event

  • Then: Expected outcome

  • And/But: Connect multiple steps

  • Background: Common preconditions for all scenarios

  • Scenario Outline: Template for multiple examples

  • Examples: Data table for Scenario Outline

Feature Files

Structure feature files logically:

Feature: Shopping Cart Management In order to purchase products As a customer I want to manage items in my shopping cart

Background: Given I am logged in as a customer And my shopping cart is empty

Scenario: Add product to cart When I add a "Laptop" to my cart Then my cart should contain 1 item And the cart total should be "$999.99"

Scenario: Remove product from cart Given I have a "Laptop" in my cart When I remove the "Laptop" from my cart Then my cart should be empty And the cart total should be "$0.00"

Scenario Outlines

Use data tables for parameterized tests:

Scenario Outline: Login with different user types Given I am on the login page When I log in as "<user_type>" Then I should see the "<dashboard>" dashboard And I should have "<permissions>" permissions

Examples: | user_type | dashboard | permissions | | admin | Admin | full_access | | user | User | limited_access | | guest | Public | read_only |

Tags

Organize and filter scenarios with tags:

@smoke @authentication Scenario: User login Given I am on the login page When I enter valid credentials Then I should be logged in

@wip Scenario: Password reset Given I am on the password reset page

Work in progress

Best Practices

  • Write declarative scenarios - Focus on what, not how

  • Keep scenarios independent - Each scenario should stand alone

  • Use domain language - Write in business terms, not technical implementation

  • One scenario, one behavior - Test one thing at a time

  • Avoid UI details in Given/When/Then - Stay at business logic level

Example: Good vs Bad Scenarios

❌ Bad (imperative, implementation-focused):

Scenario: Update user profile Given I navigate to "http://example.com/profile" When I find the element with id "firstName" And I clear the input field And I type "John" And I click the button with class "save-btn" Then I should see the text "Profile updated"

✅ Good (declarative, business-focused):

Scenario: Update user profile Given I am on my profile page When I update my first name to "John" Then my profile should be saved And I should see a success message

Data Tables

Pass structured data to steps:

Scenario: Register new user Given I am on the registration page When I fill in the registration form: | Field | Value | | First Name | John | | Last Name | Doe | | Email | john@example.com | | Password | SecurePass123! | Then I should be registered successfully

Doc Strings

Pass multi-line text to steps:

Scenario: Submit contact form Given I am on the contact page When I submit a message: """ Hello support team,

I have a question about my recent order #12345.
Please contact me at your earliest convenience.

Best regards,
John Doe
"""

Then I should see a confirmation message

Key Principles

  • Living Documentation: Features serve as executable specifications

  • Collaboration: Written by developers, testers, and business stakeholders

  • Ubiquitous Language: Use domain terminology consistently

  • Examples over Rules: Concrete examples clarify requirements

  • Automation: Scenarios are automated tests

Remember: Cucumber scenarios are specifications first, tests second. They document expected behavior in a language everyone understands.

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.

General

android-jetpack-compose

No summary provided by upstream source.

Repository SourceNeeds Review
General

fastapi-async-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

storybook-story-writing

No summary provided by upstream source.

Repository SourceNeeds Review
General

atomic-design-fundamentals

No summary provided by upstream source.

Repository SourceNeeds Review