|
18 | 18 |
|
19 | 19 | NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; |
20 | 20 | NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; |
| 21 | +NSString *const FBReferenceImageKey = @"FBReferenceImageKey"; |
| 22 | +NSString *const FBCapturedImageKey = @"FBCapturedImageKey"; |
| 23 | +NSString *const FBDiffedImageKey = @"FBDiffedImageKey"; |
21 | 24 |
|
22 | 25 | typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) { |
23 | 26 | FBTestSnapshotFileNameTypeReference, |
@@ -126,25 +129,25 @@ - (BOOL)compareReferenceImage:(UIImage *)referenceImage |
126 | 129 | tolerance:(CGFloat)tolerance |
127 | 130 | error:(NSError **)errorPtr |
128 | 131 | { |
129 | | - if (CGSizeEqualToSize(referenceImage.size, image.size)) { |
130 | | - BOOL imagesEqual = [referenceImage fb_compareWithImage:image tolerance:tolerance]; |
131 | | - if (NULL != errorPtr) { |
132 | | - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain |
133 | | - code:FBSnapshotTestControllerErrorCodeImagesDifferent |
134 | | - userInfo:@{ |
135 | | - NSLocalizedDescriptionKey: @"Images different", |
136 | | - }]; |
137 | | - } |
138 | | - return imagesEqual; |
| 132 | + BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size); |
| 133 | + if (sameImageDimensions && [referenceImage fb_compareWithImage:image tolerance:tolerance]) { |
| 134 | + return YES; |
139 | 135 | } |
| 136 | + |
140 | 137 | if (NULL != errorPtr) { |
| 138 | + NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes"; |
| 139 | + NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", tolerance * 100] |
| 140 | + : [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)]; |
| 141 | + FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes; |
| 142 | + |
141 | 143 | *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain |
142 | | - code:FBSnapshotTestControllerErrorCodeImagesDifferentSizes |
| 144 | + code:errorCode |
143 | 145 | userInfo:@{ |
144 | | - NSLocalizedDescriptionKey: @"Images different sizes", |
145 | | - NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"referenceImage:%@, image:%@", |
146 | | - NSStringFromCGSize(referenceImage.size), |
147 | | - NSStringFromCGSize(image.size)], |
| 146 | + NSLocalizedDescriptionKey: errorDescription, |
| 147 | + NSLocalizedFailureReasonErrorKey: errorReason, |
| 148 | + FBReferenceImageKey: referenceImage, |
| 149 | + FBCapturedImageKey: image, |
| 150 | + FBDiffedImageKey: [referenceImage fb_diffWithImage:image], |
148 | 151 | }]; |
149 | 152 | } |
150 | 153 | return NO; |
@@ -279,11 +282,10 @@ - (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer |
279 | 282 | UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; |
280 | 283 | BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr]; |
281 | 284 | if (!imagesSame) { |
282 | | - [self saveFailedReferenceImage:referenceImage |
283 | | - testImage:snapshot |
284 | | - selector:selector |
285 | | - identifier:identifier |
286 | | - error:errorPtr]; |
| 285 | + NSError *saveError = nil; |
| 286 | + if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) { |
| 287 | + NSLog(@"Error saving test images: %@", saveError); |
| 288 | + } |
287 | 289 | } |
288 | 290 | return imagesSame; |
289 | 291 | } |
|
0 commit comments