I've always thought of Test Driven Development as a tool and not a religion that I have to devote myself to. When the client requests a features whose details have not been fully carved out, I won't write my tests first because I don't even have a clear vision of what I should be testing. In these cases I will typically start with mockups and UI work and move from the outside-in. This process is typically accompanied by Cucumber feature files if that is what the team is using.
I find that TDD is most beneficial when there is a clear spec that you are developing against and we don't always have that.
I do, however, always write unit tests. I try to write a unit test for every function I introduce into my application. I find it helps greatly with refactoring. I honestly have no idea how someone would be able to refactor code that has not unit tests behind it.