From cff19f4ed7dacf198c92406592c1d2ebed52e0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Bu=CC=88nz?= Date: Thu, 8 Aug 2024 18:23:35 +0200 Subject: [PATCH] update snapshot tests --- .../xcshareddata/swiftpm/Package.resolved | 4 +-- .../TestHelper/XCTestCase+Additions.swift | 23 ++++++++++-------- .../UserTrackingButtonSnapshotTests.swift | 6 ++--- .../test_userTracking_follow.1.png | Bin 6402 -> 3026 bytes .../test_userTracking_followWithHeading.1.png | Bin 6270 -> 3077 bytes .../test_userTracking_none.1.png | Bin 7672 -> 4115 bytes 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/CriticalMaps.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CriticalMaps.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index d43b506f..eedec700 100644 --- a/CriticalMaps.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/CriticalMaps.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -139,8 +139,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-snapshot-testing.git", "state" : { - "revision" : "c097f955b4e724690f0fc8ffb7a6d4b881c9c4e3", - "version" : "1.17.2" + "revision" : "6d932a79e7173b275b96c600c86c603cf84f153c", + "version" : "1.17.4" } }, { diff --git a/CriticalMapsKit/Sources/TestHelper/XCTestCase+Additions.swift b/CriticalMapsKit/Sources/TestHelper/XCTestCase+Additions.swift index db6fea15..753aa8e0 100644 --- a/CriticalMapsKit/Sources/TestHelper/XCTestCase+Additions.swift +++ b/CriticalMapsKit/Sources/TestHelper/XCTestCase+Additions.swift @@ -7,9 +7,9 @@ private let operatingSystemVersion = ProcessInfo().operatingSystemVersion public extension XCTestCase { private func enforceSnapshotDevice() { let is2XDevice = UIScreen.main.scale >= 2 - let isMinVersion14 = operatingSystemVersion.majorVersion >= 15 + let isMinVersion16 = operatingSystemVersion.majorVersion >= 16 - guard is2XDevice, isMinVersion14 else { + guard is2XDevice, isMinVersion16 else { fatalError("Screenshot test device should use @2x screen scale and iOS 14.4") } } @@ -48,6 +48,7 @@ public extension XCTestCase { func assertViewSnapshot( _ view: V, height: CGFloat? = nil, + width: CGFloat = 375, sloppy: Bool = false, file: StaticString = #file, testName: String = #function, @@ -57,16 +58,18 @@ public extension XCTestCase { var layout = SwiftUISnapshotLayout.device(config: .iPhone8) if let height = height { - layout = .fixed(width: 375, height: height) + layout = .fixed(width: width, height: height) } let precision: Float = (sloppy ? XCTestCase.sloppyPrecision : 1) - assertSnapshot( - matching: view, - as: .image(precision: precision, layout: layout), - file: file, - testName: testName, - line: line - ) + withSnapshotTesting(diffTool: .ksdiff) { + assertSnapshot( + of: view, + as: .image(precision: precision, layout: layout), + file: file, + testName: testName, + line: line + ) + } } } diff --git a/CriticalMapsKit/Tests/MapFeatureTests/UserTrackingButtonSnapshotTests.swift b/CriticalMapsKit/Tests/MapFeatureTests/UserTrackingButtonSnapshotTests.swift index 17556fd9..a3a5bc3b 100644 --- a/CriticalMapsKit/Tests/MapFeatureTests/UserTrackingButtonSnapshotTests.swift +++ b/CriticalMapsKit/Tests/MapFeatureTests/UserTrackingButtonSnapshotTests.swift @@ -12,7 +12,7 @@ final class UserTrackingButtonSnapshotTests: XCTestCase { ) ) - assertViewSnapshot(sut, height: 60, sloppy: true) + assertViewSnapshot(sut, height: 60, width: 60, sloppy: true) } @MainActor @@ -24,7 +24,7 @@ final class UserTrackingButtonSnapshotTests: XCTestCase { ) ) - assertViewSnapshot(sut, height: 60, sloppy: true) + assertViewSnapshot(sut, height: 60, width: 60, sloppy: true) } @MainActor @@ -36,6 +36,6 @@ final class UserTrackingButtonSnapshotTests: XCTestCase { ) ) - assertViewSnapshot(sut, height: 60, sloppy: true) + assertViewSnapshot(sut, height: 60, width: 60, sloppy: true) } } diff --git a/CriticalMapsKit/Tests/MapFeatureTests/__Snapshots__/UserTrackingButtonSnapshotTests/test_userTracking_follow.1.png b/CriticalMapsKit/Tests/MapFeatureTests/__Snapshots__/UserTrackingButtonSnapshotTests/test_userTracking_follow.1.png index 302c087e7b163e51dd153933e3ee02dd1189dc63..6562ad64e9ce4806e1bfac6de1e2d38b286d3df4 100644 GIT binary patch literal 3026 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 BKzslI literal 6402 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 diff --git a/CriticalMapsKit/Tests/MapFeatureTests/__Snapshots__/UserTrackingButtonSnapshotTests/test_userTracking_followWithHeading.1.png b/CriticalMapsKit/Tests/MapFeatureTests/__Snapshots__/UserTrackingButtonSnapshotTests/test_userTracking_followWithHeading.1.png index 19a0e94c5fa47a578b63aff200fe2be0560bf608..8927498ba76cb438f4b359297fd6ef160dc0e040 100644 GIT binary patch literal 3077 zcmeHI`#+Rh7k_39h8hjIGsm3}P8rd-P16{rjyuJi7#)m3$Z6h05#x!-HRX_8#vvi2 z%S=<8(oH(OE<^5`)IkVIBDv(<`t&*HA9#OxKc9C$pY?p#e)igHJ?p#nCC$yn5hJZC z4M7lw>O}Sc$lDOK1bExFN$doGIOgFg0P2g0!qQ1mTdsBLI9<4<);L0R#cRwT)2QfNUTT)VXJ~N>cz2QptO~P9Ua> zZTB1RkteRQH^|s!^sU6$>JVmG@ zzrKLtY<)wSAP1O)$_^s8v6MM`|7>p7VyW8);z??qx;Wwl`GhP%)@MHrz70v^C=+hK zMn|J@Egj04LJFQLi6zMT!!D@a^NJjkL{h3O;liOq>ZF!AbBYd6*0~D-yTD4Etx5a} z2j-?S;bB-tPf00N7`>X&iH;!Wu^IkyvM0X zmN=0?W{*rxR$nSDU7v5e*wf>^u(VVVpy2WLThit8_4W1SLh8@Di9!eML#}uPTr#mZ zH+pU(eRwKOKT)_B*WvV9Dq4yc#-x5)5TN`{`;XL>fYiXUtAdUwD2^fO@ea^7Hc(57K*b1|l`OeJnT@ z6BBY__s~dWL`0j8j%Pe@v&AI!ZewHP0S>>vudh#Lpy03l5GOt@vv7TGj>8BEDTZGS z4XNd&aomt-+&-@E`|0UcDq~H?*3z=d&fb3i&7;OC5UE9I{N!E7(}D4z-$t679kj%L zy8)I&{_EkTm6elbh5QfG6Li_tL#lB5!?U|>ZEQX%()Qb`%LL}@-6leuO+=DuQ&UsV zqerA1VX=!r5cQYMDC{8gbbN7aEI6li8P_0+tSv3oC><-X2GO#UMhHAUUtv2hzhQW` z(X`oS69QEHCT5Dx?`qn6wRv;=k*KJl{KGE+kJjv+&enEzGK#xTBJir1h2`Zi8hhmj z;9u;(KzDOCC2#aO z;K#EkcEMrDCUDBEuLn613L!`$d*g_iDef>+Kds!d60_7Qo61;WrE;;+ z?;P~bri)1$%BJ~y9et2=_DY(V_GOx$v#MmMYQ;sK92<6WYnqxDjfYp^0z;0!9T*T* z&79m?*wGqN^2H|JwjSqcU0Q4{ZKjy?;)UnMf`Y5s+S-R!LL(y?W9+hF)ce)Q@-g_q z($bx9?eM7d(b1rPB_zDp#Y~55LL3Znnwy`W-(ZSQv$e1YwiKTpPln({MDy^K%uI}e zii(On$Joed6_cH?35gvO4Gs+KP*WXR!zKz7AeF{?F4v2}U&igI@xiHeB8+!g9Be4ZV~ z6bAI9L-6hLk(tIn{_xtOVYm655QoF<+WEv(6@jkHz3$WA-k#zBf>u>lR+rkJrUj*% z+Jcd)!(H5(8tEe7XGjp`yz?#GItl z={~`Lu_H&W4Gs@~&NFOC100X+adC0!KcinQDIu{Mlpd)KaZGG{Xf!!3KvYptc&=ds z9*L#tya^oW@83pYo{x)-9dOL=uP}f(3wYK{Uf$M)*AK; zUG15xhliYg=cVrbLz_7kaw)-7DwX(AT$}4XJvv&U<$3MhH}0aW3-SW$g7_~E`uo4v z2|Ut;CNeYONR?LV_2U)%K?5VBeGySnQ#TzvT_Ms`=!rqR)Gi&Jy`y6(`f)Ka0U+U@U;i8@CWOEyv)u{>lgw>7e za@C94y9>xGn`Sa4;NCY@R#r!Y<+l5c-;bTA#Eeeqx5;idHa_O?Zg6n$=av?UQ=j4= zBM85T^;N&r6BSzS*bzN)XZhl-Tjt)rzA7KAq@<+M+m}y>bQ8^aS&j(_3B>Z|Cr_>x z7OIG3<1NihP31*$&*NV(qXPp2?@KPF3P{YTxu#QJ#L)rOE=hq92Et zf$4}HmX;xg7?B~kyOk6}C-PcOetuv0)-ejdoFh>m4%T)!$*e|h~C@o9>X5C`_p0W<$U+%OnSO;Zy+A|hfk?(tBCtHNZG z1L)M;zyEdJtYkNVARXm_bW9Z@&#^Bop)~QOIBjvTrT^dk@3677WxSU{zMmw@19uce Mb#NhbNdfHt0I1pwWB>pF literal 6270 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 S1ONGnP*c`cdaZEt;lBV{+Hzn3