capybara-screenshot-diff 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31b02395af8b464ceeb774dbf6364497e0127daa
|
|
4
|
+
data.tar.gz: 2bd199042023db6a41d51e0312fb791d2da0ece6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 116bc4c1258f770998f2451ab3abcb124bc4b6926961e4cae7edf3cb32e128d990fed362b18b1226d9c84fdfb92fb88e21bffb5691fe6faf5077884bd1d6e7e9
|
|
7
|
+
data.tar.gz: a40a2b6e2f471d9762fc0e2cfe8da22ec3a89bf5ccbb0971ef5afb43944386193a3636849281194094c2810e24905a755ede1e3ac700580057d32cc1da02912d
|
|
@@ -127,8 +127,10 @@ module ActionDispatch
|
|
|
127
127
|
|
|
128
128
|
FileUtils.mkdir_p File.dirname(file_name)
|
|
129
129
|
committed_file_name = check_vcs(name, file_name, org_name)
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
previous_file_exists = committed_file_name && File.exist?(committed_file_name)
|
|
131
|
+
previous_size = File.size(committed_file_name) if previous_file_exists
|
|
132
|
+
take_stable_screenshot(file_name, previous_size)
|
|
133
|
+
return unless previous_file_exists
|
|
132
134
|
(@test_screenshots ||= []) << [caller[0], name, file_name, committed_file_name, new_name, org_name]
|
|
133
135
|
end
|
|
134
136
|
|
|
@@ -182,38 +184,46 @@ EOF
|
|
|
182
184
|
pending_image = evaluate_script IMAGE_WAIT_SCRIPT
|
|
183
185
|
break unless pending_image
|
|
184
186
|
assert (Time.now - start) < timeout,
|
|
185
|
-
"
|
|
187
|
+
"Images not loaded after #{timeout}s: #{pending_image.inspect}"
|
|
186
188
|
sleep 0.1
|
|
187
189
|
end
|
|
188
190
|
end
|
|
189
191
|
|
|
190
|
-
def take_stable_screenshot(file_name)
|
|
192
|
+
def take_stable_screenshot(file_name, original_file_size = nil)
|
|
191
193
|
assert_images_loaded
|
|
192
|
-
old_file_size =
|
|
194
|
+
old_file_size = original_file_size
|
|
195
|
+
screeenshot_started_at = last_image_change_at = Time.now
|
|
193
196
|
loop do
|
|
194
197
|
save_screenshot(file_name)
|
|
195
198
|
|
|
196
|
-
#
|
|
197
|
-
|
|
198
|
-
if self.class.macos? && selenium? && Capybara::Screenshot.window_size
|
|
199
|
-
saved_image = ChunkyPNG::Image.from_file(file_name)
|
|
200
|
-
width = Capybara::Screenshot.window_size[0]
|
|
201
|
-
if saved_image.width >= width * 2
|
|
202
|
-
height = (width * saved_image.height) / saved_image.width
|
|
203
|
-
resized_image = saved_image.resample_bilinear(width, height)
|
|
204
|
-
resized_image.save(file_name)
|
|
205
|
-
end
|
|
206
|
-
end
|
|
199
|
+
# TODO(uwe): Remove when chromedriver take right size screenshots
|
|
200
|
+
reduce_retina_image_size(file_name)
|
|
207
201
|
# EMXIF
|
|
208
202
|
|
|
209
203
|
break unless Capybara::Screenshot.stability_time_limit
|
|
210
204
|
new_file_size = File.size(file_name)
|
|
211
|
-
break if new_file_size ==
|
|
205
|
+
break if new_file_size == original_file_size
|
|
206
|
+
break if new_file_size == old_file_size &&
|
|
207
|
+
(Time.now - last_image_change_at) > Capybara::Screenshot.stability_time_limit
|
|
208
|
+
last_image_change_at = Time.now if new_file_size != old_file_size
|
|
212
209
|
old_file_size = new_file_size
|
|
213
|
-
sleep
|
|
210
|
+
sleep 0.1
|
|
211
|
+
|
|
212
|
+
assert (Time.now - screeenshot_started_at) < Capybara.default_max_wait_time,
|
|
213
|
+
"Could not get stable screenshot within #{Capybara.default_max_wait_time}s"
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
216
|
|
|
217
|
+
private def reduce_retina_image_size(file_name)
|
|
218
|
+
return if !self.class.macos? || !selenium? || !Capybara::Screenshot.window_size
|
|
219
|
+
saved_image = ChunkyPNG::Image.from_file(file_name)
|
|
220
|
+
width = Capybara::Screenshot.window_size[0]
|
|
221
|
+
return if saved_image.width < width * 2
|
|
222
|
+
height = (width * saved_image.height) / saved_image.width
|
|
223
|
+
resized_image = saved_image.resample_bilinear(width, height)
|
|
224
|
+
resized_image.save(file_name)
|
|
225
|
+
end
|
|
226
|
+
|
|
217
227
|
def assert_image_not_changed(caller, name, file_name, committed_file_name, new_name, org_name)
|
|
218
228
|
if Capybara::Screenshot::Diff::ImageCompare.compare(committed_file_name, file_name,
|
|
219
229
|
Capybara::Screenshot.window_size)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capybara-screenshot-diff
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Uwe Kubosch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-06-
|
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actionpack
|