🎯 refactor: implement comprehensive BDD test suite with modular architecture
Some checks failed
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Failing after 3m5s

 feat: add feature-based test organization per ADR 0024
🐛 fix: resolve compilation errors in suite_feature.go
📝 docs: add comprehensive BDD framework documentation
♻️ refactor: split monolithic tests into modular features
🧪 test: implement synchronization helpers and context management
 perf: add parallel test execution capability
🔧 chore: add feature-specific test scripts and validation
📚 docs: move BDD_TAGS.md to features/ for better organization

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-04-10 00:00:52 +02:00
parent de22839eb7
commit de2e03519e
22 changed files with 1257 additions and 120 deletions

View File

@@ -0,0 +1,29 @@
package auth
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
"github.com/cucumber/godog"
)
func TestAuthBDD(t *testing.T) {
// Set FEATURE environment variable for feature-specific configuration
os.Setenv("FEATURE", "auth")
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests - Auth Feature",
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
TestingT: t,
},
}
if suite.Run() != 0 {
t.Fatal("non-zero status returned, failed to run auth BDD tests")
}
}

View File

@@ -1,6 +1,7 @@
package features
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
@@ -8,13 +9,35 @@ import (
)
func TestBDD(t *testing.T) {
// Get feature name from environment variable or default to all features
feature := os.Getenv("FEATURE")
var paths []string
var suiteName string
if feature == "" {
// Run all features
suiteName = "dance-lessons-coach BDD Tests - All Features"
paths = []string{
"features/auth",
"features/config",
"features/greet",
"features/health",
"features/jwt",
}
} else {
// Run specific feature
suiteName = "dance-lessons-coach BDD Tests - " + feature + " Feature"
paths = []string{"features/" + feature}
}
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests",
Name: suiteName,
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
Paths: paths,
TestingT: t,
},
}

View File

@@ -0,0 +1,29 @@
package config
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
"github.com/cucumber/godog"
)
func TestConfigBDD(t *testing.T) {
// Set FEATURE environment variable for feature-specific configuration
os.Setenv("FEATURE", "config")
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests - Config Feature",
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
TestingT: t,
},
}
if suite.Run() != 0 {
t.Fatal("non-zero status returned, failed to run config BDD tests")
}
}

View File

@@ -1,17 +1,21 @@
# features/greet.feature
@greet @smoke
Feature: Greet Service
The greet service should return appropriate greetings
@basic
Scenario: Default greeting
Given the server is running
When I request the default greeting
Then the response should be "{\"message\":\"Hello world!\"}"
@basic
Scenario: Personalized greeting
Given the server is running
When I request a greeting for "John"
Then the response should be "{\"message\":\"Hello John!\"}"
@v2 @api
Scenario: v2 greeting with JSON POST request
Given the server is running with v2 enabled
When I send a POST request to v2 greet with name "John"

View File

@@ -0,0 +1,29 @@
package greet
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
"github.com/cucumber/godog"
)
func TestGreetBDD(t *testing.T) {
// Set FEATURE environment variable for feature-specific configuration
os.Setenv("FEATURE", "greet")
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests - Greet Feature",
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
TestingT: t,
},
}
if suite.Run() != 0 {
t.Fatal("non-zero status returned, failed to run greet BDD tests")
}
}

View File

@@ -1,7 +1,9 @@
# features/health.feature
@health @smoke @critical
Feature: Health Endpoint
The health endpoint should indicate server status
@basic @critical
Scenario: Health check returns healthy status
Given the server is running
When I request the health endpoint

View File

@@ -0,0 +1,29 @@
package health
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
"github.com/cucumber/godog"
)
func TestHealthBDD(t *testing.T) {
// Set FEATURE environment variable for feature-specific configuration
os.Setenv("FEATURE", "health")
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests - Health Feature",
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
TestingT: t,
},
}
if suite.Run() != 0 {
t.Fatal("non-zero status returned, failed to run health BDD tests")
}
}

29
features/jwt/jwt_test.go Normal file
View File

@@ -0,0 +1,29 @@
package jwt
import (
"os"
"testing"
"dance-lessons-coach/pkg/bdd"
"github.com/cucumber/godog"
)
func TestJWTBDD(t *testing.T) {
// Set FEATURE environment variable for feature-specific configuration
os.Setenv("FEATURE", "jwt")
suite := godog.TestSuite{
Name: "dance-lessons-coach BDD Tests - JWT Feature",
TestSuiteInitializer: bdd.InitializeTestSuite,
ScenarioInitializer: bdd.InitializeScenario,
Options: &godog.Options{
Format: "progress",
Paths: []string{"."},
TestingT: t,
},
}
if suite.Run() != 0 {
t.Fatal("non-zero status returned, failed to run jwt BDD tests")
}
}