Skip to content

Commit f0f7374

Browse files
committed
Add default configuration options
1 parent 4862d48 commit f0f7374

15 files changed

+49
-27
lines changed

Sources/SnapshotTesting/AssertSnapshot.swift

+6-3
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ public func assertSnapshots<Value, Format>(
173173
/// - snapshotDirectory: Optional directory to save snapshots. By default snapshots will be saved
174174
/// in a directory with the same name as the test file, and that directory will sit inside a
175175
/// directory `__Snapshots__` that sits next to your test file.
176+
/// - snapshotSubdirectory: The default subdirectory for snapshots in the same directory as the test
177+
/// file. Defaults to `__Snapshots__` that sits next to your test file. Only used when `snapshotDirectory` is nil.
176178
/// - timeout: The amount of time a snapshot must be generated in.
177179
/// - file: The file in which failure occurred. Defaults to the file name of the test case in
178180
/// which this function was called.
@@ -186,8 +188,9 @@ public func verifySnapshot<Value, Format>(
186188
as snapshotting: Snapshotting<Value, Format>,
187189
named name: String? = nil,
188190
record recording: Bool = false,
189-
snapshotDirectory: String? = nil,
190-
timeout: TimeInterval = 5,
191+
snapshotDirectory: String? = SnapshottingDefaults.snapshotDirectory,
192+
snapshotSubdirectory: String = SnapshottingDefaults.snapshotSubdirectory,
193+
timeout: TimeInterval = SnapshottingDefaults.timeout,
191194
file: StaticString = #file,
192195
testName: String = #function,
193196
line: UInt = #line
@@ -204,7 +207,7 @@ public func verifySnapshot<Value, Format>(
204207
snapshotDirectory.map { URL(fileURLWithPath: $0, isDirectory: true) }
205208
?? fileUrl
206209
.deletingLastPathComponent()
207-
.appendingPathComponent("__Snapshots__")
210+
.appendingPathComponent(snapshotSubdirectory)
208211
.appendingPathComponent(fileName)
209212

210213
let identifier: String

Sources/SnapshotTesting/Snapshotting/CALayer.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/// assertSnapshot(of: layer, as: .image(precision: 0.99))
1515
/// ```
1616
public static var image: Snapshotting {
17-
return .image(precision: 1)
17+
return .image(precision: SnapshottingDefaults.precision)
1818
}
1919

2020
/// A snapshot strategy for comparing layers based on pixel equality.
@@ -25,7 +25,7 @@
2525
/// match. 98-99% mimics
2626
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
2727
/// human eye.
28-
public static func image(precision: Float, perceptualPrecision: Float = 1) -> Snapshotting {
28+
public static func image(precision: Float, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision) -> Snapshotting {
2929
return SimplySnapshotting.image(
3030
precision: precision, perceptualPrecision: perceptualPrecision
3131
).pullback { layer in
@@ -59,7 +59,7 @@
5959
/// human eye.
6060
/// - traits: A trait collection override.
6161
public static func image(
62-
precision: Float = 1, perceptualPrecision: Float = 1, traits: UITraitCollection = .init()
62+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, traits: UITraitCollection = .init()
6363
)
6464
-> Snapshotting
6565
{

Sources/SnapshotTesting/Snapshotting/CGPath.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
2727
/// human eye.
2828
public static func image(
29-
precision: Float = 1, perceptualPrecision: Float = 1, drawingMode: CGPathDrawingMode = .eoFill
29+
precision: Float = SnapshottingDefaults.precision,
30+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
31+
drawingMode: CGPathDrawingMode = .eoFill
3032
) -> Snapshotting {
3133
return SimplySnapshotting.image(
3234
precision: precision, perceptualPrecision: perceptualPrecision
@@ -64,7 +66,9 @@
6466
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
6567
/// human eye.
6668
public static func image(
67-
precision: Float = 1, perceptualPrecision: Float = 1, scale: CGFloat = 1,
69+
precision: Float = SnapshottingDefaults.precision,
70+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
71+
scale: CGFloat = 1,
6872
drawingMode: CGPathDrawingMode = .eoFill
6973
) -> Snapshotting {
7074
return SimplySnapshotting.image(

Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
/// match. 98-99% mimics
2525
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
2626
/// human eye.
27-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1) -> Snapshotting {
27+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision) -> Snapshotting {
2828
return SimplySnapshotting.image(
2929
precision: precision, perceptualPrecision: perceptualPrecision
3030
).pullback { path in

Sources/SnapshotTesting/Snapshotting/NSImage.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
1616
/// human eye.
1717
/// - Returns: A new diffing strategy.
18-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1) -> Diffing {
18+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision) -> Diffing {
1919
return .init(
2020
toData: { NSImagePNGRepresentation($0)! },
2121
fromData: { NSImage(data: $0)! }

Sources/SnapshotTesting/Snapshotting/NSView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
/// human eye.
2222
/// - size: A view size override.
2323
public static func image(
24-
precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize? = nil
24+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize? = nil
2525
) -> Snapshotting {
2626
return SimplySnapshotting.image(
2727
precision: precision, perceptualPrecision: perceptualPrecision

Sources/SnapshotTesting/Snapshotting/NSViewController.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
/// human eye.
1919
/// - size: A view size override.
2020
public static func image(
21-
precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize? = nil
21+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize? = nil
2222
) -> Snapshotting {
2323
return Snapshotting<NSView, NSImage>.image(
2424
precision: precision, perceptualPrecision: perceptualPrecision, size: size

Sources/SnapshotTesting/Snapshotting/SceneKit.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
1818
/// human eye.
1919
/// - size: The size of the scene.
20-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize)
20+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize)
2121
-> Snapshotting
2222
{
2323
return .scnScene(precision: precision, perceptualPrecision: perceptualPrecision, size: size)
@@ -34,7 +34,7 @@
3434
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
3535
/// human eye.
3636
/// - size: The size of the scene.
37-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize)
37+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize)
3838
-> Snapshotting
3939
{
4040
return .scnScene(precision: precision, perceptualPrecision: perceptualPrecision, size: size)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import Foundation
2+
3+
/// The global configuration options
4+
public enum SnapshottingDefaults {
5+
/// The default subdirectory for snapshots in the same directory as the test file. Defaults to `__Snapshots__` that sits next to your test file. Only used when `snapshotDirectory` is nil.
6+
public static var snapshotSubdirectory = "__Snapshots__"
7+
/// Optional directory to save snapshots. By default snapshots will be saved in a directory with the same name as the test file, and that directory will sit inside a directory `__Snapshots__` that sits next to your test file.
8+
public static var snapshotDirectory: String? = nil
9+
/// The amount of time a snapshot must be generated in.
10+
public static var timeout: TimeInterval = 5
11+
/// The percentage of pixels that must match. Value between 0-1
12+
public static var precision: Float = 1
13+
/// The percentage a pixel must match the source pixel to be considered a match. [98-99% mimics the precision of the human
14+
public static var perceptualPrecision: Float = 1
15+
}

Sources/SnapshotTesting/Snapshotting/SpriteKit.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
1818
/// human eye.
1919
/// - size: The size of the scene.
20-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize)
20+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize)
2121
-> Snapshotting
2222
{
2323
return .skScene(precision: precision, perceptualPrecision: perceptualPrecision, size: size)
@@ -34,7 +34,7 @@
3434
/// [the precision](http://zschuessler.github.io/DeltaE/learn/#toc-defining-delta-e) of the
3535
/// human eye.
3636
/// - size: The size of the scene.
37-
public static func image(precision: Float = 1, perceptualPrecision: Float = 1, size: CGSize)
37+
public static func image(precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, size: CGSize)
3838
-> Snapshotting
3939
{
4040
return .skScene(precision: precision, perceptualPrecision: perceptualPrecision, size: size)

Sources/SnapshotTesting/Snapshotting/SwiftUIView.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
/// - traits: A trait collection override.
3939
public static func image(
4040
drawHierarchyInKeyWindow: Bool = false,
41-
precision: Float = 1,
42-
perceptualPrecision: Float = 1,
41+
precision: Float = SnapshottingDefaults.precision,
42+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
4343
layout: SwiftUISnapshotLayout = .sizeThatFits,
4444
traits: UITraitCollection = .init()
4545
)

Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/// human eye.
1818
/// - scale: The scale to use when loading the reference image from disk.
1919
public static func image(
20-
precision: Float = 1, perceptualPrecision: Float = 1, scale: CGFloat = 1
20+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, scale: CGFloat = 1
2121
) -> Snapshotting {
2222
return SimplySnapshotting.image(
2323
precision: precision, perceptualPrecision: perceptualPrecision, scale: scale

Sources/SnapshotTesting/Snapshotting/UIImage.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
/// `UITraitCollection`s default value of `0.0`, the screens scale is used.
1919
/// - Returns: A new diffing strategy.
2020
public static func image(
21-
precision: Float = 1, perceptualPrecision: Float = 1, scale: CGFloat? = nil
21+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, scale: CGFloat? = nil
2222
) -> Diffing {
2323
let imageScale: CGFloat
2424
if let scale = scale, scale != 0.0 {
@@ -78,7 +78,7 @@
7878
/// human eye.
7979
/// - scale: The scale of the reference image stored on disk.
8080
public static func image(
81-
precision: Float = 1, perceptualPrecision: Float = 1, scale: CGFloat? = nil
81+
precision: Float = SnapshottingDefaults.precision, perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision, scale: CGFloat? = nil
8282
) -> Snapshotting {
8383
return .init(
8484
pathExtension: "png",

Sources/SnapshotTesting/Snapshotting/UIView.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
/// - traits: A trait collection override.
2323
public static func image(
2424
drawHierarchyInKeyWindow: Bool = false,
25-
precision: Float = 1,
26-
perceptualPrecision: Float = 1,
25+
precision: Float = SnapshottingDefaults.precision,
26+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
2727
size: CGSize? = nil,
2828
traits: UITraitCollection = .init()
2929
)

Sources/SnapshotTesting/Snapshotting/UIViewController.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
/// - traits: A trait collection override.
2121
public static func image(
2222
on config: ViewImageConfig,
23-
precision: Float = 1,
24-
perceptualPrecision: Float = 1,
23+
precision: Float = SnapshottingDefaults.precision,
24+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
2525
size: CGSize? = nil,
2626
traits: UITraitCollection = .init()
2727
)
@@ -57,8 +57,8 @@
5757
/// - traits: A trait collection override.
5858
public static func image(
5959
drawHierarchyInKeyWindow: Bool = false,
60-
precision: Float = 1,
61-
perceptualPrecision: Float = 1,
60+
precision: Float = SnapshottingDefaults.precision,
61+
perceptualPrecision: Float = SnapshottingDefaults.perceptualPrecision,
6262
size: CGSize? = nil,
6363
traits: UITraitCollection = .init()
6464
)

0 commit comments

Comments
 (0)