diff --git a/Sources/SnapshotTesting/AssertSnapshot.swift b/Sources/SnapshotTesting/AssertSnapshot.swift index 24868e08..e0c7d19c 100644 --- a/Sources/SnapshotTesting/AssertSnapshot.swift +++ b/Sources/SnapshotTesting/AssertSnapshot.swift @@ -358,9 +358,11 @@ public func verifySnapshot( if !isSwiftTesting, ProcessInfo.processInfo.environment.keys.contains("__XCODE_BUILT_PRODUCTS_DIR_PATHS") { - XCTContext.runActivity(named: "Attached Recorded Snapshot") { activity in - let attachment = XCTAttachment(contentsOfFile: snapshotFileUrl) - activity.add(attachment) + runOnMainThread { + XCTContext.runActivity(named: "Attached Recorded Snapshot") { activity in + let attachment = XCTAttachment(contentsOfFile: snapshotFileUrl) + activity.add(attachment) + } } } #endif @@ -420,9 +422,11 @@ public func verifySnapshot( if !attachments.isEmpty { #if !os(Linux) && !os(Windows) if ProcessInfo.processInfo.environment.keys.contains("__XCODE_BUILT_PRODUCTS_DIR_PATHS") { - XCTContext.runActivity(named: "Attached Failure Diff") { activity in - attachments.forEach { - activity.add($0) + runOnMainThread { + XCTContext.runActivity(named: "Attached Failure Diff") { activity in + attachments.forEach { + activity.add($0) + } } } } @@ -498,3 +502,11 @@ private class CleanCounterBetweenTestCases: NSObject, XCTestObservation { } } } + +private func runOnMainThread(action: () -> Void) { + if Thread.isMainThread { + action() + } else { + DispatchQueue.main.sync(execute: action) + } +}