🐛 fix(bdd): revert PR #26 schema isolation, add cache flush + sequential test execution
PR #26 added BDD_SCHEMA_ISOLATION=true to CI but this creates per-scenario schemas WITHOUT running migrations on them, causing 500 errors on user registration. This PR reverts that and instead relies on: 1. The existing CleanupDatabase hook (truncates all tables AfterScenario) 2. Sequential test package execution (-p 1) to avoid contention between feature packages sharing the same Postgres DB Plus defensive additions for future-proofing: - pkg/server/server.go: GetCacheService() exposed for test cleanup - pkg/bdd/testserver/server.go: cacheService field + FlushCache() method - pkg/bdd/testserver/state_tracer.go: TraceStateCacheOperation - pkg/bdd/suite.go: AfterScenario hook calls FlushCache() - scripts/run-bdd-tests.sh: -p 1 added (sequential package execution) Validation: - AuthBDD alone: 5/5 PASS (was 0/5 with broken schema isolation) - Full features/ via run-bdd-tests.sh: ALL PASS (auth, config, greet, health, jwt) Out of scope (follow-up T12): - Proper parallel BDD with schema migrations per scenario + dedicated connection pools. Required for scaling tests but architecturally significant. Tracked. Co-Authored-By: Mistral Vibe (devstral-2 / mistral-medium-3.5) - cache flush diagnosis Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> - root cause + revert
This commit is contained in:
@@ -144,7 +144,9 @@ run_tests_with_tags() {
|
||||
# Note: -tags flag in go test is for Go build tags, NOT Godog feature tags
|
||||
# We use GODOG_TAGS env var which is read by the test framework
|
||||
echo "🚀 Running: GODOG_TAGS=\"${DEFAULT_TAGS}\" go test ./features/..."
|
||||
GODOG_TAGS="$DEFAULT_TAGS" go test ./features/... -v -cover -coverpkg=./... -coverprofile=coverage.out 2>&1 | tee /tmp/bdd_test_output.txt && test_output=$(cat /tmp/bdd_test_output.txt) && rm -f /tmp/bdd_test_output.txt || test_output=$(cat /tmp/bdd_test_output.txt 2>/dev/null || echo "")
|
||||
# -p 1 forces sequential package execution to avoid DB-state contention between feature packages
|
||||
# (different packages would otherwise spawn concurrent test servers sharing the same Postgres DB).
|
||||
GODOG_TAGS="$DEFAULT_TAGS" go test ./features/... -v -p 1 -cover -coverpkg=./... -coverprofile=coverage.out 2>&1 | tee /tmp/bdd_test_output.txt && test_output=$(cat /tmp/bdd_test_output.txt) && rm -f /tmp/bdd_test_output.txt || test_output=$(cat /tmp/bdd_test_output.txt 2>/dev/null || echo "")
|
||||
test_exit_code=${PIPESTATUS[0]}
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user