capybara-screenshot 0.3.16 → 0.3.17

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
  SHA1:
3
- metadata.gz: 33e1c6bb97161f57ea5a4cef1a33e9c4e6c10bb2
4
- data.tar.gz: d68d3f14e2dff0186a1623d7224322310e639f54
3
+ metadata.gz: 678f842e8fe6edb010eb0e94d90138e9bb90ef67
4
+ data.tar.gz: bc639f571a2dbf76550d295585687141969ab5e4
5
5
  SHA512:
6
- metadata.gz: 69bce13964bfcefbc65f23cabee234ee6b836b37668a2d2eddce6b27009fe01a0e46160d1f7f24abbf8c4923fa95686b72a949e62ba1ea0e1e2de6fee52a7b6d
7
- data.tar.gz: 5dffc2d2b2e0f62ee100d9e04efedef9bad21135ac1cb7c2bdd8a4530211420163858f5fafe089c367959cffb40a7b990306e3a2401beab405c95d3076dd360d
6
+ metadata.gz: 33ad229a3130437ff4fd1846d3e9e25eaaad5b00d5875f5f6ff01f644e262624118558ce343f32d5c7fde3413e8edb7583f7d9665307f88c7917db60253e3669
7
+ data.tar.gz: 68c243d32ae3bb3d36f91c2f9580baeedbd51f5349360d9f95347b0a4ae26551bf49acc1334bc44c7db8751e9238027cc2b92cad323d783174ef262fa292fe7b
@@ -2,4 +2,6 @@ language: ruby
2
2
  script: "bundle exec rspec"
3
3
  rvm:
4
4
  - 1.9.3
5
- - jruby-19mode # JRuby in 1.9 mode
5
+ - 2.0.0
6
+ - 2.1.1
7
+ - jruby-19mode # JRuby in 1.9 mode
@@ -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 libarary, to inject the test name into it for example,
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:
@@ -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
- warn "Rack::Test capybara driver has no ability to output screen shots. Skipping."
77
+ :not_supported
75
78
  end
76
-
79
+
77
80
  register_driver(:mechanize) do |driver, path|
78
- warn "Mechanize capybara driver has no ability to output screen shots. Skipping."
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
- driver.save_screenshot(path) if driver.respond_to?(:save_screenshot)
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
- @file_base_name = "#{filename_prefix}_#{time_now.strftime('%Y-%m-%d-%H-%M-%S.')}#{'%03d' % (time_now.usec/1000).to_i}"
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
- warn "Saved file #{path}"
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
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module Screenshot
3
- VERSION = "0.3.16"
3
+ VERSION = "0.3.17"
4
4
  end
5
5
  end
@@ -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.16
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-01-07 00:00:00.000000000 Z
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.1.11
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: