From 12fda0324af23ab4d34d770b51bec3e996e96c54 Mon Sep 17 00:00:00 2001 From: Justas Liola Date: Fri, 16 Jun 2023 16:43:04 +0300 Subject: [PATCH 1/5] Quick proposal to fix .wait method --- Sources/SnapshotTesting/Common/View.swift | 32 ++++++++++++------- .../Snapshotting/UIViewController.swift | 6 ++-- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/Sources/SnapshotTesting/Common/View.swift b/Sources/SnapshotTesting/Common/View.swift index fb6261c94..b6cc37eb5 100644 --- a/Sources/SnapshotTesting/Common/View.swift +++ b/Sources/SnapshotTesting/Common/View.swift @@ -949,7 +949,8 @@ func snapshotView( drawHierarchyInKeyWindow: Bool, traits: UITraitCollection, view: UIView, - viewController: UIViewController + viewController: UIViewController, + delay: Double? = nil ) -> Async { let initialFrame = view.frame @@ -965,17 +966,26 @@ func snapshotView( return (view.snapshot ?? Async { callback in addImagesForRenderedViews(view).sequence().run { views in - callback( - renderer(bounds: view.bounds, for: traits).image { ctx in - if drawHierarchyInKeyWindow { - view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) - } else { - view.layer.render(in: ctx.cgContext) - } + let completion = { + callback( + renderer(bounds: view.bounds, for: traits).image { ctx in + if drawHierarchyInKeyWindow { + view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) + } else { + view.layer.render(in: ctx.cgContext) + } + } + ) + views.forEach { $0.removeFromSuperview() } + view.frame = initialFrame + } + if let delay = delay { + DispatchQueue.main.asyncAfter(deadline: .now() + delay) { + completion() + } + } else { + completion() } - ) - views.forEach { $0.removeFromSuperview() } - view.frame = initialFrame } }).map { dispose(); return $0 } } diff --git a/Sources/SnapshotTesting/Snapshotting/UIViewController.swift b/Sources/SnapshotTesting/Snapshotting/UIViewController.swift index 833ec5e0a..b365bbeac 100644 --- a/Sources/SnapshotTesting/Snapshotting/UIViewController.swift +++ b/Sources/SnapshotTesting/Snapshotting/UIViewController.swift @@ -20,7 +20,8 @@ extension Snapshotting where Value == UIViewController, Format == UIImage { precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize? = nil, - traits: UITraitCollection = .init() + traits: UITraitCollection = .init(), + delay: Double? = nil ) -> Snapshotting { @@ -30,7 +31,8 @@ extension Snapshotting where Value == UIViewController, Format == UIImage { drawHierarchyInKeyWindow: false, traits: traits, view: viewController.view, - viewController: viewController + viewController: viewController, + delay: delay ) } } From b2c661d5000381efea1187f9170f74fbb51b1678 Mon Sep 17 00:00:00 2001 From: Justas Liola Date: Fri, 16 Jun 2023 17:00:05 +0300 Subject: [PATCH 2/5] Added snapshots --- Tests/SnapshotTestingTests/DelayTests.swift | 53 ++++++++++++++++++ .../DelayTests/testDelayViewDidLoad.1.png | Bin 0 -> 78508 bytes 2 files changed, 53 insertions(+) create mode 100644 Tests/SnapshotTestingTests/DelayTests.swift create mode 100644 Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testDelayViewDidLoad.1.png diff --git a/Tests/SnapshotTestingTests/DelayTests.swift b/Tests/SnapshotTestingTests/DelayTests.swift new file mode 100644 index 000000000..9137f08fb --- /dev/null +++ b/Tests/SnapshotTestingTests/DelayTests.swift @@ -0,0 +1,53 @@ +import XCTest +@testable import SnapshotTesting + +class DelayTests: XCTestCase { + func testDelayViewDidLoad() { + let sut = DelayedViewController() + + assertSnapshot(matching: sut, as: .image(on: .iPhone13, delay: 2)) + } +} + +final class DelayedViewController: UIViewController { + + private lazy var topLabel = UILabel() + private lazy var bottomLabel = UILabel() + + override func viewDidLoad() { + super.viewDidLoad() + + setupUI() + + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.topLabel.text = "Goodbye viewDidLoad" + } + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.bottomLabel.text = "Goodbye viewDidAppear" + } + } + + private func setupUI() { + view.backgroundColor = .white + + topLabel.text = "Hello viewDidLoad" + bottomLabel.text = "Hello viewDidAppear" + topLabel.translatesAutoresizingMaskIntoConstraints = false + bottomLabel.translatesAutoresizingMaskIntoConstraints = false + + view.addSubview(topLabel) + view.addSubview(bottomLabel) + + NSLayoutConstraint.activate([ + topLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), + topLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), + bottomLabel.topAnchor.constraint(equalTo: topLabel.bottomAnchor), + bottomLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor) + ]) + } +} diff --git a/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testDelayViewDidLoad.1.png b/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testDelayViewDidLoad.1.png new file mode 100644 index 0000000000000000000000000000000000000000..cee791b6a74d2fdb9da0f920c21deef722ec82ea GIT binary patch literal 78508 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 R3i=YUV04VM3l5+4|0i8_wTJ)! literal 0 HcmV?d00001 From 438abf3345828d83b3a82ae1af5a511b89181b39 Mon Sep 17 00:00:00 2001 From: Justas Liola Date: Mon, 19 Jun 2023 07:56:31 +0300 Subject: [PATCH 3/5] Added snapshots with default and wait --- Tests/SnapshotTestingTests/DelayTests.swift | 86 ++++++++++-------- .../DelayTests/testViewDidLoad.1.png | Bin 0 -> 74882 bytes .../DelayTests/testWaitViewDidLoad.1.png | Bin 0 -> 74882 bytes 3 files changed, 48 insertions(+), 38 deletions(-) create mode 100644 Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testViewDidLoad.1.png create mode 100644 Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testWaitViewDidLoad.1.png diff --git a/Tests/SnapshotTestingTests/DelayTests.swift b/Tests/SnapshotTestingTests/DelayTests.swift index 9137f08fb..3978df280 100644 --- a/Tests/SnapshotTestingTests/DelayTests.swift +++ b/Tests/SnapshotTestingTests/DelayTests.swift @@ -5,49 +5,59 @@ class DelayTests: XCTestCase { func testDelayViewDidLoad() { let sut = DelayedViewController() - assertSnapshot(matching: sut, as: .image(on: .iPhone13, delay: 2)) + assertSnapshot(matching: sut, as: .image(on: .iPhone13, delay: 2)) + } + func testViewDidLoad() { + let sut = DelayedViewController() + + assertSnapshot(matching: sut, as: .image(on: .iPhone13)) + } + func testWaitViewDidLoad() { + let sut = DelayedViewController() + + assertSnapshot(matching: sut, as: .wait(for: 2, on: .image(on: .iPhone13))) } } -final class DelayedViewController: UIViewController { - - private lazy var topLabel = UILabel() - private lazy var bottomLabel = UILabel() - - override func viewDidLoad() { - super.viewDidLoad() - - setupUI() - - DispatchQueue.main.asyncAfter(deadline: .now() + 1) { - self.topLabel.text = "Goodbye viewDidLoad" - } - } +private final class DelayedViewController: UIViewController { + + private lazy var topLabel = UILabel() + private lazy var bottomLabel = UILabel() + + override func viewDidLoad() { + super.viewDidLoad() + + setupUI() - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - DispatchQueue.main.asyncAfter(deadline: .now() + 1) { - self.bottomLabel.text = "Goodbye viewDidAppear" - } + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.topLabel.text = "Goodbye viewDidLoad" } + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) - private func setupUI() { - view.backgroundColor = .white - - topLabel.text = "Hello viewDidLoad" - bottomLabel.text = "Hello viewDidAppear" - topLabel.translatesAutoresizingMaskIntoConstraints = false - bottomLabel.translatesAutoresizingMaskIntoConstraints = false - - view.addSubview(topLabel) - view.addSubview(bottomLabel) - - NSLayoutConstraint.activate([ - topLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), - topLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), - bottomLabel.topAnchor.constraint(equalTo: topLabel.bottomAnchor), - bottomLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor) - ]) + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.bottomLabel.text = "Goodbye viewDidAppear" } + } + + private func setupUI() { + view.backgroundColor = .white + + topLabel.text = "Hello viewDidLoad" + bottomLabel.text = "Hello viewDidAppear" + topLabel.translatesAutoresizingMaskIntoConstraints = false + bottomLabel.translatesAutoresizingMaskIntoConstraints = false + + view.addSubview(topLabel) + view.addSubview(bottomLabel) + + NSLayoutConstraint.activate([ + topLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), + topLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), + bottomLabel.topAnchor.constraint(equalTo: topLabel.bottomAnchor), + bottomLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor) + ]) + } } diff --git a/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testViewDidLoad.1.png b/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testViewDidLoad.1.png new file mode 100644 index 0000000000000000000000000000000000000000..533664f86a2edb6071e701fa47edd73db95bfe62 GIT binary patch literal 74882 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 N(ztjw`^?RI{|km*(W(Fd literal 0 HcmV?d00001 diff --git a/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testWaitViewDidLoad.1.png b/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testWaitViewDidLoad.1.png new file mode 100644 index 0000000000000000000000000000000000000000..533664f86a2edb6071e701fa47edd73db95bfe62 GIT binary patch literal 74882 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 N(ztjw`^?RI{|km*(W(Fd literal 0 HcmV?d00001 From f7a3912f7e1b66af34f2100bea4122ad8249edba Mon Sep 17 00:00:00 2001 From: Justas Liola Date: Tue, 27 Jun 2023 16:16:47 +0300 Subject: [PATCH 4/5] Updated based on PR comments --- Sources/SnapshotTesting/Common/View.swift | 31 +++++++------------ .../Extensions/Async+Delay.swift | 20 ++++++++++++ 2 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 Sources/SnapshotTesting/Extensions/Async+Delay.swift diff --git a/Sources/SnapshotTesting/Common/View.swift b/Sources/SnapshotTesting/Common/View.swift index b6cc37eb5..ca53e1fbe 100644 --- a/Sources/SnapshotTesting/Common/View.swift +++ b/Sources/SnapshotTesting/Common/View.swift @@ -965,27 +965,18 @@ func snapshotView( if config.safeArea == .zero { view.frame.origin = .init(x: offscreen, y: offscreen) } return (view.snapshot ?? Async { callback in - addImagesForRenderedViews(view).sequence().run { views in - let completion = { - callback( - renderer(bounds: view.bounds, for: traits).image { ctx in - if drawHierarchyInKeyWindow { - view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) - } else { - view.layer.render(in: ctx.cgContext) - } - } - ) - views.forEach { $0.removeFromSuperview() } - view.frame = initialFrame - } - if let delay = delay { - DispatchQueue.main.asyncAfter(deadline: .now() + delay) { - completion() - } - } else { - completion() + addImagesForRenderedViews(view).sequence().delay(by: delay).run { views in + callback( + renderer(bounds: view.bounds, for: traits).image { ctx in + if drawHierarchyInKeyWindow { + view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) + } else { + view.layer.render(in: ctx.cgContext) + } } + ) + views.forEach { $0.removeFromSuperview() } + view.frame = initialFrame } }).map { dispose(); return $0 } } diff --git a/Sources/SnapshotTesting/Extensions/Async+Delay.swift b/Sources/SnapshotTesting/Extensions/Async+Delay.swift new file mode 100644 index 000000000..89f817a3f --- /dev/null +++ b/Sources/SnapshotTesting/Extensions/Async+Delay.swift @@ -0,0 +1,20 @@ +import Foundation + +extension Async { + /// Delays Async `run` block + /// - Parameter timeInterval: Optional duration for Async to wait before running `run` + /// - Returns: Delayed `Async` unless no duration was provided then returns original `Async` + func delay(by timeInterval: TimeInterval?) -> Async { + guard let timeInterval = timeInterval else { + return self + } + + return Async { callback in + run { value in + DispatchQueue.main.asyncAfter(deadline: .now() + timeInterval) { + callback(value) + } + } + } + } +} From 852c1916e0c4274e2dff3038d03b8f4451a04edb Mon Sep 17 00:00:00 2001 From: Justas Liola Date: Sat, 10 Feb 2024 07:34:44 +0200 Subject: [PATCH 5/5] Regenerated failing snapshot screenshot (visually unchanged) --- .../DelayTests/testDelayViewDidLoad.1.png | Bin 78508 -> 78753 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testDelayViewDidLoad.1.png b/Tests/SnapshotTestingTests/__Snapshots__/DelayTests/testDelayViewDidLoad.1.png index cee791b6a74d2fdb9da0f920c21deef722ec82ea..4264f3509c64a1512b290360a31a30b913c3372f 100644 GIT binary patch literal 78753 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 R3i=YUV04VM3l5+4|0i8_wTJ)!