Cucumber has an output format that prints step definitions only. You can use this to find unused ones:
require_relative 'env'
to the top of the first file in features/support. --dry-run
makes Cucumber skip loading env.rb
.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.