Reduce BCrypt cost for faster password hashing in tests #157
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Set BCrypt::Engine.cost to MIN_COST (4) in test environment to speed up password hashing operations
Why
BCrypt's default cost factor (12) is designed for production security, where slow hashing protects against brute-force attacks. In tests, we're validating logic—not defending against attackers—so we can safely use the minimum cost without compromising test validity.
Benchmark Results
Result: ~63% faster test suite execution
Details
BCrypt Cost Benchmark Comparison
Date: Fri Jan 2 16:30:17 IST 2026
BEFORE (without BCrypt optimization) (main)
→ Run 1: 11.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips
→ Run 2: 10.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips
→ Run 3: 9.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips
AFTER (with BCrypt optimization) (reduce-bcrypt-cost-in-tests)
→ Run 1: 4.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips
→ Run 2: 3.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips
→ Run 3: 4.0s - 259 runs, 742 assertions, 0 failures, 0 errors, 0 skips