My logic doing what it's supposed to be doing doesn't mean my code is correct or bug-free, though. It means that the test I wrote passed. Front-end development is so visual that knowing an isolated chunk of logic is completing successfully in a vacuum is almost worthless. I'm going to have to manually test what I wrote no matter what I wrote. If you're releasing code just because you clicked the test button and it came back green, that's a hugely irresponsible practice.
There is a huge amount of technical debt created by writing tests for all of your code. The volume of testing code can approach if not eclipse the actual application logic, and tiny changes can require enormous refactoring not because your code needs it, but because the tests do. A colleague recently had to write an entire custom alert method just because normal alerts would break his testing environment. In the pursuit of better practices and better code, there's the very real danger of just creating enormous bloat and actually
slowing down your process, instead of speeding it up.
Testing is hugely important. I just don't think a blanket application of automation is always the right solution. Plenty of projects could make it to completion much leaner and more solidly with just manual testing. Especially if you have only a single developer per discipline with the majority of the code authorship/ownership.
I think this article makes some fair points in both directions:
http://ole-laursen.blogspot.com/2012/03/when-automated-tests-make-sense-and.html.