Cucumber: How to find unused step definitions
Cucumber has an output format that prints step definitions only. You can use this to find unused ones:
- Temporarily add
require_relative 'env'to the top of the first file in features/support.
--dry-runmakes Cucumber skip loading
- Open a really wide terminal window.
bundle exec cucumber --dry-run --format stepdefs | grep -B1 'NOT MATCHED' --no-group-separator | grep features/step_definitions
This will print all unused step definitions from your project – however, the result will include false positives. Steps that are exclusively called from other steps will be in the list. Assure a step is not used before removing it.
If you remove the
--dry-run flag, all tests will actually run and you can skip adding the
require_relative line. It will take much longer, but provide more accurate results.