スキル一覧に戻る
lukasngl

godogen

by lukasngl

colocate godog step definitions with their patterns

0🍴 0📅 2026年1月10日
GitHubで見るManusで実行

SKILL.md


name: godogen description: Get help with Godogen BDD development - step definitions, CLI commands, configuration, and troubleshooting

Godogen Reference

Godogen is a Go code generator for godog BDD step definitions. It allows you to colocate step patterns with their implementations using directive comments.

Quick Install

go install github.com/lukasngl/godogen@latest
go install github.com/lukasngl/godogen/godogen-language-server@latest

For more options (Go 1.24+ tool directive, Nix flake, editor setup), see Installation.

Writing Step Definitions

Step definitions are Go functions with //godogen: directive comments:

//godogen:given ^I am logged in as "([^"]*)"$
func (s *Suite) iAmLoggedInAs(username string) error {
    return nil
}

//godogen:when ^I click the "([^"]*)" button$
func (s *Suite) iClickButton(name string) error {
    return nil
}

//godogen:then ^I should see "([^"]*)"$
func (s *Suite) iShouldSee(text string) error {
    return nil
}

Directive Types

DirectiveGenerated CodeUse Case
//godogen:step <pattern>ctx.Step(pattern, fn)Matches Given/When/Then
//godogen:given <pattern>ctx.Given(pattern, fn)Preconditions
//godogen:when <pattern>ctx.When(pattern, fn)Actions
//godogen:then <pattern>ctx.Then(pattern, fn)Assertions
//godogen:beforectx.Before(fn)Before scenario hook
//godogen:afterctx.After(fn)After scenario hook
//godogen:before_stepctx.StepContext().Before(fn)Before step hook
//godogen:after_stepctx.StepContext().After(fn)After step hook

Pattern Requirements

  • Patterns must start with ^ and end with $ (anchored regex)
  • Use ([^"]*) for quoted string captures
  • Use (\d+) for integer captures
  • Escape special characters: \., \(, \), etc.

Valid Return Types

Step functions can return:

  • error
  • context.Context
  • (context.Context, error)
  • godog.Steps
  • nothing (void)

Running the Generator

# In directory with go:generate directive
go generate ./...

# Or run godogen directly
godogen

# With Go 1.24+ tool directive
go tool godogen

The generator creates *_initializer.go files with step registration functions.

CLI Commands

The godogen-language-server provides CLI commands for analysis:

diagnose

Find issues in your BDD test suite:

godogen-language-server diagnose                    # All issues
godogen-language-server diagnose --severity error   # Only errors
godogen-language-server diagnose --format json      # JSON output

Reports:

  • Undefined steps (error): Feature steps without definitions
  • Ambiguous steps (warning): Steps matching multiple definitions
  • Duplicate definitions (error): Same pattern defined twice
  • Unused definitions (hint): Steps not used in features
  • Invalid patterns (error): Missing anchors or invalid regex

list-steps

List step definitions:

godogen-language-server list-steps                  # All steps
godogen-language-server list-steps --kind When      # Only When steps
godogen-language-server list-steps --format json    # JSON output

find-definition

Navigate from feature step to Go definition:

godogen-language-server find-definition features/login.feature:10

find-references

Find feature steps using a definition:

godogen-language-server find-references steps/auth.go:15:1

hover

Get info about a position:

godogen-language-server hover features/login.feature:10:5

symbols

List symbols in a file:

godogen-language-server symbols features/login.feature
godogen-language-server symbols steps/auth.go

Global Flags

All commands support:

  • --root <dir> - Workspace root (default: .)
  • --config <file> - Config file path
  • --format, -f <text|json> - Output format

Configuration

Create .godogen-language-server.json in your project root:

{
  "stepPatterns": ["**"]
}

The config file is optional. By default, the language server watches all files (**).

Common configurations:

{
  "stepPatterns": [
    "**/*_steps.go",
    "**/*.feature"
  ]
}

For more patterns (monorepo, external features), see Project Organization.

CI/CD Integration

# Fail on any errors
godogen-language-server diagnose --severity error
if [ $? -ne 0 ]; then
  echo "BDD validation failed"
  exit 1
fi

Exit codes:

  • 0: No issues at the requested severity level
  • 1: Issues found or error running command

Detailed Guides

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です