capybara-screenshot-nocolor 1.0.5
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 +7 -0
- data/.gitignore +7 -0
- data/.rspec +2 -0
- data/.travis.yml +17 -0
- data/Appraisals +31 -0
- data/CHANGELOG.md +198 -0
- data/Gemfile +7 -0
- data/LICENSE +19 -0
- data/README.md +240 -0
- data/Rakefile +40 -0
- data/capybara-screenshot.gemspec +38 -0
- data/gemfiles/cucumber.1.2.gemfile +9 -0
- data/gemfiles/cucumber.1.3.0.gemfile +9 -0
- data/gemfiles/latest.gemfile +8 -0
- data/gemfiles/rspec.2.14.gemfile +9 -0
- data/gemfiles/rspec.2.99.gemfile +9 -0
- data/gemfiles/rspec.3.0.gemfile +9 -0
- data/gemfiles/spinach.0.7.gemfile +9 -0
- data/gemfiles/spinach.0.8.0.gemfile +9 -0
- data/lib/capybara-screenshot.rb +157 -0
- data/lib/capybara-screenshot/capybara.rb +28 -0
- data/lib/capybara-screenshot/cucumber.rb +27 -0
- data/lib/capybara-screenshot/minitest.rb +27 -0
- data/lib/capybara-screenshot/pruner.rb +47 -0
- data/lib/capybara-screenshot/rspec.rb +92 -0
- data/lib/capybara-screenshot/rspec/base_reporter.rb +21 -0
- data/lib/capybara-screenshot/rspec/html_embed_reporter.rb +25 -0
- data/lib/capybara-screenshot/rspec/html_link_reporter.rb +37 -0
- data/lib/capybara-screenshot/rspec/text_reporter.rb +38 -0
- data/lib/capybara-screenshot/rspec/textmate_link_reporter.rb +19 -0
- data/lib/capybara-screenshot/saver.rb +87 -0
- data/lib/capybara-screenshot/spinach.rb +26 -0
- data/lib/capybara-screenshot/testunit.rb +39 -0
- data/lib/capybara-screenshot/version.rb +5 -0
- data/spec/cucumber/cucumber_spec.rb +93 -0
- data/spec/cucumber/step_definitions/step_definitions.rb +18 -0
- data/spec/cucumber/support/env.rb +17 -0
- data/spec/feature/minitest_spec.rb +110 -0
- data/spec/feature/testunit_spec.rb +81 -0
- data/spec/rspec/rspec_spec.rb +159 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/spinach/spinach_spec.rb +64 -0
- data/spec/spinach/support/spinach_failure.rb +41 -0
- data/spec/support/common_setup.rb +59 -0
- data/spec/support/html_reporter_context.rb +28 -0
- data/spec/support/test_app.rb +13 -0
- data/spec/unit/base_reporter_spec.rb +25 -0
- data/spec/unit/capybara-screenshot_rspec_spec.rb +48 -0
- data/spec/unit/capybara-screenshot_spec.rb +88 -0
- data/spec/unit/capybara_spec.rb +50 -0
- data/spec/unit/pruner_spec.rb +108 -0
- data/spec/unit/rspec_reporters/html_embed_reporter_spec.rb +18 -0
- data/spec/unit/rspec_reporters/html_link_reporter_spec.rb +27 -0
- data/spec/unit/rspec_reporters/text_reporter_spec.rb +97 -0
- data/spec/unit/rspec_reporters/textmate_link_reporter_spec.rb +39 -0
- data/spec/unit/saver_spec.rb +282 -0
- metadata +247 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Screenshot::RSpec::HtmlEmbedReporter do
|
4
|
+
include_context 'html reporter'
|
5
|
+
|
6
|
+
context 'when an image was saved' do
|
7
|
+
before do
|
8
|
+
set_example double("example", metadata: {screenshot: {image: "path/to/image"}})
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'embeds the image base64 encoded into the content' do
|
12
|
+
expect(File).to receive(:binread).with("path/to/image").and_return("image data")
|
13
|
+
encoded_image_data = Base64.encode64('image data')
|
14
|
+
content_without_styles = @reporter.extra_failure_content(nil).gsub(/ ?style='.*?' ?/, "")
|
15
|
+
expect(content_without_styles).to eql("original content<img src='data:image/png;base64,#{encoded_image_data}'>")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Screenshot::RSpec::HtmlLinkReporter do
|
4
|
+
include_context 'html reporter'
|
5
|
+
|
6
|
+
context 'when a html file was saved' do
|
7
|
+
before do
|
8
|
+
set_example double("example", metadata: {screenshot: {html: "path/to/a html file"}})
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'appends a link to the html to the original content' do
|
12
|
+
content_without_styles = @reporter.extra_failure_content(nil).gsub(/ ?style=".*?" ?/, "")
|
13
|
+
expect(content_without_styles).to eql(%{original content<p>Saved files: <a href="file://path/to/a%20html%20file">HTML page</a></p>})
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when a html file and an image were saved' do
|
18
|
+
before do
|
19
|
+
set_example double("example", metadata: {screenshot: {html: "path/to/html", image: "path/to/an image"}})
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'appends links to both files to the original content' do
|
23
|
+
content_without_styles = @reporter.extra_failure_content(nil).gsub(/ ?style=".*?" ?/, "")
|
24
|
+
expect(content_without_styles).to eql(%{original content<p>Saved files: <a href="file://path/to/html">HTML page</a><a href="file://path/to/an%20image">Screenshot</a></p>})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Screenshot::RSpec::TextReporter do
|
4
|
+
before do
|
5
|
+
# Mocking `RSpec::Core::Formatters::ProgressFormatter`, but only implementing the methods that
|
6
|
+
# are actually used in `TextReporter#dump_failure_info_with_screenshot`.
|
7
|
+
@reporter_class = Class.new do
|
8
|
+
attr_reader :output
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@output = StringIO.new
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def long_padding
|
17
|
+
" "
|
18
|
+
end
|
19
|
+
|
20
|
+
def failure_color(str)
|
21
|
+
"colorized(#{str})"
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def dump_failure_info(example)
|
27
|
+
output.puts "original failure info"
|
28
|
+
end
|
29
|
+
alias_method :example_failed, :dump_failure_info
|
30
|
+
end
|
31
|
+
|
32
|
+
@reporter = @reporter_class.new
|
33
|
+
@reporter.singleton_class.send :include, described_class
|
34
|
+
end
|
35
|
+
|
36
|
+
let(:example_failed_method) do
|
37
|
+
if ::RSpec::Core::Version::STRING.to_i <= 2
|
38
|
+
:dump_failure_info
|
39
|
+
else
|
40
|
+
:example_failed
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def example_failed_method_argument_double(metadata = {})
|
45
|
+
example_group = Module.new.include(Capybara::DSL)
|
46
|
+
example = double("example", metadata: metadata, example_group: example_group)
|
47
|
+
if ::RSpec::Core::Version::STRING.to_i <= 2
|
48
|
+
example
|
49
|
+
else
|
50
|
+
double("notification").tap do |notification|
|
51
|
+
allow(notification).to receive(:example).and_return(example)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when there is no screenshot' do
|
57
|
+
let(:example) { example_failed_method_argument_double }
|
58
|
+
|
59
|
+
it 'doesnt change the original output of the reporter' do
|
60
|
+
@reporter.send(example_failed_method, example)
|
61
|
+
expect(@reporter.output.string).to eql("original failure info\n")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when a html file was saved' do
|
66
|
+
let(:example) { example_failed_method_argument_double(screenshot: { html: "path/to/html" }) }
|
67
|
+
|
68
|
+
it 'appends the html file path to the original output' do
|
69
|
+
@reporter.send(example_failed_method, example)
|
70
|
+
expect(@reporter.output.string).to eql("original failure info\n #{"HTML screenshot: path/to/html"}\n")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when a html file and an image were saved' do
|
75
|
+
let(:example) { example_failed_method_argument_double(screenshot: { html: "path/to/html", image: "path/to/image" }) }
|
76
|
+
|
77
|
+
it 'appends the image path to the original output' do
|
78
|
+
@reporter.send(example_failed_method, example)
|
79
|
+
expect(@reporter.output.string).to eql("original failure info\n #{"HTML screenshot: path/to/html"}\n #{"Image screenshot: path/to/image"}\n")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
it 'works with older RSpec formatters where `#red` is used instead of `#failure_color`' do
|
85
|
+
old_reporter_class = Class.new(@reporter_class) do
|
86
|
+
undef_method :failure_color
|
87
|
+
def red(str)
|
88
|
+
"red(#{str})"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
old_reporter = old_reporter_class.new
|
92
|
+
old_reporter.singleton_class.send :include, described_class
|
93
|
+
example = example_failed_method_argument_double(screenshot: { html: "path/to/html" })
|
94
|
+
old_reporter.send(example_failed_method, example)
|
95
|
+
expect(old_reporter.output.string).to eql("original failure info\n #{"HTML screenshot: path/to/html"}\n")
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Screenshot::RSpec::TextMateLinkReporter do
|
4
|
+
include_context 'html reporter'
|
5
|
+
|
6
|
+
context 'when a html file was saved' do
|
7
|
+
before do
|
8
|
+
set_example double("example", metadata: {screenshot: {html: "path/to/a html file"}})
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'appends a link to the html to the original content' do
|
12
|
+
content_without_styles = @reporter.extra_failure_content(nil).gsub(/ ?style=".*?"/, "")
|
13
|
+
# Single quotes are handled differently by CGI.escape_html in Ruby 1.9 / Ruby 2, so to be
|
14
|
+
# compatible with both versions we can't hard code the final escaped string.
|
15
|
+
expected_onclick_handler = CGI.escape_html("TextMate.system('open file://path/to/a\\%20html\\%20file'); return false;")
|
16
|
+
expect(content_without_styles).to eql(%{original content<p>} +
|
17
|
+
%{Saved files: <a href="file://path/to/a%20html%20file" onclick="#{expected_onclick_handler}">HTML page</a></p>}
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when a html file and an image were saved' do
|
23
|
+
before do
|
24
|
+
set_example double("example", metadata: {screenshot: {html: "path/to/html", image: "path/to/an image"}})
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'appends links to both files to the original content' do
|
28
|
+
content_without_styles = @reporter.extra_failure_content(nil).gsub(/ ?style=".*?"/, "")
|
29
|
+
# Single quotes are handled differently by CGI.escape_html in Ruby 1.9 / Ruby 2, so to be
|
30
|
+
# compatible with both versions we can't hard code the final escaped string.
|
31
|
+
expected_onclick_handler_1 = CGI.escape_html("TextMate.system('open file://path/to/html'); return false;")
|
32
|
+
expected_onclick_handler_2 = CGI.escape_html("TextMate.system('open file://path/to/an\\%20image'); return false;")
|
33
|
+
expect(content_without_styles).to eql(%{original content<p>} +
|
34
|
+
%{Saved files: <a href="file://path/to/html" onclick="#{expected_onclick_handler_1}">HTML page</a>} +
|
35
|
+
%{<a href="file://path/to/an%20image" onclick="#{expected_onclick_handler_2}">Screenshot</a></p>}
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,282 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Screenshot::Saver do
|
4
|
+
before(:all) do
|
5
|
+
@original_drivers = Capybara::Screenshot.registered_drivers
|
6
|
+
Capybara::Screenshot.registered_drivers[:default] = lambda {|driver, path| driver.render(path) }
|
7
|
+
end
|
8
|
+
|
9
|
+
after(:all) do
|
10
|
+
Capybara::Screenshot.registered_drivers = @original_drivers
|
11
|
+
end
|
12
|
+
|
13
|
+
before do
|
14
|
+
allow(Capybara::Screenshot).to receive(:capybara_root).and_return(capybara_root)
|
15
|
+
Timecop.freeze(Time.local(2012, 6, 7, 8, 9, 10, 0))
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:capybara_root) { '/tmp' }
|
19
|
+
let(:timestamp) { '2012-06-07-08-09-10.000' }
|
20
|
+
let(:file_basename) { "screenshot_#{timestamp}" }
|
21
|
+
let(:screenshot_path) { "#{capybara_root}/#{file_basename}.png" }
|
22
|
+
|
23
|
+
let(:driver_mock) { double('Capybara driver').as_null_object }
|
24
|
+
let(:page_mock) { double('Capybara session page', :body => 'body', :driver => driver_mock).as_null_object }
|
25
|
+
let(:capybara_mock) {
|
26
|
+
double(Capybara).as_null_object.tap do |m|
|
27
|
+
allow(m).to receive(:current_driver).and_return(:default)
|
28
|
+
allow(m).to receive(:current_path).and_return('/')
|
29
|
+
end
|
30
|
+
}
|
31
|
+
|
32
|
+
let(:saver) { Capybara::Screenshot::Saver.new(capybara_mock, page_mock) }
|
33
|
+
|
34
|
+
context 'html filename with Capybara Version 1' do
|
35
|
+
before do
|
36
|
+
stub_const("Capybara::VERSION", '1')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'has a default format of "screenshot_Y-M-D-H-M-S.ms.html"' do
|
40
|
+
expect(capybara_mock).to receive(:save_page).with('body', File.join(capybara_root, "#{file_basename}.html"))
|
41
|
+
|
42
|
+
saver.save
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'uses name argument as prefix' do
|
46
|
+
saver = Capybara::Screenshot::Saver.new(capybara_mock, page_mock, true, 'custom-prefix')
|
47
|
+
|
48
|
+
expect(capybara_mock).to receive(:save_page).with('body', File.join(capybara_root, "custom-prefix_#{timestamp}.html"))
|
49
|
+
|
50
|
+
saver.save
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'html filename with Capybara Version 2' do
|
55
|
+
before do
|
56
|
+
stub_const("Capybara::VERSION", '2')
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'has a default format of "screenshot_Y-M-D-H-M-S.ms.html"' do
|
60
|
+
expect(capybara_mock).to receive(:save_page).with(File.join(capybara_root, "#{file_basename}.html"))
|
61
|
+
|
62
|
+
saver.save
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'uses name argument as prefix' do
|
66
|
+
saver = Capybara::Screenshot::Saver.new(capybara_mock, page_mock, true, 'custom-prefix')
|
67
|
+
|
68
|
+
expect(capybara_mock).to receive(:save_page).with(File.join(capybara_root, "custom-prefix_#{timestamp}.html"))
|
69
|
+
|
70
|
+
saver.save
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'screenshot image path' do
|
75
|
+
it 'is in capybara root output' do
|
76
|
+
expect(driver_mock).to receive(:render).with(/^#{capybara_root}\//)
|
77
|
+
|
78
|
+
saver.save
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'has a default filename format of "screenshot_Y-M-D-H-M-S.ms.png"' do
|
82
|
+
expect(driver_mock).to receive(:render).with(/#{file_basename}\.png$/)
|
83
|
+
|
84
|
+
saver.save
|
85
|
+
end
|
86
|
+
|
87
|
+
it "does not append timestamp if append_timestamp is false " do
|
88
|
+
default_config = Capybara::Screenshot.append_timestamp
|
89
|
+
Capybara::Screenshot.append_timestamp = false
|
90
|
+
expect(driver_mock).to receive(:render).with(/screenshot.png$/)
|
91
|
+
|
92
|
+
saver.save
|
93
|
+
Capybara::Screenshot.append_timestamp = default_config
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'uses filename prefix argument as basename prefix' do
|
97
|
+
saver = Capybara::Screenshot::Saver.new(capybara_mock, page_mock, true, 'custom-prefix')
|
98
|
+
expect(driver_mock).to receive(:render).with(/#{capybara_root}\/custom-prefix_#{timestamp}\.png$/)
|
99
|
+
|
100
|
+
saver.save
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'does not save html if false passed as html argument' do
|
105
|
+
saver = Capybara::Screenshot::Saver.new(capybara_mock, page_mock, false)
|
106
|
+
expect(capybara_mock).to_not receive(:save_page)
|
107
|
+
|
108
|
+
saver.save
|
109
|
+
expect(saver).to_not be_html_saved
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'does not save if current_path is empty' do
|
113
|
+
allow(capybara_mock).to receive(:current_path).and_return(nil)
|
114
|
+
expect(capybara_mock).to_not receive(:save_page)
|
115
|
+
expect(driver_mock).to_not receive(:render)
|
116
|
+
|
117
|
+
saver.save
|
118
|
+
expect(saver).to_not be_screenshot_saved
|
119
|
+
expect(saver).to_not be_html_saved
|
120
|
+
end
|
121
|
+
|
122
|
+
describe '#output_screenshot_path' do
|
123
|
+
let(:saver) { Capybara::Screenshot::Saver.new(capybara_mock, page_mock) }
|
124
|
+
|
125
|
+
before do
|
126
|
+
allow(saver).to receive(:html_path) { 'page.html' }
|
127
|
+
allow(saver).to receive(:screenshot_path) { 'screenshot.png' }
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'outputs the path for the HTML screenshot' do
|
131
|
+
allow(saver).to receive(:html_saved?).and_return(true)
|
132
|
+
expect(saver).to receive(:output).with("HTML screenshot: page.html")
|
133
|
+
saver.output_screenshot_path
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'outputs the path for the Image screenshot' do
|
137
|
+
allow(saver).to receive(:screenshot_saved?).and_return(true)
|
138
|
+
expect(saver).to receive(:output).with("Image screenshot: screenshot.png")
|
139
|
+
saver.output_screenshot_path
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "with selenium driver" do
|
144
|
+
before do
|
145
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:selenium)
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'saves via browser' do
|
149
|
+
browser_mock = double('browser')
|
150
|
+
expect(driver_mock).to receive(:browser).and_return(browser_mock)
|
151
|
+
expect(browser_mock).to receive(:save_screenshot).with(screenshot_path)
|
152
|
+
|
153
|
+
saver.save
|
154
|
+
expect(saver).to be_screenshot_saved
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "with poltergeist driver" do
|
159
|
+
before do
|
160
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:poltergeist)
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'saves driver render with :full => true' do
|
164
|
+
expect(driver_mock).to receive(:render).with(screenshot_path, {:full => true})
|
165
|
+
|
166
|
+
saver.save
|
167
|
+
expect(saver).to be_screenshot_saved
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe "with poltergeist_billy driver" do
|
172
|
+
before do
|
173
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:poltergeist_billy)
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'saves driver render with :full => true' do
|
177
|
+
expect(driver_mock).to receive(:render).with(screenshot_path, {:full => true})
|
178
|
+
|
179
|
+
saver.save
|
180
|
+
expect(saver).to be_screenshot_saved
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe "with webkit driver" do
|
185
|
+
before do
|
186
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:webkit)
|
187
|
+
end
|
188
|
+
|
189
|
+
context 'has render method' do
|
190
|
+
before do
|
191
|
+
allow(driver_mock).to receive(:respond_to?).with(:'save_screenshot').and_return(false)
|
192
|
+
end
|
193
|
+
|
194
|
+
it 'saves driver render' do
|
195
|
+
expect(driver_mock).to receive(:render).with(screenshot_path)
|
196
|
+
|
197
|
+
saver.save
|
198
|
+
expect(saver).to be_screenshot_saved
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
context 'has save_screenshot method' do
|
203
|
+
let(:webkit_options){ {width: 800, height: 600} }
|
204
|
+
|
205
|
+
before do
|
206
|
+
allow(driver_mock).to receive(:respond_to?).with(:'save_screenshot').and_return(true)
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'saves driver render' do
|
210
|
+
expect(driver_mock).to receive(:save_screenshot).with(screenshot_path, {})
|
211
|
+
|
212
|
+
saver.save
|
213
|
+
expect(saver).to be_screenshot_saved
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'passes webkit_options to driver' do
|
217
|
+
allow(Capybara::Screenshot).to receive(:webkit_options).and_return( webkit_options )
|
218
|
+
expect(driver_mock).to receive(:save_screenshot).with(screenshot_path, webkit_options)
|
219
|
+
|
220
|
+
saver.save
|
221
|
+
expect(saver).to be_screenshot_saved
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe "with webkit debug driver" do
|
227
|
+
before do
|
228
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:webkit_debug)
|
229
|
+
end
|
230
|
+
|
231
|
+
it 'saves driver render' do
|
232
|
+
expect(driver_mock).to receive(:render).with(screenshot_path)
|
233
|
+
|
234
|
+
saver.save
|
235
|
+
expect(saver).to be_screenshot_saved
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
describe "with unknown driver" do
|
240
|
+
before do
|
241
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:unknown)
|
242
|
+
allow(saver).to receive(:warn).and_return(nil)
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'saves driver render' do
|
246
|
+
expect(driver_mock).to receive(:render).with(screenshot_path)
|
247
|
+
|
248
|
+
saver.save
|
249
|
+
expect(saver).to be_screenshot_saved
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'outputs warning about unknown results' do
|
253
|
+
# Not pure mock testing
|
254
|
+
expect(saver).to receive(:warn).with(/screenshot driver for 'unknown'.*unknown results/).and_return(nil)
|
255
|
+
|
256
|
+
saver.save
|
257
|
+
expect(saver).to be_screenshot_saved
|
258
|
+
end
|
259
|
+
|
260
|
+
describe "with rack_test driver" do
|
261
|
+
before do
|
262
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:rack_test)
|
263
|
+
end
|
264
|
+
|
265
|
+
it 'indicates that a screenshot could not be saved' do
|
266
|
+
saver.save
|
267
|
+
expect(saver).to_not be_screenshot_saved
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
describe "with mechanize driver" do
|
272
|
+
before do
|
273
|
+
allow(capybara_mock).to receive(:current_driver).and_return(:mechanize)
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'indicates that a screenshot could not be saved' do
|
277
|
+
saver.save
|
278
|
+
expect(saver).to_not be_screenshot_saved
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|