diff --git a/.gitignore b/.gitignore index 17fda0d..6c94d97 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ tmp index.html screenshots/ .DS_Store +chromedriver.log + diff --git a/bin/hollandaise b/bin/hollandaise index dcde070..6ba45ea 100755 --- a/bin/hollandaise +++ b/bin/hollandaise @@ -3,7 +3,7 @@ require 'thor' require 'builder' -$: << File.expand_path('../../lib') +$: << File.expand_path('../../lib', __FILE__) require 'hollandaise' require 'hollandaise/cli' diff --git a/hollandaise.gemspec b/hollandaise.gemspec index 657638c..3ffc5ab 100644 --- a/hollandaise.gemspec +++ b/hollandaise.gemspec @@ -18,6 +18,6 @@ Gem::Specification.new do |gem| gem.add_dependency 'sauce' gem.add_dependency 'capybara' gem.add_dependency 'thor' - gem.add_dependency 'builder' + gem.add_dependency 'arbre' end diff --git a/lib/hollandaise/browser/base.rb b/lib/hollandaise/browser/base.rb index 4eb9ae1..36cc230 100644 --- a/lib/hollandaise/browser/base.rb +++ b/lib/hollandaise/browser/base.rb @@ -1,6 +1,8 @@ module Hollandaise module Browser class Base + attr_reader :browser + def run(url) @url = url @@ -9,8 +11,11 @@ module Hollandaise selenium.execute_script %{window.resizeTo(1280, 1024)} end - def take_screenshot(target_dir) - target = target_for(target_dir) + def dir + @options[:dir] + end + + def take_screenshot target.parent.mkpath selenium.save_screenshot(target.to_s) diff --git a/lib/hollandaise/browser/sauce.rb b/lib/hollandaise/browser/sauce.rb index 61b2111..d4b5526 100644 --- a/lib/hollandaise/browser/sauce.rb +++ b/lib/hollandaise/browser/sauce.rb @@ -12,7 +12,7 @@ module Hollandaise @selenium ||= ::Sauce::Selenium2.new(info) end - def target_for(dir) + def target dir.join(@os.to_s).join("#{@browser} #{@version}.png") end diff --git a/lib/hollandaise/browser/selenium.rb b/lib/hollandaise/browser/selenium.rb index 319418e..00a0375 100644 --- a/lib/hollandaise/browser/selenium.rb +++ b/lib/hollandaise/browser/selenium.rb @@ -11,7 +11,7 @@ module Hollandaise @selenium ||= ::Selenium::WebDriver.for(@browser) end - def target_for(dir) + def target dir.join("#{@browser}.png") end end diff --git a/lib/hollandaise/cli.rb b/lib/hollandaise/cli.rb index 109e613..08413ae 100644 --- a/lib/hollandaise/cli.rb +++ b/lib/hollandaise/cli.rb @@ -1,3 +1,6 @@ +require 'arbre' +require 'pathname' + module Hollandaise class CLI < Thor desc "sauce URL BROWSER BROWSER...", "Take screenshots of a URL on Sauce Labs" @@ -13,43 +16,46 @@ module Hollandaise browsers = Hollandaise.browsers end - Hollandaise::Browsers.each(browsers, options) do |browser| + browser_objects = Hollandaise::Browsers.for(browsers, options.merge(:dir => dir)) + + browser_objects.each do |browser| begin browser.run(url) - browser.take_screenshot(dir) + browser.take_screenshot ensure browser.close end end - if false + html = Arbre::Context.new do + html do + head do + title "Sauce Labs screenshots for #{url}" + end - html = Builder::XmlMarkup.new - html.html { - html.head { - html.title { "Sauce Labs screenshots for #{url}" } - } + body do + table do + thead do + tr do + browser_objects.each do |browser| + th browser.browser + end + end + end - html.body { - html.table { - html.tr { - browsers.each { |browser| html.th(browser) } - } - - html.tr { - Hollandaise::Browsers.for(browsers).each { |browser| - html.td(:valign => 'top') { - html.img(:src => screenshot_target_for(browser)) - } - } - } - } - } - } + tbody do + browser_objects.each do |browser| + td(:valign => :top) do + img(:src => browser.target) + end + end + end + end + end + end + end File.open('index.html', 'wb') { |fh| fh.print html.to_s } - - end end default_task :sauce