<div dir="ltr">Perfect, thank you.<div><br></div><div>Jake</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 10 March 2016 at 17:19, Riccardo Tacconi <span dir="ltr"><<a href="mailto:rtacconi@gmail.com" target="_blank">rtacconi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="font-size:12.8px">file_contents == </span><span style="font-size:12.8px">web_contents.force_encoding(Encoding::UTF_8) # => true</span><br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On 10 March 2016 at 17:01, Jake Prime <span dir="ltr"><<a href="mailto:jake@team-prime.com" target="_blank">jake@team-prime.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div style="font-size:12.8px">Hello!</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I am trying to test that a specific image is present on a page. I'd like to be able to write something like this:<br></div><div style="font-size:12.8px"><font face="monospace, monospace"><br></font></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>expect(page).to have_image 'img.logo', file: '/path/to/logo/file.jpg'</b></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I don't want to test the value of the src attribute, I want to actually load the file and do a binary comparison with a copy of the same image. In my current Cucumber scenario there is a logo on a page, I have now uploaded a new logo and would like to check the correct image is being displayed.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I have been able to get this working using Capybara::Session#save_page as follows:</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><b><font face="monospace, monospace">def has_image?(selector, options = {})</font></b></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>  image_path = find(selector)[:src]</b></font></div><div style="font-size:12.8px"><b><font face="monospace, monospace">  original_path = current_path<br></font></b></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>  visit </b></font><b style="font-family:monospace,monospace">image_path</b></div><div style="font-size:12.8px"><b><font face="monospace, monospace">  match = IO.read(save_page) == IO.read(options[:file])</font></b></div><div style="font-size:12.8px"><b><font face="monospace, monospace">  visit original_path</font></b></div><div style="font-size:12.8px"><b><font face="monospace, monospace">  match</font></b></div><div style="font-size:12.8px"><b><font face="monospace, monospace">end</font></b></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">This works just fine with the default driver (although in an ideal world I'd rather not navigate off the current page and back). But it does not work with Selenium, as when you visit an image file Firefox creates a default HTML surround page to embed the image, and therefore this is what is saved and compared.<br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I tried using OpenURI, and got pretty close with this:</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>file_contents = open(options[:file]) { |f| f.read }</b></font></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>web_contents = open(</b></font><b style="font-family:monospace,monospace">image_path</b><font face="monospace, monospace"><b>) { |f| f.read }</b></font></div><div style="font-size:12.8px"><font face="monospace, monospace"><b>match = file_contents == web_contents</b></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">But it fails as it is comparing what appears to be a different character encoding:</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>file_contents[0..30]</div><div>\xFF\xD8\xFF\xE1\u001EWExif\u0000\u0000II*\u0000\b\u0000\u0000\u0000\u0010\u0000\u0000\u0001\u0003\u0000\u0001\u0000\u0000\u0000\xC0</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">web_contents[0..30]</div><div style="font-size:12.8px">\xFF\xD8\xFF\xE1\x1EWExif\x00\x00II*\x00\b\x00\x00\x00\x10\x00\x00\x01\x03\x00\x01\x00\x00\x00\xC0</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Can anyone help with this method, or suggest a better one?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Thanks</div></div>
<br></div></div>_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org" target="_blank">Chat@lists.lrug.org</a><br>
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/pipermail/chat-lrug.org</a><br>
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br>
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
<br></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Riccardo Tacconi<br><br><a href="http://github.com/rtacconi" target="_blank">http://github.com/rtacconi</a><br><a href="http://twitter.com/rtacconi" target="_blank">http://twitter.com/rtacconi</a></div></div>
</font></span></div>
<br>_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/pipermail/chat-lrug.org</a><br>
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br>
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
<br></blockquote></div><br></div>