TDD requires you to manually predict every possible failure mode and edge case before starting work. It is obviously complete nonsense. Pure snake oil designed to sell training and consulting, not to produce working software.
The process should look more like: 1. write a test 2. make it pass 3. refactor 4. repeat
Generally, one would start with "the happy path" tests, not spending too much time testing for all the failure cases until the correct functionality of the overall feature works as intended.
Saying it's just designed to sell training and consulting is ridiculous.