Cucumber best practices, patterns, and anti-patterns
View on GitHubTheBushidoCollective/han
jutsu-cucumber
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-cucumber/skills/cucumber-best-practices/SKILL.md -a claude-code --skill cucumber-best-practicesInstallation paths:
.claude/skills/cucumber-best-practices/# Cucumber Best Practices Master patterns and practices for effective Cucumber testing. ## Scenario Design Principles ### 1. Write Declarative Scenarios Focus on **what** needs to happen, not **how** it happens. ❌ **Imperative** (implementation-focused): ```gherkin Scenario: Add product to cart Given I navigate to "http://shop.com/products" When I find the element with CSS ".product[data-id='123']" And I click the button with class "add-to-cart" And I wait for the AJAX request to complete Then the element ".cart-count" should contain "1" ``` ✅ **Declarative** (business-focused): ```gherkin Scenario: Add product to cart Given I am browsing products When I add "Wireless Headphones" to my cart Then my cart should contain 1 item ``` ### 2. One Scenario, One Behavior Each scenario should test exactly one business rule or behavior. ❌ **Multiple behaviors in one scenario:** ```gherkin Scenario: User registration and login and profile update Given I register a new account When I log in And I update my profile And I change my password Then everything should work ``` ✅ **Separate scenarios:** ```gherkin Scenario: Register new account When I register with valid details Then I should receive a confirmation email Scenario: Login with new account Given I have registered an account When I log in with my credentials Then I should see my dashboard Scenario: Update profile Given I am logged in When I update my profile information Then my changes should be saved ``` ### 3. Keep Scenarios Independent Each scenario should set up its own preconditions. ❌ **Dependent scenarios:** ```gherkin Scenario: Create order When I create order #12345 Scenario: View order When I view order #12345 # Depends on previous scenario! ``` ✅ **Independent scenarios:** ```gherkin Scenario: View order Given an order exists with ID "12345" When I view the order details Then I should see the order information ``` ### 4. Use Background W