I never liked how Webrat shows the complete response body for exceptions when integration testing rails applications. For the longest time I redefined the formatted_error method to simple do nothing. Today I used Nokogiri to parse out the good bits from that page. Here is the result. Not pretty, but it's working fine so far. Got a better example? Please share!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
module Webrat class Session def formatted_error doc = Nokogiri::HTML(response_body) exception_name = doc.css('head title').inner_html.squish exception_msg = doc.css('body h1').inner_html.squish exception_detail1 = "".tap do |detail| d = doc.css('body p')[0] detail << d.content.strip detail << d.next_sibling.content.squish end exception_detail2 = "".tap do |detail| d = doc.css('body p')[1] detail << d.content.strip detail << d.next_sibling.css('code').first.content.strip end app_trace = doc.css('#Application-Trace pre code').inner_html [exception_name, exception_msg, exception_detail1, exception_detail2, app_trace].join("\n") rescue "Could not format page exception. Perhaps try to use Nokogiri on this: \n#{response_body}" end end end |










