# PeekAView ## What? This gem provides a Rails engine adds functionality to an application to show any of its views with stubbed data. ## Why? To get to a certain page in your application you may have to jump through more hoops than is convenient. Or it might be complicated to set up the necessary data. Or it may require external services to do something interesting. Or you want to run a validator on all your pages without being bothered by a login. ## How? Declare a dependency on this gem in your Gemfile gem 'peek-a-view' Mount the PeekAView engine in config/routes.rb if Rails.env.development? || Rails.env.test? mount PeekAView::Engine => '/peek-a-view' end Write view definitions in {spec|test}/peek_a_view.rb like this PeekAView.configure do |config| # Define stubbing methods or use the ones you already have for your tests. def stub_article ... end config.all_views do |v| v.current_user = User.new end config.view 'articles/index' do |v| v.articles = (1..10).map { |i| stub_article } end config.view 'articles/new', 'articles/edit' do |v| v.params = { id: '1' } # needed for URL generation v.article = stub_article end end Start your rails application and point your browser at http://localhost:3000/peek-a-view/ If everything went well, you see a list of links to your views. ## Checking & Reporting Peek-a-View includes a few Rake tasks and their support code for checking the stubbed views with. Currently supported are * the HTML5 validator from http://validator.nu/ * YSlow The checkers are available through these tasks rake peek-a-view:check # Run all checks rake peek-a-view:check:html # Check view markup with validator.nu rake peek-a-view:check:speed # Check views with YSlow and generate reports rake peek-a-view:report # Run all checks and generate reports rake peek-a-view:report:html # Check view markup with validator.nu and generate reports rake peek-a-view:report:speed # Check views with YSlow and generate reports Checks write their output to the console, reports generate xUnit-style (aka surefire) reports in reports/html_validator and reports/yslow respectively. These tasks have dependencies that are not explicitly declared for this gems. This is to avoid dragging in gems for task that you may not want to use. ### Requirements for HTML5 checking/reporting HTML5 checks require at instance of Validator.nu to be available at http://localhost:8888/ or whatever URI the environment variable HTML_VALIDATOR contains. You can obtain the sources for the validator from http://about.validator.nu/#src ### YSlow YSlow runs as a JavaScript in the headless browser PhantomJS. A version of the YSlow script itself is packaged with this gem. To use it, you need to install PhantomJS http://code.google.com/p/phantomjs/ This project rocks and uses MIT-LICENSE.