11# frozen_string_literal: true
22
3- require "spec_helper"
43require "image_size"
54require "pdf/reader"
65require "chunky_png"
76
87module Capybara
98 module Cuprite
109 describe Driver do
10+ let ( :device_pixel_ratio ) { @driver . device_pixel_ratio }
11+
1112 include Spec ::Support ::ExternalBrowser
1213
1314 around do |example |
@@ -24,11 +25,11 @@ def session_url(path)
2425 end
2526
2627 it "supports a custom path" do
27- original_path = "#{ CUPRITE_ROOT } /spec/support/chrome_path"
28+ original_path = "#{ PROJECT_ROOT } /spec/support/chrome_path"
2829 File . write ( original_path , @driver . browser . process . path )
2930
30- file = "#{ CUPRITE_ROOT } /spec/support/custom_chrome_called"
31- path = "#{ CUPRITE_ROOT } /spec/support/custom_chrome"
31+ file = "#{ PROJECT_ROOT } /spec/support/custom_chrome_called"
32+ path = "#{ PROJECT_ROOT } /spec/support/custom_chrome"
3233
3334 driver = Driver . new ( nil , browser_path : path )
3435 driver . browser
@@ -146,16 +147,15 @@ def session_url(path)
146147
147148 create_screenshot file
148149 File . open ( file , "rb" ) do |f |
149- expect ( ImageSize . new ( f . read ) . size ) . to eq (
150- @driver . evaluate_script ( "[window.innerWidth, window.innerHeight]" )
151- )
150+ expect ( ImageSize . new ( f . read ) . size ) . to eq ( @driver . viewport_size . map { |s | s * @driver . device_pixel_ratio } )
152151 end
153152
154153 create_screenshot file , full : true
155154 File . open ( file , "rb" ) do |f |
156- expect ( ImageSize . new ( f . read ) . size ) . to eq (
157- @driver . evaluate_script ( "[document.documentElement.scrollWidth, document.documentElement.scrollHeight]" )
158- )
155+ size = @driver . evaluate_script <<-JS
156+ [document.documentElement.scrollWidth, document.documentElement.scrollHeight]
157+ JS
158+ expect ( ImageSize . new ( f . read ) . size ) . to eq ( size . map { |s | s * device_pixel_ratio } )
159159 end
160160 end
161161
@@ -164,9 +164,7 @@ def session_url(path)
164164
165165 create_screenshot file , full : true
166166 File . open ( file , "rb" ) do |f |
167- expect ( ImageSize . new ( f . read ) . size ) . to eq (
168- @driver . evaluate_script ( "[window.innerWidth, window.innerHeight]" )
169- )
167+ expect ( ImageSize . new ( f . read ) . size ) . to eq ( @driver . viewport_size . map { |s | s * @driver . device_pixel_ratio } )
170168 end
171169 end
172170
@@ -183,7 +181,7 @@ def session_url(path)
183181 return [rect.width, rect.height];
184182 }();
185183 JS
186- expect ( ImageSize . new ( f . read ) . size ) . to eq ( size )
184+ expect ( ImageSize . new ( f . read ) . size ) . to eq ( size . map { | s | s * @driver . device_pixel_ratio } )
187185 end
188186 end
189187
@@ -194,9 +192,10 @@ def session_url(path)
194192 create_screenshot file , full : true , selector : "#penultimate"
195193
196194 File . open ( file , "rb" ) do |f |
197- expect ( ImageSize . new ( f . read ) . size ) . to eq (
198- @driver . evaluate_script ( "[document.documentElement.scrollWidth, document.documentElement.scrollHeight]" )
199- )
195+ size = @driver . evaluate_script <<-JS
196+ [document.documentElement.scrollWidth, document.documentElement.scrollHeight]
197+ JS
198+ expect ( ImageSize . new ( f . read ) . size ) . to eq ( size . map { |s | s * device_pixel_ratio } )
200199 end
201200 end
202201
@@ -214,11 +213,11 @@ def session_url(path)
214213
215214 describe "#save_screenshot" do
216215 let ( :format ) { :png }
217- let ( :file ) { "#{ CUPRITE_ROOT } /spec/tmp/screenshot.#{ format } " }
216+ let ( :file ) { "#{ PROJECT_ROOT } /spec/tmp/screenshot.#{ format } " }
218217
219218 after do
220- FileUtils . rm_f ( "#{ CUPRITE_ROOT } /spec/tmp/screenshot.pdf" )
221- FileUtils . rm_f ( "#{ CUPRITE_ROOT } /spec/tmp/screenshot.png" )
219+ FileUtils . rm_f ( "#{ PROJECT_ROOT } /spec/tmp/screenshot.pdf" )
220+ FileUtils . rm_f ( "#{ PROJECT_ROOT } /spec/tmp/screenshot.png" )
222221 end
223222
224223 def create_screenshot ( file , *args )
@@ -242,7 +241,7 @@ def create_screenshot(file, *args)
242241 end
243242
244243 it "supports rendering the page to file without extension when format is specified" do
245- file = "#{ CUPRITE_ROOT } /spec/tmp/screenshot"
244+ file = "#{ PROJECT_ROOT } /spec/tmp/screenshot"
246245 @session . visit ( "/" )
247246
248247 @driver . save_screenshot ( file , format : "jpg" )
@@ -253,19 +252,23 @@ def create_screenshot(file, *args)
253252 end
254253
255254 it "supports rendering the page with different quality settings" do
256- file2 = "#{ CUPRITE_ROOT } /spec/tmp/screenshot2.jpeg"
257- file3 = "#{ CUPRITE_ROOT } /spec/tmp/screenshot3.jpeg"
258- FileUtils . rm_f ( [ file2 , file3 ] )
255+ file2 = "#{ PROJECT_ROOT } /spec/tmp/screenshot2.jpeg"
256+ file3 = "#{ PROJECT_ROOT } /spec/tmp/screenshot3.jpeg"
257+ file4 = "#{ PROJECT_ROOT } /spec/tmp/screenshot4.#{ format } "
258+ FileUtils . rm_f ( [ file2 , file3 , file4 ] )
259259
260260 begin
261261 @session . visit ( "/" )
262+
262263 @driver . save_screenshot ( file , quality : 0 ) # ignored for png
263264 @driver . save_screenshot ( file2 ) # defaults to a quality of 75
264265 @driver . save_screenshot ( file3 , quality : 100 )
265- expect ( File . size ( file ) ) . to be > File . size ( file2 ) # png by defult is bigger
266+ @driver . save_screenshot ( file4 , quality : 60 ) # ignored for png
267+
268+ expect ( File . size ( file ) ) . to eq ( File . size ( file4 ) )
266269 expect ( File . size ( file2 ) ) . to be < File . size ( file3 )
267270 ensure
268- FileUtils . rm_f ( [ file2 , file3 ] )
271+ FileUtils . rm_f ( [ file2 , file3 , file4 ] )
269272 end
270273 end
271274
@@ -322,7 +325,7 @@ def create_screenshot(file, *args)
322325 end
323326
324327 describe "#render_base64" do
325- let ( :file ) { "#{ CUPRITE_ROOT } /spec/tmp/screenshot.#{ format } " }
328+ let ( :file ) { "#{ PROJECT_ROOT } /spec/tmp/screenshot.#{ format } " }
326329
327330 def create_screenshot ( file , *args )
328331 image = @driver . render_base64 ( format , *args )
@@ -644,7 +647,7 @@ def create_screenshot(file, *args)
644647 expect { @session . visit ( url ) }
645648 . to raise_error (
646649 Ferrum ::StatusError ,
647- %( Request to #{ url } failed to reach server, check DNS and server status)
650+ %r{ Request to http://nope: \d +/ failed \( net::ERR_NAME_NOT_RESOLVED \) }
648651 )
649652 end
650653
@@ -763,9 +766,9 @@ def create_screenshot(file, *args)
763766 @session . visit ( "/cuprite/with_js" )
764767 responses = @driver . network_traffic . map ( &:response )
765768 resources_size = {
766- %r{/cuprite/jquery.min.js$} => File . size ( "#{ CUPRITE_ROOT } /spec/support/public/jquery-1.11.3.min.js" ) ,
767- %r{/cuprite/jquery-ui.min.js$} => File . size ( "#{ CUPRITE_ROOT } /spec/support/public/jquery-ui-1.11.4.min.js" ) ,
768- %r{/cuprite/test.js$} => File . size ( "#{ CUPRITE_ROOT } /spec/support/public/test.js" )
769+ %r{/cuprite/jquery.min.js$} => File . size ( "#{ PROJECT_ROOT } /spec/support/public/jquery-1.11.3.min.js" ) ,
770+ %r{/cuprite/jquery-ui.min.js$} => File . size ( "#{ PROJECT_ROOT } /spec/support/public/jquery-ui-1.11.4.min.js" ) ,
771+ %r{/cuprite/test.js$} => File . size ( "#{ PROJECT_ROOT } /spec/support/public/test.js" )
769772 }
770773
771774 resources_size . each do |resource , size |
0 commit comments