module Selfie::DSL
Public Instance Methods
make_report()
click to toggle source
# File lib/selfie/dsl.rb, line 8 def make_report process_images File.write("snap.html", ERB.new(template).result(binding)) end
open_report()
click to toggle source
# File lib/selfie/dsl.rb, line 13 def open_report `open snap.html` end
process_images()
click to toggle source
# File lib/selfie/dsl.rb, line 17 def process_images @diff = [] @has_diff = Dir.exist? snap_reference_dir for snap in @snaps name = snap[:name] snap[:src] = src = "tmp/snap/current/#{name}.png" next unless @has_diff snap[:diff] = diff = "tmp/snap/current/#{name}_diff.png" snap[:ref] = ref = "#{snap_reference_dir}/#{name}.png" `compare #{ref} #{src} #{diff}` cmd = "convert #{ref} #{src} -compose Difference -composite -colorspace gray -format '%[fx:mean*100]' info:" snap[:psr] = (`#{cmd}`).strip.to_f snap[:changed] = snap[:psr] > snap[:threshold] @diff << snap if snap[:changed] end end
setup_selfie()
click to toggle source
# File lib/selfie/dsl.rb, line 54 def setup_selfie @snaps = [] @film = 0 `rm -rf tmp/snap/current` `mkdir -p tmp/snap/current` end
snap!(name, options={})
click to toggle source
# File lib/selfie/dsl.rb, line 40 def snap!(name, options={}) name = ("%03d" % @film += 1) + "_#{name}" path = "tmp/snap/current/#{name}.png" snap = {name: name, url: current_url} snap[:threshold] = 0 snap.merge!(options) @snaps << snap save_screenshot(path, :full => true) end
snap_reference_dir()
click to toggle source
# File lib/selfie/dsl.rb, line 3 def snap_reference_dir asset = self.class.name.gsub(/Test$/,'').underscore asset_dir = File.join 'test','assets', asset end
template()
click to toggle source
# File lib/selfie/dsl.rb, line 61 def template <<-ERB <style> body { color:#4a4a4a; background-color:#efefef; } .paper { border:1px solid #d0d0d0; font-family:helvetica; padding:20px; width:1500px; margin:50px auto; border:1px solid #efefef; border-radius:10px; background-color:white; } .no-ref { background-color:#efeeef;padding:10px; border-radius:5px; } p { word-wrap: break-word; } hr { border-color:#d0d0d0 } .results img { border:10px solid #efefef; width:720px; } .failed { color:#FF9999; } .img-failed img { border-color:#FF9999;} .logo {float:right;width:80px; border-radius:5px;width:60px;height:60px} </style> <title>Selfie results</title> <body> <div class='paper'> <img class='logo' title='Emile <3 you!' src='https://0.gravatar.com/avatar/aca8aad5245e144c9222102decb1776e&s=440'/> <h1 class='<%=(@diff.empty? ? "success" : "failed") %>'>Selfie - <%=(@diff.empty? ? "Lookin' good :)" : "Things changed") %></h1> <hr size=1/> <% unless @has_diff %> <div class='no-ref'>No reference images path defined in '<%=snap_reference_dir%>' - You can copy this: 'cp -R tmp/snap/current <%=snap_reference_dir%>' </div> <% end %> <div class='results'> <% unless @diff.empty? %> <h2>These <%=@diff.length%> snaps are different</h2> <% for snap in @diff %> <div class='<%=(snap[:changed] ? "img-failed" : "img-success")%>'> <h3><%=snap[:name]%> (<%=snap[:psr]%>)</h3> <p><%=snap[:url]%></p> <p><%=snap[:note]%></p> <a href='<%=snap[:src]%>'><img src='<%=snap[:src]%>'/ ></a> <a href='<%=snap[:diff]%>'><img src='<%=snap[:diff]%>'/ ></a> </div> <% end %> <hr size=1/> <% end %> <h2>All snaps</h2> <% for snap in @snaps %> <div class='<%=(snap[:changed] ? "img-failed" : "img-success")%>'> <h3><%=snap[:name]%> (<%=snap[:psr]%>)</h3> <p><%=snap[:url]%></p> <p><%=snap[:note]%></p> <a href='<%=snap[:src]%>'><img src='<%=snap[:src]%>'/ ></a> <a href='<%=snap[:diff]%>'><img src='<%=snap[:diff]%>'/ ></a> </div> <% end %> </div> </div> </body> ERB end