Description

This is the HTML Tidy library built as a Ruby extension.

The original C source for Tidy can be found at http://tidy.sourceforge.net

You can read more about Tidy at http://www.w3.org/People/Raggett/tidy/

This version of Ruby Tidy is compatible enough with the Ruby wrapper around the standalone tidy to be called by Tarantula.

Usage


  require 'tidy'

  tidy = Tidy.open({:show_warnings => true}) do |tidy|
    xml = tidy.clean("<html><body>String</body></html>")
  end

When using cucumber to write tests, it might be useful to copy features/step_definitions/tidy_steps.rb into your project's step definitions.


  require 'tidy'

  Given /^(.+) is tidy$/ do |page_name|

    visit path_to(page_name)
    tidy = Tidy.open({:show_warnings => true}) do |tidy|
      out = tidy.clean(response.body)
    end

    tidy.errors.scan(/(\d+) warnings?, (\d+) errors? were found!/) do |w,e|
      warnings = w.to_i
      errors   = e.to_i
      unless warnings == 0 && errors == 0
        raise tidy.errors
      end
    end
  end

This allows you to write a cucumber feature like


  Scenario: visit the login page

    Given the login page is tidy

    And I am on the login page
    And I fill in "email" with "blah"
    And I fill in "password" with "blah"
    And I press "Log in"

If you want to run Tarantula on your Rails application, you may want to create a rake task lib/tasks/tarantula.rake that looks like:


  ENV["RAILS_ENV"] = "test" # so that rake tarantula:test always runs in your test env
  ENV["TIDY_PATH"] = "tidy" # Tarantula will not load Tidy if this is not set

  load File.join(RAILS_ROOT, Dir["vendor/gems/tarantula-*/tasks/*.rake"])

Installing

Using http://rubygems.org:


$ [sudo] gem install tidy-ext