Files
dance-lessons-coach/pkg/bdd/suite_feature.go
Gabriel Radureau 70c2eb554e
Some checks failed
CI/CD Pipeline / Build Docker Cache (push) Successful in 10s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m8s
🧪 test: implement per-scenario state isolation and enhance validate-test-suite.sh
- Add pkg/bdd/steps/scenario_state.go with thread-safe per-scenario state manager
- Update auth_steps.go, jwt_retention_steps.go to use per-scenario state accessors
- Add LastSecret and LastError fields to ScenarioState for JWT retention testing
- Update steps.go with SetScenarioKeyForAllSteps function
- Update suite.go to generate scenario keys and clear state properly
- Mark config hot-reload scenarios as @flaky (timing-sensitive)
- Fix validate-test-suite.sh: add -p 1 flag for sequential execution, filter JSON logs, add --count flag
- Add CONFIG_SCHEMA.md documenting configuration architecture
- Split greet tests into v1/v2 sub-tests with explicit v2 enable/disable

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-04-11 13:34:51 +02:00

79 lines
2.2 KiB
Go

package bdd
import (
"dance-lessons-coach/pkg/bdd/steps"
"dance-lessons-coach/pkg/bdd/testserver"
"os"
"github.com/cucumber/godog"
"github.com/rs/zerolog/log"
)
// FeatureSuiteContext holds feature-specific test suite context
type FeatureSuiteContext struct {
featureName string
client *testserver.Client
// Add other feature contexts as needed
}
// InitializeFeatureSuite initializes a feature-specific test suite
func InitializeFeatureSuite(ctx *godog.TestSuiteContext) {
featureName := os.Getenv("FEATURE")
if featureName == "" {
featureName = "all"
}
log.Debug().Str("feature", featureName).Msg("Initializing feature suite")
ctx.BeforeSuite(func() {
// Initialize shared server for this feature
server := testserver.NewServer()
if err := server.Start(); err != nil {
panic(err)
}
// Store server in a way that can be accessed by scenarios
// This would need to be properly implemented
})
ctx.AfterSuite(func() {
// Cleanup feature-specific resources
log.Debug().Str("feature", featureName).Msg("Cleaning up feature suite")
})
}
// InitializeFeatureScenario initializes a feature-specific scenario
func InitializeFeatureScenario(ctx *godog.ScenarioContext, client *testserver.Client) {
featureName := os.Getenv("FEATURE")
switch featureName {
case "auth":
// Initialize auth-specific context if needed
steps.InitializeAllSteps(ctx, client, nil)
case "config":
// Initialize config-specific context if needed
steps.InitializeAllSteps(ctx, client, nil)
case "greet":
// Initialize greet-specific context if needed
steps.InitializeAllSteps(ctx, client, nil)
case "health":
// Initialize health-specific context if needed
steps.InitializeAllSteps(ctx, client, nil)
case "jwt":
// Initialize JWT-specific context if needed
steps.InitializeAllSteps(ctx, client, nil)
default:
// Fallback to all steps for backward compatibility
steps.InitializeAllSteps(ctx, client, nil)
}
}
// CleanupFeatureSuite cleans up feature-specific resources
func CleanupFeatureSuite() {
featureName := os.Getenv("FEATURE")
log.Debug().Str("feature", featureName).Msg("Cleaning up feature suite")
// Feature-specific cleanup would go here
steps.CleanupAllTestConfigFiles()
}