capybara-screenshot 0.3.16 → 0.3.17
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 +4 -4
- data/.travis.yml +3 -1
- data/CHANGELOG.md +8 -0
- data/README.md +6 -1
- data/lib/capybara-screenshot.rb +12 -5
- data/lib/capybara-screenshot/rspec.rb +7 -2
- data/lib/capybara-screenshot/saver.rb +14 -3
- data/lib/capybara-screenshot/version.rb +1 -1
- data/spec/capybara-screenshot/saver_spec.rb +42 -1
- metadata +18 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 678f842e8fe6edb010eb0e94d90138e9bb90ef67
|
4
|
+
data.tar.gz: bc639f571a2dbf76550d295585687141969ab5e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33ad229a3130437ff4fd1846d3e9e25eaaad5b00d5875f5f6ff01f644e262624118558ce343f32d5c7fde3413e8edb7583f7d9665307f88c7917db60253e3669
|
7
|
+
data.tar.gz: 68c243d32ae3bb3d36f91c2f9580baeedbd51f5349360d9f95347b0a4ae26551bf49acc1334bc44c7db8751e9238027cc2b92cad323d783174ef262fa292fe7b
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
2 March 2014 - 0.3.16 -> 0.3.17
|
2
|
+
-----------
|
3
|
+
|
4
|
+
* Added support for RSpec 3 and cleaned up the logging so there is less noise within the test results when a driver does not support a particular format.
|
5
|
+
* Updated Travis to test against Ruby 2.0 and Ruby 2.1
|
6
|
+
|
7
|
+
Thanks to https://github.com/noniq
|
8
|
+
|
1
9
|
7 January 2014
|
2
10
|
-----------
|
3
11
|
|
data/README.md
CHANGED
@@ -87,13 +87,18 @@ add another driver configuration like so
|
|
87
87
|
Custom screenshot filename
|
88
88
|
--------------------------
|
89
89
|
|
90
|
-
If you want to control the screenshot filename for a specific test
|
90
|
+
If you want to control the screenshot filename for a specific test library, to inject the test name into it for example,
|
91
91
|
you can override how the basename is generated for the file like so
|
92
92
|
|
93
93
|
Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example|
|
94
94
|
"screenshot_#{example.description.gsub(' ', '-').gsub(/^.*\/spec\//,'')}"
|
95
95
|
end
|
96
96
|
|
97
|
+
By default capybara-screenshot will append a timestamp to the basename. If you want to disable this behavior set the following option:
|
98
|
+
|
99
|
+
Capybara::Screenshot.append_timestamp = false
|
100
|
+
|
101
|
+
|
97
102
|
Custom screenshot directory
|
98
103
|
--------------------------
|
99
104
|
By default screenshots are saved to the current working directory. If you want to customize the location, override the file path as:
|
data/lib/capybara-screenshot.rb
CHANGED
@@ -5,12 +5,14 @@ module Capybara
|
|
5
5
|
attr_accessor :registered_drivers
|
6
6
|
attr_accessor :filename_prefix_formatters
|
7
7
|
attr_accessor :append_screenshot_path
|
8
|
+
attr_accessor :append_timestamp
|
8
9
|
end
|
9
10
|
|
10
11
|
self.autosave_on_failure = true
|
11
12
|
self.registered_drivers = {}
|
12
13
|
self.filename_prefix_formatters = {}
|
13
14
|
self.append_screenshot_path = true
|
15
|
+
self.append_timestamp = true
|
14
16
|
|
15
17
|
def self.screenshot_and_save_page
|
16
18
|
saver = Saver.new(Capybara, Capybara.page)
|
@@ -64,18 +66,19 @@ module Capybara
|
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
67
|
-
# Register driver renderers
|
69
|
+
# Register driver renderers.
|
70
|
+
# The block should return `:not_supported` if a screenshot could not be saved.
|
68
71
|
Capybara::Screenshot.class_eval do
|
69
72
|
register_driver(:default) do |driver, path|
|
70
73
|
driver.render(path)
|
71
74
|
end
|
72
75
|
|
73
76
|
register_driver(:rack_test) do |driver, path|
|
74
|
-
|
77
|
+
:not_supported
|
75
78
|
end
|
76
|
-
|
79
|
+
|
77
80
|
register_driver(:mechanize) do |driver, path|
|
78
|
-
|
81
|
+
:not_supported
|
79
82
|
end
|
80
83
|
|
81
84
|
register_driver(:selenium) do |driver, path|
|
@@ -99,7 +102,11 @@ Capybara::Screenshot.class_eval do
|
|
99
102
|
end
|
100
103
|
|
101
104
|
register_driver(:terminus) do |driver, path|
|
102
|
-
|
105
|
+
if driver.respond_to?(:save_screenshot)
|
106
|
+
driver.save_screenshot(path)
|
107
|
+
else
|
108
|
+
:not_supported
|
109
|
+
end
|
103
110
|
end
|
104
111
|
end
|
105
112
|
|
@@ -1,6 +1,10 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
# use the before hook to add an after hook that runs last
|
3
|
-
config.after do
|
3
|
+
config.after do |example_from_block_arg|
|
4
|
+
|
5
|
+
# RSpec 3 no longer defines `example`, but passes the example as block argument instead
|
6
|
+
example = respond_to?(:example) ? self.example : example_from_block_arg
|
7
|
+
|
4
8
|
if Capybara.page.respond_to?(:save_page) # Capybara DSL method has been included for a feature we can snapshot
|
5
9
|
if Capybara.page.current_url != '' && Capybara::Screenshot.autosave_on_failure && example.exception
|
6
10
|
filename_prefix = Capybara::Screenshot.filename_prefix_for(:rspec, example)
|
@@ -9,7 +13,8 @@ RSpec.configure do |config|
|
|
9
13
|
saver.save
|
10
14
|
|
11
15
|
if Capybara::Screenshot.append_screenshot_path
|
12
|
-
example.metadata[:full_description] += "\n Screenshot: #{saver.screenshot_path}"
|
16
|
+
example.metadata[:full_description] += "\n Screenshot: #{saver.screenshot_path}" if saver.screenshot_saved?
|
17
|
+
example.metadata[:full_description] += "\n HTML page: #{saver.html_path}" if saver.html_saved?
|
13
18
|
end
|
14
19
|
end
|
15
20
|
end
|
@@ -6,7 +6,9 @@ module Capybara
|
|
6
6
|
def initialize(capybara, page, html_save=true, filename_prefix='screenshot')
|
7
7
|
@capybara, @page, @html_save = capybara, page, html_save
|
8
8
|
time_now = Time.now
|
9
|
-
|
9
|
+
timestamp = "#{time_now.strftime('%Y-%m-%d-%H-%M-%S.')}#{'%03d' % (time_now.usec/1000).to_i}"
|
10
|
+
@file_base_name = filename_prefix
|
11
|
+
@file_base_name = "#{@file_base_name}_#{timestamp}" if Capybara::Screenshot.append_timestamp
|
10
12
|
end
|
11
13
|
|
12
14
|
def save
|
@@ -26,16 +28,17 @@ module Capybara
|
|
26
28
|
capybara.save_page("#{path}")
|
27
29
|
end
|
28
30
|
end
|
29
|
-
|
31
|
+
@html_saved = true
|
30
32
|
end
|
31
33
|
|
32
34
|
def save_screenshot
|
33
35
|
path = screenshot_path
|
34
36
|
clear_save_and_open_page_path do
|
35
|
-
Capybara::Screenshot.registered_drivers.fetch(capybara.current_driver) { |driver_name|
|
37
|
+
result = Capybara::Screenshot.registered_drivers.fetch(capybara.current_driver) { |driver_name|
|
36
38
|
warn "capybara-screenshot could not detect a screenshot driver for '#{capybara.current_driver}'. Saving with default with unknown results."
|
37
39
|
Capybara::Screenshot.registered_drivers[:default]
|
38
40
|
}.call(page.driver, path)
|
41
|
+
@screenshot_saved = result != :not_supported
|
39
42
|
end
|
40
43
|
end
|
41
44
|
|
@@ -47,6 +50,14 @@ module Capybara
|
|
47
50
|
File.join(Capybara::Screenshot.capybara_root, "#{file_base_name}.png")
|
48
51
|
end
|
49
52
|
|
53
|
+
def html_saved?
|
54
|
+
@html_saved
|
55
|
+
end
|
56
|
+
|
57
|
+
def screenshot_saved?
|
58
|
+
@screenshot_saved
|
59
|
+
end
|
60
|
+
|
50
61
|
# If Capybara.save_and_open_page_path is set then
|
51
62
|
# the html_path or screenshot_path can be appended to this path in
|
52
63
|
# some versions of Capybara instead of using it as an absolute path
|
@@ -84,6 +84,15 @@ describe Capybara::Screenshot::Saver do
|
|
84
84
|
saver.save
|
85
85
|
end
|
86
86
|
|
87
|
+
it "should not append timestamp if append_timestamp is false " do
|
88
|
+
default_config = Capybara::Screenshot.append_timestamp
|
89
|
+
Capybara::Screenshot.append_timestamp = false
|
90
|
+
driver_mock.should_receive(:render).with(/screenshot.png$/)
|
91
|
+
|
92
|
+
saver.save
|
93
|
+
Capybara::Screenshot.append_timestamp = default_config
|
94
|
+
end
|
95
|
+
|
87
96
|
it 'should use filename prefix argument as basename prefix' do
|
88
97
|
saver = Capybara::Screenshot::Saver.new(capybara_mock, page_mock, true, 'custom-prefix')
|
89
98
|
driver_mock.should_receive(:render).with(/#{capybara_root}\/custom-prefix_#{timestamp}\.png$/)
|
@@ -97,14 +106,17 @@ describe Capybara::Screenshot::Saver do
|
|
97
106
|
capybara_mock.should_not_receive(:save_page)
|
98
107
|
|
99
108
|
saver.save
|
109
|
+
saver.html_saved?.should be_false
|
100
110
|
end
|
101
111
|
|
102
|
-
it 'should save if current_path is empty' do
|
112
|
+
it 'should not save if current_path is empty' do
|
103
113
|
capybara_mock.stub(:current_path).and_return(nil)
|
104
114
|
capybara_mock.should_not_receive(:save_page)
|
105
115
|
driver_mock.should_not_receive(:render)
|
106
116
|
|
107
117
|
saver.save
|
118
|
+
saver.screenshot_saved?.should be_false
|
119
|
+
saver.html_saved?.should be_false
|
108
120
|
end
|
109
121
|
|
110
122
|
describe "with selenium driver" do
|
@@ -118,6 +130,7 @@ describe Capybara::Screenshot::Saver do
|
|
118
130
|
browser_mock.should_receive(:save_screenshot).with(screenshot_path)
|
119
131
|
|
120
132
|
saver.save
|
133
|
+
saver.screenshot_saved?.should be_true
|
121
134
|
end
|
122
135
|
end
|
123
136
|
|
@@ -130,6 +143,7 @@ describe Capybara::Screenshot::Saver do
|
|
130
143
|
driver_mock.should_receive(:render).with(screenshot_path, {:full => true})
|
131
144
|
|
132
145
|
saver.save
|
146
|
+
saver.screenshot_saved?.should be_true
|
133
147
|
end
|
134
148
|
end
|
135
149
|
|
@@ -147,6 +161,7 @@ describe Capybara::Screenshot::Saver do
|
|
147
161
|
driver_mock.should_receive(:render).with(screenshot_path)
|
148
162
|
|
149
163
|
saver.save
|
164
|
+
saver.screenshot_saved?.should be_true
|
150
165
|
end
|
151
166
|
end
|
152
167
|
|
@@ -159,6 +174,7 @@ describe Capybara::Screenshot::Saver do
|
|
159
174
|
driver_mock.should_receive(:save_screenshot).with(screenshot_path)
|
160
175
|
|
161
176
|
saver.save
|
177
|
+
saver.screenshot_saved?.should be_true
|
162
178
|
end
|
163
179
|
end
|
164
180
|
end
|
@@ -172,6 +188,7 @@ describe Capybara::Screenshot::Saver do
|
|
172
188
|
driver_mock.should_receive(:render).with(screenshot_path)
|
173
189
|
|
174
190
|
saver.save
|
191
|
+
saver.screenshot_saved?.should be_true
|
175
192
|
end
|
176
193
|
end
|
177
194
|
|
@@ -185,6 +202,7 @@ describe Capybara::Screenshot::Saver do
|
|
185
202
|
driver_mock.should_receive(:render).with(screenshot_path)
|
186
203
|
|
187
204
|
saver.save
|
205
|
+
saver.screenshot_saved?.should be_true
|
188
206
|
end
|
189
207
|
|
190
208
|
it 'should output warning about unknown results' do
|
@@ -192,6 +210,29 @@ describe Capybara::Screenshot::Saver do
|
|
192
210
|
saver.should_receive(:warn).with(/screenshot driver for 'unknown'.*unknown results/).and_return(nil)
|
193
211
|
|
194
212
|
saver.save
|
213
|
+
saver.screenshot_saved?.should be_true
|
214
|
+
end
|
215
|
+
|
216
|
+
describe "with rack_test driver" do
|
217
|
+
before do
|
218
|
+
capybara_mock.stub(:current_driver).and_return(:rack_test)
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'should indicate that a screenshot could not be saved' do
|
222
|
+
saver.save
|
223
|
+
saver.screenshot_saved?.should be_false
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
describe "with mechanize driver" do
|
228
|
+
before do
|
229
|
+
capybara_mock.stub(:current_driver).and_return(:mechanize)
|
230
|
+
end
|
231
|
+
|
232
|
+
it 'should indicate that a screenshot could not be saved' do
|
233
|
+
saver.save
|
234
|
+
saver.screenshot_saved?.should be_false
|
235
|
+
end
|
195
236
|
end
|
196
237
|
end
|
197
238
|
end
|
metadata
CHANGED
@@ -1,75 +1,75 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-screenshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew O'Riordan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.0'
|
20
|
-
- - <
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '3'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.0'
|
30
|
-
- - <
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: launchy
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - ~>
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '2.7'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - ~>
|
58
|
+
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '2.7'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: timecop
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- -
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- -
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
75
|
description: When a Cucumber step fails, it is useful to create a screenshot image
|
@@ -80,9 +80,9 @@ executables: []
|
|
80
80
|
extensions: []
|
81
81
|
extra_rdoc_files: []
|
82
82
|
files:
|
83
|
-
- .gitignore
|
84
|
-
- .rspec
|
85
|
-
- .travis.yml
|
83
|
+
- ".gitignore"
|
84
|
+
- ".rspec"
|
85
|
+
- ".travis.yml"
|
86
86
|
- CHANGELOG.md
|
87
87
|
- Gemfile
|
88
88
|
- LICENSE
|
@@ -111,17 +111,17 @@ require_paths:
|
|
111
111
|
- lib
|
112
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- -
|
114
|
+
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
122
|
requirements: []
|
123
123
|
rubyforge_project: capybara-screenshot
|
124
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.2.2
|
125
125
|
signing_key:
|
126
126
|
specification_version: 4
|
127
127
|
summary: Automatically create snapshots when Cucumber steps fail with Capybara and
|
@@ -131,4 +131,3 @@ test_files:
|
|
131
131
|
- spec/capybara-screenshot/saver_spec.rb
|
132
132
|
- spec/capybara-screenshot_spec.rb
|
133
133
|
- spec/spec_helper.rb
|
134
|
-
has_rdoc:
|