Fix iOS Shell badge color bleed - #36026
Conversation
Avoid writing per-item UITabBarAppearance badge colors so UIKit does not render the selected tab badge appearance across other visible Shell tabs. Keep badge colors on the UITabBarItem path and cover independent badge colors with active Shell tab bar appearance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36026Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36026" |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 1 findings
See inline comments for details.
| @@ -426,89 +426,17 @@ internal static void UpdateTabBarItemBadge(UITabBarItem tabBarItem, ShellSection | |||
| { | |||
| var attrs = new UIStringAttributes { ForegroundColor = badgeTextColor.ToPlatform() }; | |||
| tabBarItem.SetBadgeTextAttributes(attrs, UIControlState.Normal); | |||
There was a problem hiding this comment.
[major] iOS/macCatalyst Platform Specifics — This method now relies only on direct UITabBarItem badge APIs, but it never clears any per-item StandardAppearance/ScrollEdgeAppearance that may already be attached to the item on iOS 15+. Those appearances continue participating in badge rendering and can override/bleed badge colors when tabs are selected or items are refreshed. Clear the per-item appearances before applying BadgeColor/SetBadgeTextAttributes so stale appearance state cannot win over the direct item values.
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@jfversluis — new AI review results are available based on this last commit:
2f8ab65. To request a fresh review after new comments or commits, comment/review rerun.
🚀 Next Steps — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
🗂️ Review Sessions — click to expand
🧪 Gate — Test Before & After Fix
Gate Result: ✅ PASSED
Platform: IOS · Base: net11.0 · Merge base: bcb20a61
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
📱 ShellBadgeTests (ShellTabBadgeColorsStayIndependentAcrossSelectedTabs) Category=Shell |
✅ FAIL — 280s | ✅ PASS — 116s |
🔴 Without fix — 📱 ShellBadgeTests (ShellTabBadgeColorsStayIndependentAcrossSelectedTabs): FAIL ✅ · 280s
(truncated to last 15,000 chars)
ts[6221:42284] 2) [FAIL] Shell Tab Badge Colors Stay Independent Across Selected Tabs Test name: Shell Tab Badge Colors Stay Independent Across Selected Tabs
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9526180] Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9526240] 2026-06-21 06:00:31.952512-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] Exception messages: Assertion timed out Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9527860] 2026-06-21 06:00:31.952601-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ShellBadgeTests.<>c__DisplayClass4_0.<<ShellTabBadgeColorsStayIndependentAcrossSelectedTabs>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9527990] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9528950] 2026-06-21 06:00:31.952713-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_1`1.<<CreateHandlerAndAddToWindow>b__1>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9529060] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9529110] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9529150] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9530190] 2026-06-21 06:00:31.952811-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9530330] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9530370] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532570] 2026-06-21 06:00:31.952922-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532710] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532760] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532800] 2026-06-21 06:00:31.953047-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_0`1.<<CreateHandlerAndAddToWindow>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532840] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9532870] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9533160] 2026-06-21 06:00:31.953200-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9533200] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9533240] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9534630] 2026-06-21 06:00:31.953280-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ShellBadgeTests.ShellTabBadgeColorsStayIndependentAcrossSelectedTabs()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9534880] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9534930] Execution time: 2.3264908
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9534980] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9535020] value: Shell
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9535900] 2026-06-21 06:00:31.953371-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] 3) [FAIL] Shell Tab Badge Colors Persist After Native Tab Bar Item Updates Test name: Shell Tab Badge Colors Persist After Native Tab Bar Item Updates
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9536940] 2026-06-21 06:00:31.953514-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9537090] Exception messages: Assertion timed out Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9537860] 2026-06-21 06:00:31.953629-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ShellBadgeTests.<>c__DisplayClass1_0.<<ShellTabBadgeColorsPersistAfterNativeTabBarItemUpdates>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9538010] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9538420] 2026-06-21 06:00:31.953722-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_1`1.<<CreateHandlerAndAddToWindow>b__1>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9538500] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9538540] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9538580] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9539600] 2026-06-21 06:00:31.953807-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9539700] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9541930] 2026-06-21 06:00:31.953889-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542050] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542100] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542130] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542180] 2026-06-21 06:00:31.954048-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_0`1.<<CreateHandlerAndAddToWindow>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542210] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9542260] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9543270] 2026-06-21 06:00:31.954129-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9543410] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9543460] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9544480] 2026-06-21 06:00:31.954250-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ShellBadgeTests.ShellTabBadgeColorsPersistAfterNativeTabBarItemUpdates()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9544620] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9544660] Execution time: 2.3191542
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9544700] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9544730] value: Shell
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9545570] 2026-06-21 06:00:31.954357-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] 4) [FAIL] Shell Tab Badge Text Color Clears To Default Test name: Shell Tab Badge Text Color Clears To Default
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9545710] Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9546870] 2026-06-21 06:00:31.954467-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] Exception messages: Assertion timed out Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9547930] 2026-06-21 06:00:31.954561-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ShellBadgeTests.<>c__DisplayClass3_0.<<ShellTabBadgeTextColorClearsToDefault>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9548050] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9548110] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_1`1.<<CreateHandlerAndAddToWindow>b__1>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9548990] 2026-06-21 06:00:31.954744-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9549070] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9549100] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9549950] 2026-06-21 06:00:31.954831-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9550170] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9550210] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9550260] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9551170] 2026-06-21 06:00:31.954909-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9551330] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9551950] 2026-06-21 06:00:31.954987-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_0`1.<<CreateHandlerAndAddToWindow>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9552040] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9552080] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9552130] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553390] 2026-06-21 06:00:31.955082-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553490] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553530] at Microsoft.Maui.DeviceTests.ShellBadgeTests.ShellTabBadgeTextColorClearsToDefault()
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553570] 2026-06-21 06:00:31.955158-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553610] Execution time: 2.3165878
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553640] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9553670] value: Shell
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9556420] 2026-06-21 06:00:31.955472-0700 Microsoft.Maui.Controls.DeviceTests[6221:42284] Tests run: 209 Passed: 205 Inconclusive: 0 Failed: 4 Ignored: 0
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9592980] 2026-06-21 06:00:31.959133-0700 Microsoft.Maui.Controls.DeviceTests[6221:41687] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [06:00:31.9594100] 2026-06-21 06:00:31.959223-0700 Microsoft.Maui.Controls.DeviceTests[6221:41687] Tests run: 607 Passed: 205 Inconclusive: 0 Failed: 4 Ignored: 398
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.controls.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.controls.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "CJ4PTPQWTM-1",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-2F6E2B90-10C4-41EF-BCF4-15A79387A1F2.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260621_055902.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260621_055910.log",
"type": "testlog"
},
{
"name": "iPhone 11 Pro.log",
"type": "systemlog"
},
{
"name": "Microsoft.Maui.Controls.DeviceTests.log",
"type": "systemlog"
},
{
"name": "com.microsoft.maui.controls.devicetests.log",
"type": "applicationlog"
},
{
"name": "xunit-test-ios-simulator-64_26.0-20260621_055910.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 1 (TESTS_FAILED)
Passed: 0
Failed: 0
Tests completed with exit code: 1
🟢 With fix — 📱 ShellBadgeTests (ShellTabBadgeColorsStayIndependentAcrossSelectedTabs): PASS ✅ · 116s
(truncated to last 15,000 chars)
[49m: [06:02:21.8542750] 2026-06-21 06:02:21.853952-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:21.9997000] 2026-06-21 06:02:21.999331-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.1683860] 2026-06-21 06:02:22.167972-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.3343260] 2026-06-21 06:02:22.334078-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.4851380] 2026-06-21 06:02:22.484765-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.6316800] 2026-06-21 06:02:22.631300-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.8056490] 2026-06-21 06:02:22.805346-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:22.9767550] 2026-06-21 06:02:22.976288-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.1395800] 2026-06-21 06:02:23.139346-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.3035890] 2026-06-21 06:02:23.303292-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.4636080] 2026-06-21 06:02:23.463311-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.6216210] 2026-06-21 06:02:23.621320-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.7884960] 2026-06-21 06:02:23.788162-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:23.9355220] 2026-06-21 06:02:23.935224-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.0836650] 2026-06-21 06:02:24.083271-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.2627010] 2026-06-21 06:02:24.262372-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.4224590] 2026-06-21 06:02:24.422071-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.5901450] 2026-06-21 06:02:24.589701-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.7533780] 2026-06-21 06:02:24.753016-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:24.9047270] 2026-06-21 06:02:24.904357-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.0556380] 2026-06-21 06:02:25.055348-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.2222280] 2026-06-21 06:02:25.221815-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.3932080] 2026-06-21 06:02:25.392738-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.5556490] 2026-06-21 06:02:25.555171-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.7152650] 2026-06-21 06:02:25.714893-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:25.8728780] 2026-06-21 06:02:25.872524-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.0474690] 2026-06-21 06:02:26.047144-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.1998730] 2026-06-21 06:02:26.199566-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.3499550] 2026-06-21 06:02:26.349690-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.5005060] 2026-06-21 06:02:26.500206-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.6490660] 2026-06-21 06:02:26.648734-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.7977960] 2026-06-21 06:02:26.797435-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:26.9500640] 2026-06-21 06:02:26.949493-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.1006340] 2026-06-21 06:02:27.100325-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.2487660] 2026-06-21 06:02:27.248455-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.4011640] 2026-06-21 06:02:27.400745-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.5502000] 2026-06-21 06:02:27.549814-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.6994020] 2026-06-21 06:02:27.699060-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:27.8471390] 2026-06-21 06:02:27.846710-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:28.0011000] 2026-06-21 06:02:28.000743-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderContentAndFooterAllMeasureCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:28.2317110] 2026-06-21 06:02:28.231342-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutWithAsMultipleItemsRendersWithoutCrashing
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:28.4354210] 2026-06-21 06:02:28.435037-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Empty Shell
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:28.7725270] 2026-06-21 06:02:28.772215-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] SearchHandlerRendersCorrectly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:29.5456410] 2026-06-21 06:02:29.545250-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [RTILog] -[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID. inputModality = Keyboard, inputOperation = <null selector>, customInfoType = UIEmojiSearchOperations
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:29.8261900] 2026-06-21 06:02:29.825868-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] HideSoftInputOnTapped Doesn't Crash If Entry Is Still Focused After Window Is Null
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:30.5207700] 2026-06-21 06:02:30.520362-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [Snapshotting] Snapshotting a view (0x36a0a70b0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:30.5210420] 2026-06-21 06:02:30.520699-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [Snapshotting] Snapshotting a view (0x36a0aadf0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.2263770] 2026-06-21 06:02:32.226096-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Pages Do Not Leak
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.2267900] 2026-06-21 06:02:32.226530-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] TitleView can use constraints to expand area
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.4016520] 2026-06-21 06:02:32.401337-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell add then remove items from selected item
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.4021190] 2026-06-21 06:02:32.401917-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell TabBar Foreground Initializes Correctly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.4023120] 2026-06-21 06:02:32.402120-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell TabBar Foreground Initializes Correctly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.5531740] 2026-06-21 06:02:32.552838-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderMinimumHeight
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.7097160] 2026-06-21 06:02:32.709403-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderMinimumHeight
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:32.8816500] 2026-06-21 06:02:32.881368-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderMinimumHeight
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.0387160] 2026-06-21 06:02:33.038416-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutHeaderMinimumHeight
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.1492180] 2026-06-21 06:02:33.148864-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell Flyout Table View Has ScrollsToTop Disabled
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.1497590] 2026-06-21 06:02:33.149579-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell TabBar Title Color Initializes Correctly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.1498820] 2026-06-21 06:02:33.149721-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Shell TabBar Title Color Initializes Correctly
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.7430040] 2026-06-21 06:02:33.742604-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x1680e4800>.
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:33.7450820] 2026-06-21 06:02:33.744652-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] TitleView Updates to Currently Visible Page
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:34.3666790] 2026-06-21 06:02:34.366329-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [Snapshotting] Snapshotting a view (0x36c0b5d70, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.3457820] 2026-06-21 06:02:35.345474-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] Pushing the Same Page Disconnects Previous Toolbar Items
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.5096920] 2026-06-21 06:02:35.509240-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] [PASS] FlyoutContentSetsCorrectBottomPaddingWhenMinHeightIsSetForFlyoutHeader
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.5099980] 2026-06-21 06:02:35.509643-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] Microsoft.Maui.DeviceTests.ShellTests 47.8738176 ms
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.5120200] 2026-06-21 06:02:35.511815-0700 Microsoft.Maui.Controls.DeviceTests[6477:46073] Tests run: 209 Passed: 209 Inconclusive: 0 Failed: 0 Ignored: 0
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.5156230] 2026-06-21 06:02:35.515436-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [06:02:35.5157250] 2026-06-21 06:02:35.515559-0700 Microsoft.Maui.Controls.DeviceTests[6477:46017] Tests run: 607 Passed: 209 Inconclusive: 0 Failed: 0 Ignored: 398
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.controls.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.controls.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "CJ4PTPQWTM-1",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-2F6E2B90-10C4-41EF-BCF4-15A79387A1F2.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260621_060134.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260621_060139.log",
"type": "testlog"
},
{
"name": "iPhone 11 Pro.log",
"type": "systemlog"
},
{
"name": "Microsoft.Maui.Controls.DeviceTests.log",
"type": "systemlog"
},
{
"name": "com.microsoft.maui.controls.devicetests.log",
"type": "applicationlog"
},
{
"name": "xunit-test-ios-simulator-64_26.0-20260621_060139.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 0
Passed: 209
Failed: 0
Tests completed successfully
📁 Fix files reverted (2 files)
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs
📱 UI Tests — Shell
Detected UI test categories: Shell
❌ Deep UI tests — 189 passed, 107 failed across 1 category on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
Shell |
189/311 (107 ❌) | 106 diff PNGs |
❌ Shell — 107 failed tests
VerifyShell_TabBarForegroundColor
System.InvalidOperationException :
Snapshot different than baseline: VerifyShell_TabBarForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShell_TabBarForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test
...
VerifyFlyoutSelectedCurrentItem
System.InvalidOperationException :
Snapshot different than baseline: VerifyFlyoutSelectedCurrentItem.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyFlyoutSelectedCurrentItem.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test att
...
VerifyFlyoutBackgroundColor
System.InvalidOperationException :
Snapshot different than baseline: VerifyFlyoutBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyFlyoutBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment
...
TabBarVisibilityHidesOnPage1UsingDirectSet
System.InvalidOperationException :
Snapshot different than baseline: TabBarVisibilityHidesOnPage1UsingDirectSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: TabBarVisibilityHidesOnPage1UsingDirectSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseli
...
VerifyShellFlyout_FlyoutBehaviorDisabled
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.FlyoutScreenshot() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 1018
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_FlyoutBehaviorDisabled() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 697
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr,
...
NavBarUpdatesWhenSwitchingShellContent
System.InvalidOperationException :
Snapshot different than baseline: NavBarUpdatesWhenSwitchingShellContent.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: NavBarUpdatesWhenSwitchingShellContent.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image
...
PaddingWithoutSafeArea
Assert.That(somePaddingValue, Is.GreaterThan(zeroPaddingValue))
Expected: greater than 316
But was: 316
at Microsoft.Maui.TestCases.Tests.Issues.ShellInsets.PaddingWithoutSafeArea() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/ShellInsets.cs:line 140
1) at Microsoft.Maui.TestCases.Tests.Issues.ShellInsets.PaddingWithoutSafeArea() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/ShellInsets.cs:line 140
ShouldFlyoutTextWrapsInLandscape
System.InvalidOperationException :
Snapshot different than baseline: ShouldFlyoutTextWrapsInLandscape.png (size differs - baseline is 2436x974 pixels, actual is 2622x1056 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShouldFlyoutTextWrapsInLandscape.png (size differs - baseline is 2436x974 pixels, actual is 2622x1056 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test att
...
ShellPages_PresentationModeNotAnimated
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_PresentationModeNotAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_PresentationModeNotAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image
...
VerifyShellFlyout_HeightAndWidthWithBackgroundImage
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_HeightAndWidthWithBackgroundImage() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 599
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
VerifyShellFlyout_BackgroundImageAndBackDrop
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundImageAndBackDrop() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 619
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
VerifyShell_IsVisible
System.InvalidOperationException :
Snapshot different than baseline: VerifyShell_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShell_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download
...
SearchHandlerVisibilityChangesToCollapsible
System.InvalidOperationException :
Snapshot different than baseline: SearchHandlerVisibilityChangesToCollapsible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: SearchHandlerVisibilityChangesToCollapsible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the base
...
ShellAppearanceUpdatesWhenChangingShellSectionToTab_2
System.InvalidOperationException :
Snapshot different than baseline: ShellAppearanceUpdatesWhenChangingShellSectionToTab_2.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellAppearanceUpdatesWhenChangingShellSectionToTab_2.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug),
...
VerifyExistingTabTitle
System.InvalidOperationException :
Snapshot different than baseline: VerifyExistingTabTitle.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyExistingTabTitle.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or downloa
...
ShellPages_ForegroundColor
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_ForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_ForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or
...
TabBarVisibilityAfterMultiLevelPopToRoot
System.InvalidOperationException :
Snapshot different than baseline: TabBarVisibilityAfterMultiLevelPopToRoot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: TabBarVisibilityAfterMultiLevelPopToRoot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline i
...
VerifyShellFlyout_ShellContentAndBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_ShellContentAndBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 790
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
LargeTitleTransitionsOnScroll
System.InvalidOperationException :
Snapshot different than baseline: Issue33037_BeforeScroll.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: Issue33037_BeforeScroll.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or downl
...
ShellPages_PresentationModeAnimated
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_PresentationModeAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_PresentationModeAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See
...
VerifyShellFlyoutContentAlignedInRTL
System.InvalidOperationException :
Snapshot different than baseline: VerifyShellFlyoutContentAlignedInRTL.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShellFlyoutContentAlignedInRTL.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
Se
...
VerifyShell_TabBarForegroundColorAndTitleColor
System.InvalidOperationException :
Snapshot different than baseline: VerifyShell_TabBarForegroundColorAndTitleColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShell_TabBarForegroundColorAndTitleColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update th
...
NavigationBarShouldRemainHiddenAfterNavigatingBack
System.InvalidOperationException :
Snapshot different than baseline: NavigationBarShouldRemainHiddenAfterNavigatingBack.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: NavigationBarShouldRemainHiddenAfterNavigatingBack.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then u
...
VerifyShellFlyoutBackgroundImage
System.InvalidOperationException :
Snapshot different than baseline: VerifyShellFlyoutBackgroundImage.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShellFlyoutBackgroundImage.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test a
...
VerifyShellFlyout_BackgroundImage
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundImage() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 826
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
VerifyShellFlyout_BackgroundImageAspect_Fill
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundImageAspect_Fill() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 575
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
VerifyTemplateViewMarginOnInitialDisplay
System.InvalidOperationException :
Snapshot different than baseline: VerifyTemplateViewMarginOnInitialDisplay.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyTemplateViewMarginOnInitialDisplay.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline i
...
ShellPages_ShowTitleViewHidden
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_ShowTitleViewHidden.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_ShowTitleViewHidden.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attac
...
VerifyShellFlyout_BackgroundImageSetToNull
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundImageSetToNull() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 660
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
SearchHandlerVisibilityChangesToExpanded
System.InvalidOperationException :
Snapshot different than baseline: SearchHandlerVisibilityChangesToExpanded.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: SearchHandlerVisibilityChangesToExpanded.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline i
...
(+77 more — see TRX in artifact)
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)
🔁 Regression Cross-Reference
🔍 Regression Cross-Reference
🟡 Overlaps with prior bug-fix PRs — same files modified, but no exact line revert detected.
| File | Fix PR | Fixed issue(s) |
|---|---|---|
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemRenderer.cs |
#33337 | #33158 |
🛫 Pre-Flight — Context & Validation
Issue: #35948 - iOS Shell tab badge color visual regression (title unavailable; GitHub CLI unauthenticated)
PR: #36026 - iOS Shell badge color fix
Platforms Affected: iOS, MacCatalyst
Files Changed: 2 implementation, 1 test
Key Findings
- PR changes iOS/MacCatalyst Shell badge styling in
ShellItemRenderer/ShellSectionRenderer, replacing per-itemUITabBarAppearancebadge mutation with directUITabBarItem.BadgeColorandSetBadgeTextAttributes(...)updates. - Device tests in
ShellBadgeTests.iOS.csadd coverage for two tabs with different badge colors after selected-tab changes. - GitHub CLI is unauthenticated in this environment, so issue body, PR body, review comments, and required-check status could not be fully fetched with
gh. Local PR commitb2749ed0c0was used as the authoritative code context.
Code Review Summary
Verdict: NEEDS_DISCUSSION
Confidence: low
Errors: 0 | Warnings: 1 | Suggestions: 0
Key code review findings:
⚠️ ShellBadgeTests.iOS.cs:47/ShellBadgeTests.iOS.cs:239verify nativeUITabBarItemproperties but not rendered badge pixels, leaving a coverage gap for UIKit appearance rendering/global appearance override behavior.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #36026 | Remove per-item UITabBarAppearance badge mutation; use direct UITabBarItem.BadgeColor and badge text attributes across states |
✅ PASSED (Gate) | ShellItemRenderer.cs, ShellSectionRenderer.cs, ShellBadgeTests.iOS.cs |
Original PR; gate was completed before this task and must not be rerun |
🔬 Code Review — Deep Analysis
Code Review — PR #36026
Independent Assessment
What this changes: Removes iOS/MacCatalyst Shell badge UITabBarAppearance mutation and relies on UITabBarItem.BadgeColor plus badge text attributes for Normal/Selected/Disabled/Focused states.
Inferred motivation: Avoid per-tab badge colors bleeding from the selected tab into other visible tabs.
Reconciliation with PR Narrative
Author claims: Fixes #35948 by avoiding per-item UITabBarAppearance badge color updates.
Agreement/disagreement: The code matches the claim. The approach is plausible, but rendered badge color is not directly verified.
Prior Review Reconciliation
No prior ❌ Error findings found. Prior [major] inline concern about stale per-item appearances was reviewed; current fresh item creation path no longer creates those appearances.
Blast Radius Assessment
- Runs for all instances: Yes — all iOS/MacCatalyst Shell tab badge updates.
- Startup impact: No direct startup path.
- Static/shared state: No new static/shared state.
CI Status
- Required-check result:
gh pr checks --requiredunavailable (gh auth loginrequired). Public check-runs showmaui-prfailed. - Classification: likely unrelated/undetermined; failures shown are AOT template warning-file/JDK/provisioning style failures, not Shell badge code.
- Action taken: invoked
azdo-build-investigator; confidence capped low.
Findings
⚠️ Warning — Rendered global-appearance scenario is not directly verified
ShellBadgeTests.iOS.cs:47 and helpers at ShellBadgeTests.iOS.cs:239 assert native UITabBarItem properties, but not the rendered badge pixels. Since #35948 is a visual regression involving UIKit appearance rendering, this leaves a coverage gap if global UITabBar.StandardAppearance still overrides direct item badge values.
Failure-Mode Probing
- Tab without badge colors:
BadgeValue,BadgeColor, and text attributes are reset to null. - Handler/item refresh:
ShellSectionRenderer.UpdateTabBarItem()reapplies badge state to the replacement item. - Multiple selected tabs: New test covers independent item properties after selection change, but not rendered output.
Verdict: NEEDS_DISCUSSION
Confidence: low
Summary: Code direction matches the reported root cause, and no definite source bug was found. However CI is red/required status could not be verified, and the key visual rendering path still needs stronger evidence before LGTM.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix | Keep iOS 15+ per-item UITabBarAppearance, but always allocate isolated appearances and set/clear badge state there instead of copying shared tab bar appearances |
✅ PASS | 3 files | More UIKit-appearance coverage than the PR, but materially more complex and allocates two appearance objects per item/update; not demonstrably better than the PR's simpler direct-property fix |
| 2 | try-fix | Reapply every visible tab item's badge state after Shell selection changes and tab bar appearance recomputation | ✅ PASS | 2 files | Adds defense-in-depth lifecycle hooks, but the passing behavior still relies on the same direct-property payload as the PR; extra hooks are not proven necessary by the regression test |
| 3 | try-fix | Clear badge background/text attributes from shared UITabBar.StandardAppearance/ScrollEdgeAppearance after Shell appearance updates while keeping per-item badge properties authoritative |
❌ FAIL | 2 files | Required iOS Shell device-test command failed before test execution in 3/3 runs with NETSDK1005 missing net10.0-ios assets target; approach not empirically validated |
| 4 | try-fix | Keep direct UITabBarItem badge properties but explicitly clear existing per-item StandardAppearance/ScrollEdgeAppearance badge customizations on every badge update |
❌ FAIL | 3 files | Built and ran after restoring the local runner patch; existing Shell badge tests passed, but the added stale-appearance regression timed out and self-review recorded a major logic/correctness finding |
| PR | PR #36026 | Remove per-item UITabBarAppearance badge mutation; use direct UITabBarItem.BadgeColor and badge text attributes across states |
✅ PASSED (Gate) | 3 files | Original PR |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| claude-opus-4.6 | 2 | No | Direct UITabBarItem.BadgeColor + SetBadgeTextAttributes is the canonical Apple path; remaining root-cause angles were exhausted by candidates #1-#4 |
| claude-opus-4.7 | 2 | No | PR's direct per-item properties are the simplest fix; per-item isolation, lifecycle hooks, global appearance cleanup, and stale cleanup cover the meaningful alternatives |
| gpt-5.3-codex | 2 | No | PR direct APIs are the simplest validated root-cause fix; alternatives are covered or riskier |
| gpt-5.5 | 2 | No | PR addresses shared UITabBarAppearance state mutation with the simplest robust path; other distinct strategies were more complex or unproven |
Exhausted: Yes
Selected Fix: PR #36026 — the PR's direct UITabBarItem badge-property approach is the simplest validated fix. Candidate #1 passed but is more complex and allocates per-item appearances; candidate #2 passed but adds unproven lifecycle reapplication; candidate #3 was not empirically validated due build/restore failure; candidate #4 failed a stale-appearance regression.
🏁 Report — Final Recommendation
Comparative Fix Report — PR #36026
Ranking
| Rank | Candidate | Regression result | Assessment |
|---|---|---|---|
| 1 | pr |
✅ Passed | Best balance of correctness, simplicity, and validation. It removes the root cause by no longer writing Shell badge colors into per-item UITabBarAppearance, while still applying native UITabBarItem badge color/text state across all relevant control states. |
| 2 | pr-plus-reviewer |
✅ Passed | Equivalent to pr; the expert reviewer had no actionable feedback to apply, so this is not a distinct improvement over the raw PR. |
| 3 | try-fix-2 |
✅ Passed | Adds lifecycle reapplication after selection and Shell appearance recomputation, but its passing behavior depends on the same direct UITabBarItem badge payload as the PR. The extra hooks are defense-in-depth without a failing test proving they are necessary. |
| 4 | try-fix-1 |
✅ Passed | Uses isolated per-item UITabBarAppearance instances. This validates successfully, but it is more complex, allocates additional appearance objects on updates, and keeps badge styling on the appearance path the PR intentionally avoids. |
| 5 | try-fix-3 |
❌ Failed | Sanitizes shared tab bar appearance badge fields, but the required regression command failed before test execution and the candidate was not empirically validated. Per ranking rules, it must stay below passing candidates. |
| 6 | try-fix-4 |
❌ Failed | Attempts stale per-item appearance cleanup while using direct badge properties, but its added stale-appearance regression timed out and self-review recorded a major correctness issue. Per ranking rules, it must stay below passing candidates. |
Candidate comparison
pr and pr-plus-reviewer are identical because the expert reviewer produced no actionable inline findings. The PR's approach is the smallest validated fix: it stops mutating per-item UITabBarAppearance badge colors and relies on the native UITabBarItem badge APIs, including text attributes for normal, selected, disabled, and focused states.
try-fix-1 is validated but chooses a heavier model: keep the iOS 15+ appearance pipeline and isolate every per-item appearance. That may cover more UIKit appearance surface, but it also preserves the same category of appearance-state complexity that caused the bug and adds per-update allocations.
try-fix-2 is also validated and low risk, but its added lifecycle reapplication hooks are not proven necessary by the regression. The core payload remains the PR's direct UITabBarItem update, so it is best treated as a possible future hardening step rather than the preferred fix now.
try-fix-3 and try-fix-4 both rank below all passing candidates. Candidate 3 was not validated because the build/test command failed before execution, and candidate 4 failed its own stale-appearance regression despite passing existing Shell badge tests.
Winner
Winner: pr
The raw PR fix wins because it is the simplest empirically validated solution, directly removes the shared/per-item appearance badge mutation path responsible for color bleed, and received no actionable expert-review corrections. Failed candidates are ranked below all passing candidates as required.
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description
Fixes #35948 by avoiding per-item
UITabBarAppearancebadge color updates for iOS/MacCatalyst Shell tab badges. UIKit can render badge appearance state from the selected tab across other visible tabs, causing badge colors to bleed between Shell tabs. Badge colors now stay on the nativeUITabBarItempath, and badge text attributes are applied for normal, selected, disabled, and focused states.Testing
dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -c Release -f net11.0-ios -r iossimulator-arm64 /p:TreatWarningsAsErrors=false /p:CodesignRequireProvisioningProfile=false /p:ValidateXcodeVersion=falsedotnet xharness apple test --app artifacts/bin/Controls.DeviceTests/Release/net11.0-ios/iossimulator-arm64/Microsoft.Maui.Controls.DeviceTests.app --target ios-simulator-64_26.4 --device ABC02C6A-A076-4C9F-B651-610FDA4BA06A -o artifacts/log/shell-ios-net11-final4 --timeout 01:00:00 -v --set-env=TestFilter=Category=Shell— 209 passed, 0 failed