Tests often pass while production still fails because the system assumptions encoded in the suite are narrower than the conditions production actually creates.
Some bugs surface only under real traffic because production load changes timing, concurrency, and failure behavior even when code paths look identical.