diff --git a/FBSnapshotTestCase/FBSnapshotTestController.m b/FBSnapshotTestCase/FBSnapshotTestController.m index 4fcd614..1d9a09b 100644 --- a/FBSnapshotTestCase/FBSnapshotTestController.m +++ b/FBSnapshotTestCase/FBSnapshotTestController.m @@ -14,6 +14,7 @@ #import #import +#import NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; @@ -181,6 +182,23 @@ - (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage identifier:(NSString *)identifier error:(NSError **)errorPtr { + UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; + + [XCTContext runActivityNamed:identifier ?: NSStringFromSelector(selector) block:^(id _Nonnull activity) { + XCTAttachment *referenceAttachment = [XCTAttachment attachmentWithImage:referenceImage]; + referenceAttachment.name = @"Reference Image"; + + XCTAttachment *failedAttachment = [XCTAttachment attachmentWithImage:testImage]; + failedAttachment.name = @"Failed Image"; + + XCTAttachment *diffAttachment = [XCTAttachment attachmentWithImage:diffImage]; + diffAttachment.name = @"Diffed Image"; + + [activity addAttachment:referenceAttachment]; + [activity addAttachment:failedAttachment]; + [activity addAttachment:diffAttachment]; + }]; + NSData *referencePNGData = UIImagePNGRepresentation(referenceImage); NSData *testPNGData = UIImagePNGRepresentation(testImage); @@ -216,7 +234,6 @@ - (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage identifier:identifier fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff]; - UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; NSData *diffImageData = UIImagePNGRepresentation(diffImage); if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) { @@ -317,6 +334,13 @@ - (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer error:(NSError **)errorPtr { UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; + + [XCTContext runActivityNamed:identifier ?: NSStringFromSelector(selector) block:^(id _Nonnull activity) { + XCTAttachment *recordedAttachment = [XCTAttachment attachmentWithImage:snapshot]; + recordedAttachment.name = @"Recorded Image"; + [activity addAttachment:recordedAttachment]; + }]; + return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr]; } diff --git a/FBSnapshotTestCase/SwiftSupport.swift b/FBSnapshotTestCase/SwiftSupport.swift index de7ff3b..0ef84ff 100644 --- a/FBSnapshotTestCase/SwiftSupport.swift +++ b/FBSnapshotTestCase/SwiftSupport.swift @@ -8,15 +8,15 @@ */ public extension FBSnapshotTestCase { - func FBSnapshotVerifyView(_ view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + func FBSnapshotVerifyView(_ view: UIView, identifier: String? = nil, suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance, file: file, line: line) } - func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String? = nil, suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance, file: file, line: line) } - private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String? = nil, suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { let envReferenceImageDirectory = self.getReferenceImageDirectory(withDefault: FB_REFERENCE_IMAGE_DIR) let envImageDiffDirectory = self.getImageDiffDirectory(withDefault: IMAGE_DIFF_DIR) var error: NSError?