A check for code written by coding agents
Slopbouncer flags tests that got weaker.
A coding agent's job is to make the checks pass. One way to do that is to weaken the check. Slopbouncer compares every test before and after a change and tells you which ones lost something.
It reads code and never runs it, so it takes seconds and is safe to put in any pipeline.
View on GitHub
Status: in development. Reads Ruby tests first.
What it flags
- An assertion removed from an existing test
- An expected value edited
- A test deleted, skipped or marked pending
- A test left with no assertions at all
What it leaves alone
- New tests added with new code (that is what test-driven development looks like)
- Tests that gained assertions
- Renamed or moved tests whose checks are unchanged
What a report looks like
$ slopbouncer main..HEAD test/basket_test.rb: Basket applies a voucher: skip_added: marked to be skipped test/checkout_test.rb: Checkout lets a guest pay: assertion_removed: assert_equal "paid", order.status test/refund_test.rb: Refund refunds part of an order: expected_value_changed: 100 → 90
Its limits
Slopbouncer catches tests that are visibly weaker. A test that looks thorough and checks nothing needs mutation testing, which is slower and runs the code. Use both: Slopbouncer on every change, mutation testing behind it.
It flags changes for a person to review. It does not block a merge unless you ask it to.