motion-juxtapose 0.2.0 → 0.3.0

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