In a previous post I put up a small script that would dump out all step definitions available in a cucumber project. Here’s an updated version… it hasn’t changed much apart from the output is now a html table that for each step definition contains the regular expression, any regex modifiers, any parameters to the step definition and a link to the file that contains the definition.
Anyway, here’s the script:
step_definition_dir = "./features/steps"
f = File.new("output.htm", "w")
f << "<table><th>Regex</th><th>Modifiers</th><th>Step Definition Args</th><th>Source file</th>"
Dir.glob(File.join(step_definition_dir,'**/*.rb')).each do |step_file|
File.new(step_file).read.each_line do |line|
next unless line =~ /^\s*(?:Given|When|Then)\s+\//
matches = /(?:Given|When|Then)\s*\/(.*)\/([imxo]*)\s*do\s*(?:$|\|(.*)\|)/.match(line).captures
matches << step_file
f << "<tr>"
f << "<td>#{matches[0]}</td>"
f << "<td>#{matches[1]}</td>"
f << "<td>#{matches[2]}</td>"
f << "<td><a href=\"#{matches[3]}\">#{matches[3]}</a></td>"
f << "</tr>"
end
end
f << "</table>"
—— UPDATE ——
Turns out that in the latest version of cucumber (0.6.1) there’s a new formatter called stepdefs which prints out the step regexs and the step definition file that they live in. It doesn’t report regex modifiers or the step arguments – apart from that it’s great. Here’s how to use it:
cucumber -d -f stepdefs
…though it only seems to work for steps called in an ordinary scenario, not a scenario outline.
Is there an option to not list out the step definations when outputing to html file?
cucumber -f html –out report.html
Great idea! I found this via a gist that took the general concept and made a plain text Hirb table out of it. I updated the gist to follow gem dependencies as well: https://gist.github.com/1054553
Great stuff, if i only could get it working (since i got like 5min experience with ruby)
I really would like to have that script run on our cucumber setup to list whats available to use.
anyone got any pointers? talking about the link Steve posted.