diff --git a/features/BDD_TAGS.md b/features/BDD_TAGS.md index 5be7165..08b1b8f 100644 --- a/features/BDD_TAGS.md +++ b/features/BDD_TAGS.md @@ -65,7 +65,26 @@ GODOG_TAGS="@jwt && ~@todo" go test ./features/... DLC_DATABASE_HOST=localhost GODOG_TAGS="@wip" go test ./features/jwt/... ``` -**Default Behavior:** If `GODOG_TAGS` is not set, the test uses the default tag filter: `~@flaky && ~@todo && ~@skip` +### Stop On Failure Control +You can control whether tests stop on first failure using the `GODOG_STOP_ON_FAILURE` environment variable. + +**Usage:** +```bash +# Stop on first failure (strict mode) +GODOG_STOP_ON_FAILURE="true" go test ./features/jwt/... + +# Continue after failures (lenient mode) +GODOG_STOP_ON_FAILURE="false" go test ./features/jwt/... + +# Combine with tag filtering +GODOG_TAGS="@wip" GODOG_STOP_ON_FAILURE="true" go test ./features/jwt/... +``` + +**Default Behavior:** +- If `GODOG_TAGS` is not set, the test uses the default tag filter: `~@flaky && ~@todo && ~@skip` +- If `GODOG_STOP_ON_FAILURE` is not set, each feature uses its default: + - `jwt`, `greet`, `auth`, `health`: `true` (stop on failure) + - `config`, `all features`: `false` (continue after failures) ## Usage Examples diff --git a/features/auth/auth_test.go b/features/auth/auth_test.go index d677047..8171a48 100644 --- a/features/auth/auth_test.go +++ b/features/auth/auth_test.go @@ -20,6 +20,12 @@ func TestAuthBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := true // Default for auth tests + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: "dance-lessons-coach BDD Tests - Auth Feature", TestSuiteInitializer: bdd.InitializeTestSuite, @@ -30,7 +36,7 @@ func TestAuthBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, } diff --git a/features/bdd_test.go b/features/bdd_test.go index 2681235..6c74aa5 100644 --- a/features/bdd_test.go +++ b/features/bdd_test.go @@ -39,6 +39,12 @@ func TestBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := false // Default for all features test (don't stop on failure) + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: suiteName, TestSuiteInitializer: bdd.InitializeTestSuite, @@ -49,7 +55,7 @@ func TestBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, } diff --git a/features/config/config_test.go b/features/config/config_test.go index be888b4..ec6a7b1 100644 --- a/features/config/config_test.go +++ b/features/config/config_test.go @@ -20,6 +20,12 @@ func TestConfigBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := false // Default for config tests (don't stop on failure) + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: "dance-lessons-coach BDD Tests - Config Feature", TestSuiteInitializer: bdd.InitializeTestSuite, @@ -30,7 +36,7 @@ func TestConfigBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, } diff --git a/features/greet/greet_test.go b/features/greet/greet_test.go index 4c52e43..0b1c1a3 100644 --- a/features/greet/greet_test.go +++ b/features/greet/greet_test.go @@ -20,6 +20,12 @@ func TestGreetBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := true // Default for greet tests + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: "dance-lessons-coach BDD Tests - Greet Feature", TestSuiteInitializer: bdd.InitializeTestSuite, @@ -30,7 +36,7 @@ func TestGreetBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, } diff --git a/features/health/health_test.go b/features/health/health_test.go index fab16f8..b6fab8b 100644 --- a/features/health/health_test.go +++ b/features/health/health_test.go @@ -20,6 +20,12 @@ func TestHealthBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := true // Default for health tests + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: "dance-lessons-coach BDD Tests - Health Feature", TestSuiteInitializer: bdd.InitializeTestSuite, @@ -30,7 +36,7 @@ func TestHealthBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, } diff --git a/features/jwt/jwt_test.go b/features/jwt/jwt_test.go index 31feba2..c3e1247 100644 --- a/features/jwt/jwt_test.go +++ b/features/jwt/jwt_test.go @@ -20,6 +20,12 @@ func TestJWTBDD(t *testing.T) { tags = "~@flaky && ~@todo && ~@skip" } + // Allow stop on failure override via environment variable + stopOnFailure := true // Default for JWT tests + if envStop := os.Getenv("GODOG_STOP_ON_FAILURE"); envStop != "" { + stopOnFailure = envStop == "true" || envStop == "1" + } + suite := godog.TestSuite{ Name: "dance-lessons-coach BDD Tests - JWT Feature", TestSuiteInitializer: bdd.InitializeTestSuite, @@ -30,7 +36,7 @@ func TestJWTBDD(t *testing.T) { TestingT: t, Strict: true, Randomize: -1, - StopOnFailure: false, + StopOnFailure: stopOnFailure, Tags: tags, }, }