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() }