assert_valid_markup plugin for Rails¶ ↑
Validate your (X)HTML from within your functional tests. If anything changes to invalidate your markup, you’ll know pronto.
If xmllint/xmlcatalog are available in your PATH, this plugin will use them to validate your xml. When doing so, it will automatically fetch and cache all DTDs locally so that you don’t incur a network hit on future runs.
Otherwise, validations will be done using the W3C Validator web service (validator.w3.org/). Responses from the web service are cached, so your tests aren’t slowed down unless something has changed.
Installation¶ ↑
Install as a gem:
gem install assert_valid_markup
and edit config/environments/test.rb:
config.gem 'assert_valid_markup'
or install as a plugin:
./script/plugin install http://github.com/wr0ngway/assert_valid_markup
Usage¶ ↑
Calling the assertion with no parameters validates whatever is in @request.body, which is automatically set by the existing get/post/etc helpers. For example:
class FooControllerTest < Test::Unit::TestCase def test_bar_markup get :bar assert_valid_markup end end
Add a string parameter to the assertion to validate any random fragment. Por ejemplo:
class FooControllerTest < Test::Unit::TestCase def test_bar_markup assert_valid_markup "<div>Hello, world.</div>" end end
For the ultimate in convenience, use the class-level methods to validate a slew of actions in one line. Par exemple:
class FooControllerTest < Test::Unit::TestCase assert_valid_markup :bar, :baz, :qux end # automatically validate all GETs in BarControllerTest class BarControllerTest < Test::Unit::TestCase assert_all_valid_markup end # Add this to test_helper to automatically validate the responses for ALL GETs in ALL controllers class ActionController::TestCase < ActiveSupport::TestCase assert_all_valid_markup end
Credits¶ ↑
Scott Raymond <sco@scottraymond.net>. Released under the MIT license. Matt Conway <matt@conwaysplace.com> (xmllint additions) Latest version: github.com/wr0ngway/assert_valid_markup