Skill Improvements: - BDD Testing Skill: Enhanced step templates, debugging guides, and patterns - Gitea Client Skill: Added wiki management, issue tracking, and workflow monitoring - Product Owner Assistant: Improved user story workflow and documentation - Commit Message Skill: Better gitmoji integration and issue referencing - Changelog Manager: Enhanced change tracking and documentation - Skill Creator: Improved skill generation templates and validation - Swagger Documentation: Updated OpenAPI integration guides Key Features: - BDD best practices documentation - Gitea API client with wiki support - User story implementation workflow - Git commit message standardization - Skill development patterns - OpenAPI/Swagger documentation generation Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
3.3 KiB
Godog Pattern Requirements
This document captures the critical pattern requirements from our validated BDD implementation.
Important Requirements for Step Definitions
Step Pattern Matching
Godog has very specific requirements for step pattern matching. To avoid "undefined" warnings:
- Use the exact regex pattern that Godog suggests in its error messages
- Use the exact parameter names that Godog suggests (
arg1, arg2, etc.) - Match the feature file syntax exactly including quotes and JSON formatting
Example
Feature file step:
Then the response should be "{\"message\":\"Hello world!\"}"
Correct step definition:
ctx.Step(`^the response should be "{\"([^"]*)\":\"([^"]*)"}"$`, func(arg1, arg2 string) error {
// Implementation here
return nil
})
Incorrect patterns that cause "undefined" warnings:
// Wrong: Different regex pattern
ctx.Step(`^the response should be "{\"message\":\"([^"]*)"}"$`, func(message string) error {
// ...
})
// Wrong: Different parameter names
ctx.Step(`^the response should be "{\"([^"]*)\":\"([^"]*)"}"$`, func(key, value string) error {
// ...
})
Current Implementation Strategy
Step Definition Strategy
- First eliminate "undefined" warnings by using Godog's exact suggested patterns
- Return
godog.ErrPendinginitially to confirm pattern matching works - Then implement actual validation logic
Debugging "Undefined" Steps
If you see "undefined" warnings:
-
Run the tests to see Godog's suggested pattern:
go test ./features/... -v -
Copy the exact regex pattern from the error message
-
Copy the exact parameter names (
arg1, arg2, etc.) -
Update your step definition to match exactly
Common Mistakes
The "undefined" warnings are not a Godog bug - they occur when step definitions don't match Godog's expected patterns exactly:
- Using different regex patterns than what Godog suggests
- Using descriptive parameter names instead of
arg1, arg2 - Not escaping quotes properly in JSON patterns
- Trying to be "clever" with regex optimization
Solution: Always use the exact pattern and parameter names that Godog suggests in its error messages.
Best Practices
- Follow Godog's suggestions exactly - Copy-paste the pattern and parameter names
- Test pattern matching first - Use
godog.ErrPendingto verify patterns work - Then implement logic - Replace
godog.ErrPendingwith actual validation - Don't over-optimize regex - Use the patterns Godog provides, even if they seem verbose
- One pattern per step type - Use generic patterns to cover similar steps
Why This Matters
Godog's step matching is very specific by design:
- It needs to reliably match feature file steps to code
- It provides exact patterns to ensure consistency
- Following its suggestions guarantees your steps will be recognized
Remember: The "undefined" warnings are Godog telling you exactly how to fix your step definitions!
Critical Pattern Fix
File: pkg/bdd/steps/steps.go
Line: 80
Issue: Step pattern must use double escaping (4 backslashes + quote) not single escaping (2 backslashes + quote)
Pattern: ^the response should be "{\\"([^"]*)\\":\\"([^"]*)\\"}"$