227b1f674d
TestCase wraps each test in a savepoint — when scrub_staging deletes all django_session rows inside that savepoint, the rollback restores any sessions committed by earlier tests (e.g. force_login in test_paths_return_200). Those restored rows then leaked into the e2e live-server tests, causing intermittent Session.MultipleObjectsReturned errors. TransactionTestCase flushes the DB before each test instead of using savepoints, giving scrub_staging a clean slate and removing the leakage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>