Here are some potential caveats with BDD style testing:
1. The framework can feel too "magical" if it uses too much metaprogramming under the hood. The implementation details should not be obscured.
2. Descriptions can become too vague if they only state intentions at a very high level without concrete examples. Tests as documentation only works if the descriptions are clear and specific.
3. There is a risk of duplication if contexts or examples are not properly organized and nested. Descriptions should aim to be DRY.
4. Performance overhead of the framework if it does a lot of runtime reflection or string manipulation. The framework should have a small performance footprint.
5. Tests become brittle