capybara-screenshot 1.0.25 → 1.0.26

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
  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