1
1
# frozen_string_literal: true
2
2
3
- require "spec_helper"
4
3
require "image_size"
5
4
require "pdf/reader"
6
5
require "chunky_png"
7
6
8
7
module Capybara
9
8
module Cuprite
10
9
describe Driver do
10
+ let ( :device_pixel_ratio ) { @driver . device_pixel_ratio }
11
+
11
12
include Spec ::Support ::ExternalBrowser
12
13
13
14
around do |example |
@@ -24,11 +25,11 @@ def session_url(path)
24
25
end
25
26
26
27
it "supports a custom path" do
27
- original_path = "#{ CUPRITE_ROOT } /spec/support/chrome_path"
28
+ original_path = "#{ PROJECT_ROOT } /spec/support/chrome_path"
28
29
File . write ( original_path , @driver . browser . process . path )
29
30
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"
32
33
33
34
driver = Driver . new ( nil , browser_path : path )
34
35
driver . browser
@@ -146,16 +147,15 @@ def session_url(path)
146
147
147
148
create_screenshot file
148
149
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 } )
152
151
end
153
152
154
153
create_screenshot file , full : true
155
154
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 } )
159
159
end
160
160
end
161
161
@@ -164,9 +164,7 @@ def session_url(path)
164
164
165
165
create_screenshot file , full : true
166
166
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 } )
170
168
end
171
169
end
172
170
@@ -183,7 +181,7 @@ def session_url(path)
183
181
return [rect.width, rect.height];
184
182
}();
185
183
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 } )
187
185
end
188
186
end
189
187
@@ -194,9 +192,10 @@ def session_url(path)
194
192
create_screenshot file , full : true , selector : "#penultimate"
195
193
196
194
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 } )
200
199
end
201
200
end
202
201
@@ -214,11 +213,11 @@ def session_url(path)
214
213
215
214
describe "#save_screenshot" do
216
215
let ( :format ) { :png }
217
- let ( :file ) { "#{ CUPRITE_ROOT } /spec/tmp/screenshot.#{ format } " }
216
+ let ( :file ) { "#{ PROJECT_ROOT } /spec/tmp/screenshot.#{ format } " }
218
217
219
218
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" )
222
221
end
223
222
224
223
def create_screenshot ( file , *args )
@@ -242,7 +241,7 @@ def create_screenshot(file, *args)
242
241
end
243
242
244
243
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"
246
245
@session . visit ( "/" )
247
246
248
247
@driver . save_screenshot ( file , format : "jpg" )
@@ -253,19 +252,23 @@ def create_screenshot(file, *args)
253
252
end
254
253
255
254
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 ] )
259
259
260
260
begin
261
261
@session . visit ( "/" )
262
+
262
263
@driver . save_screenshot ( file , quality : 0 ) # ignored for png
263
264
@driver . save_screenshot ( file2 ) # defaults to a quality of 75
264
265
@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 ) )
266
269
expect ( File . size ( file2 ) ) . to be < File . size ( file3 )
267
270
ensure
268
- FileUtils . rm_f ( [ file2 , file3 ] )
271
+ FileUtils . rm_f ( [ file2 , file3 , file4 ] )
269
272
end
270
273
end
271
274
@@ -322,7 +325,7 @@ def create_screenshot(file, *args)
322
325
end
323
326
324
327
describe "#render_base64" do
325
- let ( :file ) { "#{ CUPRITE_ROOT } /spec/tmp/screenshot.#{ format } " }
328
+ let ( :file ) { "#{ PROJECT_ROOT } /spec/tmp/screenshot.#{ format } " }
326
329
327
330
def create_screenshot ( file , *args )
328
331
image = @driver . render_base64 ( format , *args )
@@ -644,7 +647,7 @@ def create_screenshot(file, *args)
644
647
expect { @session . visit ( url ) }
645
648
. to raise_error (
646
649
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 \) }
648
651
)
649
652
end
650
653
@@ -763,9 +766,9 @@ def create_screenshot(file, *args)
763
766
@session . visit ( "/cuprite/with_js" )
764
767
responses = @driver . network_traffic . map ( &:response )
765
768
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" )
769
772
}
770
773
771
774
resources_size . each do |resource , size |
0 commit comments