3 Things Nobody Tells You About BDD
Your Cucumber suite takes forty minutes to run. You cannot explain what a single feature file tests without reading layers of code.
Many teams adopt BDD because business stakeholders need to read tests. Then, those stakeholders stop reading. You end up with a maintenance nightmare.
Here are three truths about BDD.
- Gherkin is not a programming language
Stop writing test scripts in Gherkin. If your scenarios list every click and every field, you are doing it wrong.
Bad Gherkin:
- Given the user enters email "test@example.com"
- And the user enters password "Password123!"
- And the user clicks "Place Order"
Good Gherkin:
- Given the user has items ready to purchase
- When the user pays with a valid credit card
- Then the order is confirmed
The "how" lives in your step definitions. The "what" lives in your feature files. Keep your feature files simple so a product manager can read them in seconds.
- Step definitions are not a dependency graph
Do not make step definitions import other step definitions. This creates a tangled web. If one step fails, it poisons the entire state.
The fix is simple:
- Separate your page objects from your step definitions.
- Use a shared domain layer.
- Step definitions should be thin wrappers that call domain objects.
This makes your steps stateless. You can change one part of your code without breaking every other scenario.
- BDD is a documentation project
BDD is about communication, not just testing. The tests are a side effect.
If you optimize only for test coverage or execution speed, you lose the main goal. Your feature files should be the first thing a new engineer reads to understand your system.
If a person cannot understand your system by reading your feature files, your BDD suite has failed.
What to do tomorrow:
- Pick your worst feature file.
- Rewrite scenarios to be three to five lines long.
- Move data into step definitions or factories.
- Replace step-to-step imports with domain objects.
Can you explain your system to a new hire using only your feature files in five minutes? If not, start rewriting.
Optional learning community: https://t.me/GyaanSetuAi