cucumber-fundamentals
Core Cucumber concepts, Gherkin syntax, and feature file structure
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
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.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-04
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!