@@ -152,6 +152,9 @@ class SentryUIRedactBuilderTests_Common: SentryUIRedactBuilderTests { // swiftli
152152
153153 let opaqueView = UIView ( frame: CGRect ( x: 10 , y: 10 , width: 60 , height: 60 ) )
154154 opaqueView. backgroundColor = . white
155+ opaqueView. isOpaque = true
156+ opaqueView. layer. isOpaque = true
157+ opaqueView. layer. backgroundColor = UIColor . white. cgColor
155158 rootView. addSubview ( opaqueView)
156159
157160 // View Hierarchy:
@@ -922,6 +925,9 @@ class SentryUIRedactBuilderTests_Common: SentryUIRedactBuilderTests { // swiftli
922925
923926 let overView = UIView ( frame: rootView. bounds)
924927 overView. backgroundColor = . black
928+ overView. isOpaque = true
929+ overView. layer. isOpaque = true
930+ overView. layer. backgroundColor = UIColor . black. cgColor
925931 rootView. addSubview ( overView)
926932
927933 // View Hierarchy:
@@ -1208,7 +1214,7 @@ class SentryUIRedactBuilderTests_Common: SentryUIRedactBuilderTests { // swiftli
12081214
12091215 // View Hierarchy:
12101216 // ---------------
1211- // == iOS 26 ==
1217+ // == iOS 26.1 - Xcode 26 ==
12121218 // <UIView: 0x11b209710; frame = (0 0; 100 100); layer = <CALayer: 0x600000cd1440>>
12131219 // | <UISlider: 0x11b23e2e0; frame = (10 10; 80 20); opaque = NO; gestureRecognizers = <NSArray: 0x600000276be0>; layer = <CALayer: 0x600000ce80c0>; value: 0.000000>
12141220 // | | <UIKit._UISliderGlassVisualElement: 0x11b25bdd0; frame = (0 0; 80 20); autoresize = W+H; layer = <CALayer: 0x600000cde0a0>>
@@ -1219,6 +1225,11 @@ class SentryUIRedactBuilderTests_Common: SentryUIRedactBuilderTests { // swiftli
12191225 // | | | | <UIView: 0x11b22bf60; frame = (0 0; 37 24); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x600000ce9410>>
12201226 // | | | | | <UIView: 0x11b434710; frame = (0 0; 37 24); autoresize = W+H; userInteractionEnabled = NO; backgroundColor = <UIDynamicSystemColor: 0x600001749000; name = _controlForegroundColor>; layer = <CALayer: 0x600000cdd740>>
12211227 //
1228+ // == iOS 26.1 - Xcode 16.4 ==
1229+ // <UIView: 0x10701dbf0; frame = (0 0; 100 100); layer = <CALayer: 0x600000cb96b0>>
1230+ // | <UISlider: 0x100e28d30; frame = (10 10; 80 20); opaque = NO; layer = <CALayer: 0x600000cae490>; value: 0.000000>
1231+ // | | <_UISlideriOSVisualElement: 0x100f06990; frame = (0 0; 80 20); opaque = NO; autoresize = W+H; layer = <CALayer: 0x600000c05fe0>>
1232+ //
12221233 // == iOS 18 & 17 & 16 ==
12231234 // <UIView: 0x12ed12bc0; frame = (0 0; 100 100); layer = <CALayer: 0x600001de3540>>
12241235 // | <UISlider: 0x13ed0f7e0; frame = (10 10; 80 20); opaque = NO; layer = <CALayer: 0x600001df0020>; value: 0.000000>
@@ -1230,40 +1241,20 @@ class SentryUIRedactBuilderTests_Common: SentryUIRedactBuilderTests { // swiftli
12301241 let masked = createMaskedScreenshot ( view: rootView, regions: result)
12311242
12321243 // -- Assert --
1233- assertSnapshot ( of: masked, as: . image, named: createTestDeviceOSBoundSnapshotName ( name: " unmasked " ) )
1234-
1235- // UISlider behavior differs by iOS version
1236- if #available( iOS 26 . 0 , * ) {
1237- // On iOS 26, UISlider uses a new visual implementation that creates clipping regions
1238- // even though the slider itself is in the ignore list
1239- let region0 = try XCTUnwrap ( result. element ( at: 0 ) )
1240- XCTAssertNil ( region0. color)
1241- XCTAssertEqual ( region0. size, CGSize ( width: 37 , height: 24 ) )
1242- XCTAssertEqual ( region0. type, . clipOut)
1243- XCTAssertEqual ( region0. transform, CGAffineTransform ( a: 1 , b: 0 , c: 0 , d: 1 , tx: 10 , ty: 8 ) )
1244-
1245- let region1 = try XCTUnwrap ( result. element ( at: 1 ) )
1244+ if #available( iOS 26 , * ) , isBuiltWithSDK26 ( ) {
1245+ // Only applies to Liquid Glass (enabled when built with Xcode 26+)
1246+ let region1 = try XCTUnwrap ( result. element ( at: 0 ) )
12461247 XCTAssertNil ( region1. color)
12471248 XCTAssertEqual ( region1. size, CGSize ( width: 80 , height: 6 ) )
12481249 XCTAssertEqual ( region1. type, . clipBegin)
12491250 XCTAssertEqual ( region1. transform, CGAffineTransform ( a: 1 , b: 0 , c: 0 , d: 1 , tx: 10 , ty: 17 ) )
12501251
1251- let region2 = try XCTUnwrap ( result. element ( at: 2 ) )
1252+ let region2 = try XCTUnwrap ( result. element ( at: 1 ) )
12521253 XCTAssertNil ( region2. color)
1253- XCTAssertEqual ( region2. size, CGSize ( width: 0 , height: 6 ) )
1254- XCTAssertEqual ( region2. type, . clipOut )
1254+ XCTAssertEqual ( region2. size, CGSize ( width: 80 , height: 6 ) )
1255+ XCTAssertEqual ( region2. type, . clipEnd )
12551256 XCTAssertEqual ( region2. transform, CGAffineTransform ( a: 1 , b: 0 , c: 0 , d: 1 , tx: 10 , ty: 17 ) )
1256-
1257- let region3 = try XCTUnwrap ( result. element ( at: 3 ) )
1258- XCTAssertNil ( region3. color)
1259- XCTAssertEqual ( region3. size, CGSize ( width: 80 , height: 6 ) )
1260- XCTAssertEqual ( region3. type, . clipEnd)
1261- XCTAssertEqual ( region3. transform, CGAffineTransform ( a: 1 , b: 0 , c: 0 , d: 1 , tx: 10 , ty: 17 ) )
1262-
1263- // Assert that there are no other regions
1264- XCTAssertEqual ( result. count, 4 )
12651257 } else {
1266- // On iOS < 26, UISlider is completely ignored (no regions)
12671258 XCTAssertEqual ( result. count, 0 )
12681259 }
12691260 }
@@ -1469,6 +1460,17 @@ private class TestGridView: UIView {
14691460 ctx. setFillColor ( UIColor . orange. cgColor)
14701461 ctx. fill ( CGRect ( x: midX, y: midY, width: bounds. width - midX, height: bounds. height - midY) )
14711462 }
1463+
1464+ }
1465+
1466+ private func isBuiltWithSDK26( ) -> Bool {
1467+ guard let value = Bundle . main. object ( forInfoDictionaryKey: " DTXcode " ) as? String else {
1468+ return false
1469+ }
1470+ guard let xcodeVersion = Int ( value) else {
1471+ return false
1472+ }
1473+ return xcodeVersion >= 2_600
14721474}
14731475
14741476#endif // os(iOS) && !targetEnvironment(macCatalyst)
0 commit comments