motion-juxtapose 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/LaunchScreen.xib +32 -0
  3. data/README.md +27 -0
  4. data/Rakefile +1 -0
  5. data/lib/juxtapose/image_matcher.rb +21 -0
  6. data/lib/juxtapose/rspec.rb +10 -3
  7. data/lib/juxtapose/screenshotter.rb +27 -14
  8. data/lib/juxtapose/strategy/appium_strategy.rb +33 -0
  9. data/lib/juxtapose/strategy/mac_bacon_strategy.rb +3 -1
  10. data/lib/juxtapose/version.rb +1 -1
  11. data/lib/motion-juxtapose.rb +2 -0
  12. data/spec/controllers/test_controller_spec.rb +1 -1
  13. data/spec/files/dog1.jpg +0 -0
  14. data/spec/files/dog2.jpg +0 -0
  15. data/spec/files/dog_fuzzy.jpg +0 -0
  16. data/spec/lib/rspec_matchers_spec.rb +18 -0
  17. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png +0 -0
  18. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png +0 -0
  19. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png +0 -0
  20. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png +0 -0
  21. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png +0 -0
  22. data/spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/current.png +0 -0
  23. data/spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/current.png +0 -0
  24. data/spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png +0 -0
  25. data/spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png +0 -0
  26. data/spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png +0 -0
  27. metadata +33 -8
  28. data/spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png +0 -0
  29. data/spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png +0 -0
  30. data/spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a58dcf720096d73d57d3a904dee1bc216889ce5c
4
- data.tar.gz: b54b20541785bfbcb8873f552021578e034ea12e
3
+ metadata.gz: d2ccac7f22e4efec4bbf3c70e6beea4764eb4539
4
+ data.tar.gz: 3eb7f65dd5b4585f891a97f7eac80892fbc5d828
5
5
  SHA512:
6
- metadata.gz: 78e454b932c47f2f76cc27ba28e97c2016fe921f1b3febc6b05164236dd95af2ce5fc542b3a7198af7d3c96be7087e81be1e343b90118c79a83e619d9a6dd2b1
7
- data.tar.gz: f2253d30b74513c06b7393734f7155be1c45c482d036328203e5d657d3a3a961596863d8b71a70f2446e703b04a0c5aa15ab5ee1ac2c27b106966daa32fe1347
6
+ metadata.gz: ed97658f49980bbeb7aad17b81d63d6c6be702aff3e6a5651c9eb97dd0130b2e815b33c8b5542c9016f15af2addef85b7175716f306991efaa6d5bbba666acf1
7
+ data.tar.gz: d667feadb1158ce8dc85be01d79569fb96ef690bf77d19337aa39e0dfdfa806c6193aa30792ef69550cd6672cf9df5dcc96662f19ef61ff02e2d009ade0f4a32
data/LaunchScreen.xib ADDED
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
5
+ <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
6
+ </dependencies>
7
+ <objects>
8
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
9
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
10
+ <view contentMode="scaleToFill" id="iN0-l3-epB">
11
+ <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
12
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
13
+ <subviews>
14
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Juxtapose" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
15
+ <rect key="frame" x="20" y="140" width="441" height="43"/>
16
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
17
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
18
+ <nil key="highlightedColor"/>
19
+ </label>
20
+ </subviews>
21
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
22
+ <constraints>
23
+ <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
24
+ <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
25
+ <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
26
+ </constraints>
27
+ <nil key="simulatedStatusBarMetrics"/>
28
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
29
+ <point key="canvasLocation" x="548" y="455"/>
30
+ </view>
31
+ </objects>
32
+ </document>
data/README.md CHANGED
@@ -76,6 +76,28 @@ Then /^the screen should match "([^\"]*)"$/ do |template|
76
76
  end
77
77
  ```
78
78
 
79
+ ### Appium
80
+
81
+ Add the following config to your features/support/env.rb:
82
+
83
+ ```ruby
84
+ require 'motion-juxtapose'
85
+ Juxtapose::AppiumStrategy.setup
86
+ ```
87
+
88
+ This lets you write a screenshot matcher along the lines of:
89
+
90
+ ```ruby
91
+ Then /^the screen should match "([^\"]*)"$/ do |template|
92
+ wait_for_nothing_to_be_animating
93
+ #unlike frank we need to pass in a project root to find the screenshot directory
94
+ screenshotter = Juxtapose::Screenshotter.new(self, template, 0, File.expand_path('./'))
95
+
96
+ max_attempts = 20
97
+ expect(screenshotter.attempt_verify(max_attempts)).to eq(true)
98
+ end
99
+ ```
100
+
79
101
  ## Testing Rails Apps
80
102
 
81
103
  ### Capybara
@@ -131,6 +153,10 @@ To start it, run `bundle exec juxtapose` in the root of your project and browse
131
153
 
132
154
  ## Release Notes
133
155
 
156
+ #### v.0.3.0
157
+ * Add Appium support ([@squidpunch](http://github.com/squidpunch))
158
+ * Add support for 6/6+ screen sizes ([@squidpunch](http://github.com/squidpunch))
159
+
134
160
  #### v.0.2.0
135
161
  * Rails/rspec support
136
162
  * Fixes to work under newest version of ImageMagick
@@ -150,6 +176,7 @@ To start it, run `bundle exec juxtapose` in the root of your project and browse
150
176
  * [Thomas Mayfield](http://github.com/thegreatape )
151
177
  * [Jeffrey Chupp](http://github.com/semanticart)
152
178
  * [Michael Denomy](http://github.com/mdenomy)
179
+ * [David Larrabee](http://github.com/squidpunch)
153
180
 
154
181
 
155
182
  ## Contributing
data/Rakefile CHANGED
@@ -10,4 +10,5 @@ require 'motion-juxtapose'
10
10
  Motion::Project::App.setup do |app|
11
11
  app.name = 'juxtapose-tests'
12
12
  app.detect_dependencies = false
13
+ app.info_plist["UILaunchStoryboardName"] = "LaunchScreen"
13
14
  end
@@ -0,0 +1,21 @@
1
+ class ImageMatcher
2
+ attr_reader :fuzz_factor, :diff_file_name
3
+ def initialize(options={})
4
+ @fuzz_factor = options.fetch(:fuzz_factor, 0)
5
+ @diff_file_name = options.fetch(:diff_file_name, './temp.png')
6
+ end
7
+
8
+ def identical?(source, target)
9
+ compare_command = "compare -fuzz #{fuzz_factor}% -metric AE -dissimilarity-threshold 1 -subimage-search"
10
+ out = `#{compare_command} \"#{source}\" \"#{target}\" \"#{diff_file_name}\" 2>&1`
11
+ out.chomp!
12
+ out.start_with?('0')
13
+ end
14
+
15
+ def cleanup
16
+ if File.exist?(diff_file_name)
17
+ `rm #{diff_file_name}`
18
+ end
19
+ end
20
+ end
21
+
@@ -1,7 +1,14 @@
1
1
  if defined?(RSpec::Matchers)
2
- RSpec::Matchers.define :look_like do |predicate|
3
- match do |page|
4
- page.looks_like?(predicate) == true
2
+ RSpec::Matchers.define :look_like do |expected, options={}|
3
+ match do |actual|
4
+ if actual.respond_to?(:looks_like?)
5
+ actual.looks_like?(expected) == true
6
+ else
7
+ matcher = ImageMatcher.new(options)
8
+ matcher.identical?(expected, actual).tap do
9
+ matcher.cleanup
10
+ end
11
+ end
5
12
  end
6
13
  end
7
14
  end
@@ -35,12 +35,14 @@ module Juxtapose
35
35
  attr_reader :strategy
36
36
  attr_reader :template
37
37
  attr_reader :fuzz_factor
38
+ attr_accessor :project_root
38
39
 
39
- def initialize(context, template, fuzz_factor = 0)
40
+ def initialize(context, template, fuzz_factor = 0, project_root = nil)
40
41
  @context = context
41
42
  @template = template.gsub(' ', '-')
42
43
  @strategy = strategy_for_context(context)
43
44
  @fuzz_factor = fuzz_factor
45
+ @project_root = project_root || default_project_root
44
46
  end
45
47
 
46
48
  def strategy_for_context(context)
@@ -50,10 +52,12 @@ module Juxtapose
50
52
  Juxtapose::FrankStrategy.new(context)
51
53
  elsif defined?(Capybara)
52
54
  Juxtapose::CapybaraStrategy.new(context)
55
+ elsif defined?(Appium)
56
+ Juxtapose::AppiumStrategy.new(context)
53
57
  end
54
58
  end
55
59
 
56
- def project_root
60
+ def default_project_root
57
61
  if defined? Rails
58
62
  Rails.root
59
63
  else
@@ -66,13 +70,19 @@ module Juxtapose
66
70
  end
67
71
 
68
72
  def dir
69
- @dir ||= File.join(project_root,
70
- strategy.spec_dir,
71
- strategy.device_name,
72
- strategy.version,
73
- test_name,
74
- template).tap do |dir|
75
- `mkdir -p #{dir}`
73
+ @dir ||= begin
74
+ parts = [
75
+ project_root,
76
+ strategy.spec_dir,
77
+ strategy.device_name,
78
+ strategy.version,
79
+ test_name,
80
+ template
81
+ ].map {|p| p.to_s.gsub(/ /, '-')}
82
+
83
+ File.join(*parts).tap do |dir|
84
+ `mkdir -p #{dir}`
85
+ end
76
86
  end
77
87
  end
78
88
 
@@ -125,7 +135,12 @@ module Juxtapose
125
135
  end
126
136
 
127
137
  def imagemagick_installed?
128
- `command -v convert`.length > 0
138
+ if RUBY_PLATFORM =~ /darwin/
139
+ `command -v convert`
140
+ else
141
+ `which convert`
142
+ end
143
+ $?.success?
129
144
  end
130
145
 
131
146
  private
@@ -147,10 +162,8 @@ module Juxtapose
147
162
  end
148
163
 
149
164
  def identical_images?
150
- compare_command = "compare -fuzz #{fuzz_factor}% -metric AE -dissimilarity-threshold 1 -subimage-search"
151
- out = `#{compare_command} \"#{filename :current}\" \"#{filename :accepted}\" \"#{filename :diff}\" 2>&1`
152
- out.chomp!
153
- out.start_with?('0')
165
+ matcher = ImageMatcher.new(fuzz_factor: fuzz_factor, diff_file_name: filename(:diff))
166
+ matcher.identical?(filename(:current), filename(:accepted))
154
167
  end
155
168
 
156
169
  def screenshots_match?
@@ -0,0 +1,33 @@
1
+ module Juxtapose
2
+ class AppiumStrategy
3
+ attr_accessor :context
4
+ attr_accessor :project_root
5
+ def self.setup
6
+ Cucumber::RbSupport::RbDsl.register_rb_hook('before', [], Proc.new {|scenario, block| @__scenario = scenario })
7
+ end
8
+
9
+ def initialize(context)
10
+ self.context = context
11
+ end
12
+
13
+ def spec_dir
14
+ "features/screens"
15
+ end
16
+
17
+ def device_name
18
+ context.driver_attributes[:caps][:deviceName].gsub(" ","-").downcase
19
+ end
20
+
21
+ def version
22
+ context.driver_attributes[:caps][:platformVersion]
23
+ end
24
+
25
+ def current_spec_description
26
+ context.instance_variable_get('@__scenario').name
27
+ end
28
+
29
+ def save_current(filename)
30
+ context.screenshot(filename)
31
+ end
32
+ end
33
+ end
@@ -16,7 +16,9 @@ module Juxtapose
16
16
  def device_name
17
17
  name = [UIDevice.currentDevice.model.gsub(/\s+Simulator/, '').downcase]
18
18
  name << 'retina' if UIScreen.mainScreen.scale > 1
19
- name << '5' if UIScreen.mainScreen.bounds.size.height > 480
19
+ name << '5' if UIScreen.mainScreen.bounds.size.height == 568.0
20
+ name << '6' if UIScreen.mainScreen.bounds.size.height == 667.0
21
+ name << '6-plus' if UIScreen.mainScreen.bounds.size.height == 736.0
20
22
  name.join('-')
21
23
  end
22
24
 
@@ -1,3 +1,3 @@
1
1
  module Juxtapose
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -1,7 +1,9 @@
1
1
  require "juxtapose/version"
2
+ require "juxtapose/image_matcher"
2
3
  require "juxtapose/screenshotter"
3
4
  require "juxtapose/strategy/frank_strategy"
4
5
  require "juxtapose/strategy/capybara_strategy"
6
+ require "juxtapose/strategy/appium_strategy"
5
7
 
6
8
  if defined?(Motion::Project::Config)
7
9
  Motion::Project::App.setup do |app|
@@ -33,7 +33,7 @@ describe 'screenshot testing under bacon' do
33
33
  error.should.not.be.nil
34
34
  error.message.should =~ /Screenshot did not match/
35
35
 
36
- spec_dir = "spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot"
36
+ spec_dir = "spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot"
37
37
 
38
38
  File.should.exist(File.join( ENV["RUBYMOTION_PROJECT_DIR"], spec_dir, "current.png"))
39
39
  File.should.exist(File.join( ENV["RUBYMOTION_PROJECT_DIR"], spec_dir, "diff.png"))
Binary file
Binary file
Binary file
@@ -0,0 +1,18 @@
1
+ if defined?(RSpec)
2
+ describe "rspec matchers" do
3
+ require_relative '../../lib/juxtapose/image_matcher'
4
+ require_relative '../../lib/juxtapose/rspec'
5
+
6
+ it "passes true if files are identical" do
7
+ dog1 = File.join(File.dirname(__FILE__), "../files/dog1.jpg")
8
+ dog2 = File.join(File.dirname(__FILE__), "../files/dog2.jpg")
9
+ expect(dog1).to look_like(dog2)
10
+ end
11
+
12
+ it "passes with a fuzzy threshold" do
13
+ dog1 = File.join(File.dirname(__FILE__), "../files/dog1.jpg")
14
+ dog2 = File.join(File.dirname(__FILE__), "../files/dog_fuzzy.jpg")
15
+ expect(dog1).to look_like(dog2, fuzz_factor: 78.0)
16
+ end
17
+ end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-juxtapose
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Lind
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-27 00:00:00.000000000 Z
13
+ date: 2015-05-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sinatra
@@ -107,6 +107,7 @@ files:
107
107
  - ".gitignore"
108
108
  - Gemfile
109
109
  - LICENSE.txt
110
+ - LaunchScreen.xib
110
111
  - README.md
111
112
  - Rakefile
112
113
  - app/app_delegate.rb
@@ -152,8 +153,10 @@ files:
152
153
  - lib/juxtapose/application/spec/spec_helper.rb
153
154
  - lib/juxtapose/application/views/index.html.haml
154
155
  - lib/juxtapose/capybara.rb
156
+ - lib/juxtapose/image_matcher.rb
155
157
  - lib/juxtapose/rspec.rb
156
158
  - lib/juxtapose/screenshotter.rb
159
+ - lib/juxtapose/strategy/appium_strategy.rb
157
160
  - lib/juxtapose/strategy/capybara_strategy.rb
158
161
  - lib/juxtapose/strategy/frank_strategy.rb
159
162
  - lib/juxtapose/strategy/mac_bacon_strategy.rb
@@ -161,9 +164,20 @@ files:
161
164
  - lib/motion-juxtapose.rb
162
165
  - motion-juxtapose.gemspec
163
166
  - spec/controllers/test_controller_spec.rb
164
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png
165
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png
166
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png
167
+ - spec/files/dog1.jpg
168
+ - spec/files/dog2.jpg
169
+ - spec/files/dog_fuzzy.jpg
170
+ - spec/lib/rspec_matchers_spec.rb
171
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png
172
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png
173
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png
174
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png
175
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png
176
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/current.png
177
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/current.png
178
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png
179
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png
180
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png
167
181
  homepage: https://github.com/terriblelabs/motion-juxtapose
168
182
  licenses:
169
183
  - MIT
@@ -190,6 +204,17 @@ specification_version: 4
190
204
  summary: Screenshot-based assertions for RubyMotion projects
191
205
  test_files:
192
206
  - spec/controllers/test_controller_spec.rb
193
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png
194
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png
195
- - spec/screens/iphone-retina/ios_7.1/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png
207
+ - spec/files/dog1.jpg
208
+ - spec/files/dog2.jpg
209
+ - spec/files/dog_fuzzy.jpg
210
+ - spec/lib/rspec_matchers_spec.rb
211
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/accepted.png
212
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/accepted.png
213
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png
214
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png
215
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png
216
+ - spec/screens/iphone-retina-6/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/current.png
217
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-passes-when-there-is-an-identical-accepted-screenshot/accepted-screenshot/current.png
218
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-and-produces-diffs-on-failure/going-to-differ-screenshot/current.png
219
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-no-accepted-screenshot-is-present/no-accepted-screenshot/current.png
220
+ - spec/screens/iphone-retina/ios_8.3/screenshot-testing-under-bacon-raises-an-error-when-screens-are-different-sizes/different-sized-screenshot/accepted.png