capybara-screenshot 1.0.25 → 1.0.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8539dcf08bbfb122dfb190cd76f82361373b4016888d02e65daedf42998e7cd2
4
- data.tar.gz: bb64e6eb25278f8564a694784b21f9f38d3c550cf6cd2949fe5b5dd2adf5b916
3
+ metadata.gz: b73d3b8338a3c2f426d7835f4396565c0bfe28b939f610337c331099f93f52b5
4
+ data.tar.gz: c5ec9f343c703e5ac2700b84dcde63a094c3609787ea7b1cfbbd1f470a5b0ce4
5
5
  SHA512:
6
- metadata.gz: c1b62365f1e18a17bc4e0d0443bce7194dd7fe9fdbe846df3ea68b45583d452e6fe0047611f8639eb43bc015307de9f993a1485164ddf502879801fd213f9031
7
- data.tar.gz: 5a599e20a7684bf4045c2cb318099af8a9385705e83afe342fe756bd592dfc762816dcd54a3946a370b84805dc3d65c8ce2e5fb927c3673256e4c362131611aa
6
+ metadata.gz: 4cd11454a82290ef985a5341e0dad1eaea6296ca5b6ea1f17522a5f8f43b6c68dd71cfd17426c8204fd352488b6ea876d2e8493b2ec0ce2e575590e13302b456
7
+ data.tar.gz: d17d96491ebc960f4fa47eec58b9dd60610c4a7839e878d8d40c3003cb054e891fc38e958ba42dbcf7ded095385fbb725cdd9e33e368fec51cd89358653c3576
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 21 Dec 2021 - 1.0.25 -> 1.0.26
2
+
3
+ * [Take screenshots of current window (when using multiple windows)](https://github.com/mattheworiordan/capybara-screenshot/pull/287)
4
+ * [Fix embedding screenshots into cucumber HTML reports](https://github.com/mattheworiordan/capybara-screenshot/pull/288)
5
+
1
6
  4 Oct 2020 - 1.0.24 -> 1.0.25
2
7
 
3
8
  * [Fix Cucumber 5 deprecation warnings](https://github.com/mattheworiordan/capybara-screenshot/pull/274)
@@ -27,4 +27,16 @@ module Capybara
27
27
  Capybara::Screenshot.screenshot_and_open_image
28
28
  end
29
29
  end
30
+
31
+ module SessionScreenshotOverrides
32
+ def within_window(window_or_handle)
33
+ super
34
+ rescue Exception
35
+ Thread.current[:capybara_screenshot_offending_window] = window_or_handle
36
+
37
+ raise
38
+ end
39
+ end
40
+
41
+ Session.prepend SessionScreenshotOverrides
30
42
  end
@@ -15,17 +15,18 @@ After do |scenario|
15
15
 
16
16
  # Trying to embed the screenshot into our output."
17
17
  if File.exist?(saver.screenshot_path)
18
- require "base64"
19
- #encode the image into it's base64 representation
20
18
  image = open(saver.screenshot_path, 'rb') {|io|io.read}
21
19
  saver.display_image
22
- #this will embed the image in the HTML report, embed() is defined in cucumber
23
- encoded_img = Base64.encode64(image)
24
20
 
25
21
  # cucumber5 deprecates embed in favor of attach
26
22
  if respond_to? :attach
27
- attach(encoded_img, 'image/png')
23
+ #this will embed the image in the HTML report, attach() is defined in cucumber
24
+ attach(image, 'image/png')
28
25
  else
26
+ #encode the image into it's base64 representation
27
+ require "base64"
28
+ encoded_img = Base64.encode64(image)
29
+ #this will embed the image in the HTML report, embed() is defined in cucumber
29
30
  embed(encoded_img, 'image/png;base64', "Screenshot of the error")
30
31
  end
31
32
  end
@@ -22,7 +22,7 @@ module Capybara
22
22
  end
23
23
 
24
24
  def link_to_screenshot(title, path)
25
- url = URI.escape("file://#{path}")
25
+ url = URI::DEFAULT_PARSER.escape("file://#{path}")
26
26
  title = CGI.escape_html(title)
27
27
  attributes = attributes_for_screenshot_link(url).map { |name, val| %{#{name}="#{CGI.escape_html(val)}"} }.join(" ")
28
28
  "<a #{attributes}>#{title}</a>"
@@ -27,19 +27,21 @@ module Capybara
27
27
 
28
28
  def save
29
29
  current_path do |path|
30
- if path.empty?
31
- warn 'WARN: Screenshot could not be saved. `page.current_path` is empty.'
32
- else
33
- begin
34
- save_html if @html_save
35
- rescue StandardError => e
36
- warn "WARN: HTML source could not be saved. An exception is raised: #{e.inspect}."
37
- end
38
-
39
- begin
40
- save_screenshot
41
- rescue StandardError => e
42
- warn "WARN: Screenshot could not be saved. An exception is raised: #{e.inspect}."
30
+ within_offending_window do
31
+ if path.empty?
32
+ warn 'WARN: Screenshot could not be saved. `page.current_path` is empty.'
33
+ else
34
+ begin
35
+ save_html if @html_save
36
+ rescue StandardError => e
37
+ warn "WARN: HTML source could not be saved. An exception is raised: #{e.inspect}."
38
+ end
39
+
40
+ begin
41
+ save_screenshot
42
+ rescue StandardError => e
43
+ warn "WARN: Screenshot could not be saved. An exception is raised: #{e.inspect}."
44
+ end
43
45
  end
44
46
  end
45
47
  end
@@ -142,6 +144,16 @@ module Capybara
142
144
 
143
145
  nil
144
146
  end
147
+
148
+ def within_offending_window
149
+ return yield unless Thread.current[:capybara_screenshot_offending_window]
150
+
151
+ page.within_window(Thread.current[:capybara_screenshot_offending_window]) do
152
+ yield
153
+ end
154
+
155
+ Thread.current[:capybara_screenshot_offending_window] = nil
156
+ end
145
157
  end
146
158
  end
147
159
  end
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module Screenshot
3
- VERSION = '1.0.25'
3
+ VERSION = '1.0.26'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-screenshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.25
4
+ version: 1.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew O'Riordan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-15 00:00:00.000000000 Z
11
+ date: 2022-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -243,9 +243,9 @@ licenses:
243
243
  metadata:
244
244
  bug_tracker_uri: https://github.com/mattheworiordan/capybara-screenshot/issues
245
245
  changelog_uri: https://github.com/mattheworiordan/capybara-screenshot/blob/master/CHANGELOG.md
246
- documentation_uri: https://www.rubydoc.info/gems/capybara-screenshot/1.0.25
247
- source_code_uri: https://github.com/mattheworiordan/capybara-screenshot/tree/v1.0.25
248
- post_install_message:
246
+ documentation_uri: https://www.rubydoc.info/gems/capybara-screenshot/1.0.26
247
+ source_code_uri: https://github.com/mattheworiordan/capybara-screenshot/tree/v1.0.26
248
+ post_install_message:
249
249
  rdoc_options: []
250
250
  require_paths:
251
251
  - lib
@@ -261,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
261
261
  version: '0'
262
262
  requirements: []
263
263
  rubygems_version: 3.0.3
264
- signing_key:
264
+ signing_key:
265
265
  specification_version: 4
266
266
  summary: Automatically create snapshots when Cucumber steps fail with Capybara and
267
267
  Rails