I currently have a project with a pretty large pile of Cucumber
Before('@broken') do |scenario|
Given /^PENDING/ do
According to your comment, you are using cucumber-1.3.10. It is not possible with that version.
In cucumber-jvm and cucumber-js it works as expected marking the scenario as pending, but surprisingly in ruby, if the Pending exception is thrown from the Before (or After) hook, it will mark the scenario as failed instead of pending.
So your first suggestion was right. You should use a tagged hook.
Before('@broken') do pending end
But you will have to update your Gemfile to use the latest version of cucumber, that is 2.0.0.beta.3 at this moment.
source 'https://rubygems.org' group :test do gem 'cucumber', '2.0.0.beta.3' end
Then the output will be as expected, marked as pending (not skipped as there is no such thing as a skipped scenario, only passed/failed/pending/undefined/skipped steps and passed/failed/pending/undefined scenarios).
Hope this helps.