be_valid_asset gem

Gem: https://github.com/unboxed/be_valid_asset

Seems to work quite well so far, but a bit unsure whether a local utility is used or an online utility?! See https://github.com/unboxed/be_valid_asset/issues/12.

**Advance over the other gems:** also validates CSS and feeds!

Output:

```
1) Valid HTML5 Member is not signed up I do not exist as a member -> I sign in with valid username and password -> I see an invalid login message -> I should be signed out -> the page should be valid HTML5
     Screenshot: /Users/josh/Documents/Work/MuheimWebdesign/transition/tmp/capybara/screenshot_2014-01-02-23-26-38.569.png
     Failure/Error: And the page should be valid HTML5
        expected markup to be valid, but validation produced these errors:
       0001 : <!DOCTYPE html><html><head><title>Transition</title><link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet" /><script data-turbolinks-track="true" src="/assets/application.js"></script></head><body><header asdf="123" id="header" role="asdf"><aside id="mini_hub"><p>You are not signed in.</p><ul><li><a href="/members/sign_in">Login / register</a></li></ul></aside></header><p id="alert">Invalid login or password.</p><h2>Sign in</h2><form accept-charset="UTF-8" action="/members/sign_in" class="new_member" id="new_member" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div><div><label for="member_login">Login</label><br /><input autofocus="autofocus" id="member_login" name="member[login]" placeholder="Username or email" type="text" /></div><div><label for="member_password">Password</label><br /><input id="member_password" name="member[password]" type="password" /></div><div><input name="member[remember_me]" type="hidden" value="0" /><input id="member_remember_me" name="member[remember_me]" type="checkbox" value="1" /><label for="member_remember_me">Remember me</label></div><div><input name="commit" type="submit" value="Sign in" /></div></form><a href="/members/sign_up">Sign up</a><br /><a href="/members/password/new">Forgot your password?</a><br /><a href="/members/confirmation/new">Didn&#39;t receive confirmation instructions?</a><br /><a href="/members/unlock/new">Didn&#39;t receive unlock instructions?</a><br /></body></html>
       Invalid markup: line 1: Bad value asdf for attribute role on element header.
       Invalid markup: line 1: Attribute asdf not allowed on element header at this point.
     # ./spec/support/steps/global_steps.rb:6:in `block in <top (required)>'
     # ./spec/acceptance/members/valid_html.feature:9:in `the page should be valid HTML5'

Saved file /Users/josh/Documents/Work/MuheimWebdesign/transition/tmp/capybara/screenshot_2014-01-02-23-26-38.621.html
Rack::Test capybara driver has no ability to output screen shots. Skipping.
  2) Valid HTML5 Member is not signed up2 I do not exist as a member -> I sign in with valid username and password -> I see an invalid login message -> I should be signed out -> the CSS should be valid
     Screenshot: /Users/josh/Documents/Work/MuheimWebdesign/transition/tmp/capybara/screenshot_2014-01-02-23-26-38.621.png
     Failure/Error: And the CSS should be valid
        expected css to be valid, but validation produced these errors:
       0001 : html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}#mini_hub{display:inline;float:right;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px;border:1px solid blue;asdf:123;padding:100abc}
       Invalid css: line 1: Property asdf doesn't exist :
       Invalid css: line 1: Value Error :  padding (nullbox.html#propdef-padding)
               
                                       Unknown dimension
     # ./spec/support/steps/global_steps.rb:11:in `block in <top (required)>'
     # ./spec/acceptance/members/valid_html.feature:16:in `the CSS should be valid'
```