[iOS/MacCatalyst] Controls.Core: Enable MemoryAnalyzers - #36312
Conversation
…iewController) Revives dotnet#18318. Enables the deterministic MemoryAnalyzers on Controls.Core and demonstrates the finding-resolution pattern on one CollectionView file. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reviving dotnet#18318: with MemoryAnalyzers now enabled on Controls.Core, this resolves the diagnostics it surfaces so the analyzer can be enforced (error) on modern (non-Compatibility) code. Modern handlers (Items/, Items2/, Platform/iOS, GestureManager): - CollectionView/CarouselView controllers, cells, delegators and layouts: suppress MEM0002/MEM0003 with "Proven safe in test: MemoryTests.HandlerDoesNotLeak", matching the existing convention in ItemsViewController.cs / CarouselViewController.cs. - GroupableItemsViewController2 scroll-ended callback: transient, cleared to null immediately after invocation. - ControlsModalWrapper: modal handler + PropertyChanged subscription are released/unsubscribed in Dispose (verified). - DragAndDropDelegate: handler reference is released in Disconnect (verified); local drag state is UIKit session-scoped. - CustomPressGestureRecognizer / FakeRightClick*Interaction: strong references are required to keep native targets/delegates alive for the recognizer / interaction lifetime (by design). Legacy Compatibility/ renderers (~390 findings) are downgraded to suggestion via src/Controls/src/Core/Compatibility/.editorconfig for incremental adoption and tracked for follow-up burn-down. Verified: Controls.Core builds clean of MEM diagnostics for both net10.0-ios26.0 and net10.0-maccatalyst26.0. 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 -- 36312Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36312" |
…rror on Compatibility Per review feedback (@jonathanpeppers): downgrading MEM0001/2/3 to suggestion just silences the analyzer on legacy renderers instead of enforcing it. The findings will be handled individually (real fix where clean, else specific justified suppression). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…renderers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…renderers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Note 🤖 AI-generated comment (GitHub Copilot CLI, on behalf of @kubaflo). Please verify before relying on it. @jonathanpeppers — thanks, you were exactly right: the Every finding is handled individually per the README rules, fix-first:
226 findings resolved (~195 legacy + 31 modern); Given the volume, most legacy findings are conservative justified suppressions rather than behavioral changes — happy to convert more into real fixes wherever you'd prefer. Ready for another look when you have a moment. |
There was a problem hiding this comment.
Pull request overview
This PR enables the MemoryAnalyzers Roslyn analyzer on Microsoft.Maui.Controls.Core and addresses the resulting iOS/MacCatalyst leak diagnostics by adding targeted teardown fixes, WeakReference conversions, and justified [UnconditionalSuppressMessage] annotations across modern handlers and legacy Compatibility renderers.
Changes:
- Enable
MemoryAnalyzersonsrc/Controls/src/Core/Controls.Core.csproj. - Fix/avoid retain cycles and event-subscription leaks in several iOS Compatibility renderers (notably Shell/Nav renderers) and platform helpers.
- Add granular
MEM0001/2/3suppressions with justifications where lifetime/ownership is intentional and teardown is verified.
Reviewed changes
Copilot reviewed 49 out of 49 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Controls/src/Core/Platform/iOS/DragAndDropDelegate.cs | Adds MEM suppressions for session-scoped handler references in drag/drop state. |
| src/Controls/src/Core/Platform/iOS/CustomPressGestureRecognizer.cs | Adds MEM suppressions for target/event retention within recognizer lifetime. |
| src/Controls/src/Core/Platform/iOS/ControlsModalWrapper.cs | Adds MEM suppressions and documents teardown expectations for modal wrapper subscriptions/ownership. |
| src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs | Suppresses required strong delegate references to prevent GC during interaction lifetime. |
| src/Controls/src/Core/Handlers/Items2/iOS/TemplatedCell2.cs | Suppresses handler/view strong refs with “proven safe” memory test justification. |
| src/Controls/src/Core/Handlers/Items2/iOS/ReorderableItemsViewController2.cs | Suppresses long-press recognizer strong reference with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewDelegator2.cs | Suppresses layout strong reference with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs | Suppresses ItemsSource ref + window event subscription with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items2/iOS/GroupableItemsViewController2.cs | Suppresses transient callback retention used for scroll animation end handling. |
| src/Controls/src/Core/Handlers/Items2/iOS/DefaultCell2.cs | Suppresses UIKit subview/constraint ownership with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/StructuredItemsViewController.cs | Suppresses header/footer native view retention with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/ReorderableItemsViewController.cs | Suppresses long-press recognizer strong reference with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/ItemsViewLayout.cs | Suppresses instance event subscription flagged by MEM0003 with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/ItemsViewDelegator.cs | Suppresses layout ownership with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/ItemsViewController.cs | Suppresses ItemsSource ref + window event subscription with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/GroupableItemsViewController.cs | Suppresses cached measurement cells + transient callback retention. |
| src/Controls/src/Core/Handlers/Items/iOS/DefaultCell.cs | Suppresses UIKit subview/constraint ownership with “proven safe” justification. |
| src/Controls/src/Core/Handlers/Items/iOS/CarouselViewController.cs | Suppresses event subscription flagged by MEM0003 with “proven safe” justification. |
| src/Controls/src/Core/Controls.Core.csproj | Adds MemoryAnalyzers package reference to enable diagnostics on Controls.Core. |
| src/Controls/src/Core/Compatibility/iOS/NativeViewPropertyListener.cs | Adds MEM0001 suppression for a PropertyChanged event on an NSObject subclass. |
| src/Controls/src/Core/Compatibility/iOS/GlobalCloseContextGestureRecognizer.cs | Suppresses strong UIScrollView member with documented Dispose cleanup intent. |
| src/Controls/src/Core/Compatibility/iOS/Extensions/ToolbarItemExtensions.cs | Adds explicit teardown in Dispose and MEM suppressions for item subscriptions/UI ownership. |
| src/Controls/src/Core/Compatibility/Handlers/VisualElementRenderer.cs | Adds suppressions for mapper/context/mapper fields and legacy public events. |
| src/Controls/src/Core/Compatibility/Handlers/TableView/iOS/TableViewRenderer.cs | Suppresses original background view retention needed for restoration. |
| src/Controls/src/Core/Compatibility/Handlers/TableView/iOS/TableViewModelRenderer.cs | Suppresses instance event subscription flagged by MEM0003. |
| src/Controls/src/Core/Compatibility/Handlers/TabbedPage/iOS/TabbedRenderer.cs | Adds suppressions + additional Dispose teardown for child/page subscriptions and brushes. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/UIContainerView.cs | Suppresses renderer/platform ownership + documents internal event teardown ownership. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/UIContainerCell.cs | Adds suppressions + disconnect cleanup (nulling fields) for recycled table cells. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellTableViewSource.cs | Makes measure-invalidated callback static and adds suppressions for owned refs/events. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellTableViewController.cs | Adds suppressions for owned refs/callbacks and event teardown in Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cs | Adds suppressions + additional view removal/nulling during Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootHeader.cs | Adds suppressions + additional view disposal/removal and nulling on Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs | Reworks delegates to weak refs to break retain cycles; adds many MEM suppressions. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSearchResultsRenderer.cs | Adds suppressions and clears public event in Dispose to avoid leaks. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellRenderer.cs | Adds suppressions and strengthens Dispose teardown for renderers/subscriptions. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemRenderer.cs | Adds suppressions + explicit tracker/context cleanup and event teardown documentation. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutRenderer.cs | Adds suppressions + more aggressive disposal of gestures/animations/flyout controller. |
| src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutContentRenderer.cs | Converts lifecycle events to explicit-interface events and adds Dispose teardown. |
| src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs | Adds suppressions across owned state + documents/targets teardown points. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ViewCellRenderer.cs | Adds suppression for per-cell subscriptions removed on replacement/Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ListViewRenderer.cs | Adds many suppressions and teardown annotations for owned refs/subscriptions. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/EntryCellRenderer.cs | Adds suppressions + clears public events and unsubscribes in cell Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ContextScrollViewDelegate.cs | Adds suppressions + more explicit cleanup/disposal of recognizers in Dispose. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ContextActionCell.cs | Adds suppressions + ensures ContentCell cleared and ownership is explicit. |
| src/Controls/src/Core/Compatibility/Handlers/ListView/iOS/CellTableViewCell.cs | Adds suppression and clears callback when Cell is set to null. |
| src/Controls/src/Core/Compatibility/Handlers/iOS/VisualElementRenderer.cs | Adds suppression for SizeChanged/BatchCommitted subscriptions removed on element change. |
| src/Controls/src/Core/Compatibility/Handlers/iOS/ViewRenderer.cs | Adds suppression for native view reference cleared during disconnect. |
| src/Controls/src/Core/Compatibility/Handlers/iOS/FrameRenderer.cs | Adds suppressions for static mapper + owned content view. |
| src/Controls/src/Core/Compatibility/Handlers/FlyoutPage/iOS/PhoneFlyoutPageRenderer.cs | Adds suppressions and extra event teardown in Dispose. |
PureWeen
left a comment
There was a problem hiding this comment.
Adversarial code review — PR #36312
Methodology: this change was independently reviewed by 3 models, and single-reviewer findings were re-tested in a dispute round. Only findings that survived cross-validation are reported. This is a code-only assessment — CI status is out of scope.
This PR clears ~226 MemoryAnalyzers diagnostics on Controls.Core, mostly via [UnconditionalSuppressMessage] with a handful of behavioral fixes (WeakReference conversions, static-method conversions, added Dispose teardown). The bulk holds up well: the WeakReference self-cycle conversions in ShellSectionRenderer, the new ShellFlyoutContentRenderer.Dispose that fixes a real pre-existing Shell.PropertyChanged leak, and the "proven safe in HandlerDoesNotLeak" suppressions all check out. The items below are the exceptions.
❌ Public API break + build break — ShellFlyoutContentRenderer (already flagged inline at :47)
ShellFlyoutContentRenderer is a public class, and its WillAppear / WillDisappear events are shipped public API — both are present in PublicAPI.Shipped.txt for net-ios and net-maccatalyst. Demoting them to private + explicit-interface events removes shipped API. Beyond the source-compat break the existing review already notes, this should also fail the build with RS0017 (the PublicAPI analyzer), because no matching removal entries were added to PublicAPI.Unshipped.txt. And internally these events have zero subscribers, so the demotion buys nothing. Recommend keeping them public and suppressing MEM0001 — consistent with how every other legacy renderer event in this PR was handled.
⚠️ ContextScrollViewDelegate.Dispose — dispose without remove (inline at :228)
⚠️ TableViewModelRenderer — MEM0003 justification addresses the wrong leak vector (inline at :49)
See the inline comments for details.
💡 Minor
CellTableViewCell.PropertyChanged(already flagged inline at :19): worth adding that this field is effectively dead — nothing ever assigns it (the.PropertyChanged +=sites are on theViewCellmodel, not this field). The inaccurate "cleared in Dispose" justification is therefore harmless in practice; the cleanest resolution may be to just remove the unused field rather than justify it.ShellFlyoutContentRenderer.Disposeasync-callback window: the new Dispose nulls_shellContext/_bgImagebeforebase.Dispose, while the pre-existingUpdateFlyoutBgImageAsyncLoadImagecallback dereferences them. Both dispute-round reviewers agreed theView is nullguard plus synchronous Dispose ordering make an actual NRE unlikely, so this is defensive only — but a_shellContext is nullcheck alongside the existingView is nullguard would close the window cheaply.
Tests
No tests were added. These suppression justifications are lifetime claims that only device/memory tests (e.g. MemoryTests.HandlerDoesNotLeak) can truly validate; findings at ContextScrollViewDelegate and TableViewModelRenderer describe leak paths that wouldn't be caught without such coverage.
3 independent reviewers · adversarial consensus · comment-only (approval is a human decision).
PureWeen
left a comment
There was a problem hiding this comment.
Adversarial re-review (fresh pass) — methodology: 3 independent reviewers + a dispute round on split findings.
This was a second, independent pass over the unchanged head. It re-confirmed the previously posted event-demotion / public-API concern in ShellFlyoutContentRenderer (already flagged — not re-posting), and surfaced one new finding, added inline:
⚠️ ShellFlyoutRenderer.Disposecallsbase.Dispose(disposing)before the new native-teardown block, soView?.RemoveGestureRecognizer(...)runs against an already-disposed controller and no-ops. Fix is to movebase.Disposeto the end, matching the siblingShellFlyoutContentRenderer.Disposein this same PR.
All other new candidates raised during this pass were investigated and discarded as pre-existing/out-of-scope, mitigated by base.Dispose tearing down the view tree, or style-only. CI status is out of scope for this review.
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 6 findings
See inline comments for details.
This comment has been minimized.
This comment has been minimized.
|
AI-assisted review follow-up for review 4761788649: its Commit The deterministic gate failed without this fix (214/215; retained |
|
/review tests |
Tests Failure Analysis
Test Failure Review: Not ready - click to expandOverall verdict: Not ready No known PR-caused failure remains on Coverage: Fresh builds maui-pr 1523478, device 1523482, and UI 1523481 target merge SHA
Recommended actionWait for the fresh automated review and builds 1523478, 1523482, and 1523481. If they remain green or contain only failures verified against Evidence detailsDeterministic review gate:
Prior current-head evidence retained:
|
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 926cb3a5-a29d-45bd-8c25-35da659b8dfd
This comment has been minimized.
This comment has been minimized.
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
|
/azp run maui-pr-devicetests |
|
/azp run maui-pr-uitests |
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
1 similar comment
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
|
/review tests |
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 4 findings
See inline comments for details.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 926cb3a5-a29d-45bd-8c25-35da659b8dfd
This comment has been minimized.
This comment has been minimized.
|
/azp run |
|
/azp run maui-pr-devicetests |
|
/azp run maui-pr-uitests |
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
1 similar comment
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
|
Azure Pipelines: Successfully started running 3 pipeline(s). |
|
/review tests |
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@kubaflo — new AI review results are available based on this last commit:
a6a6559.
🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix
Gate Result: ✅ PASSED
Platform: IOS · Base: main · Merge base: 657fb516
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
📱 MemoryTests (TableViewSourceReplacementUnsubscribesPreviousSource, ContextActionsCellDisposalUnsubscribesCell, SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacement) Category=Memory |
✅ FAIL — 360s | ✅ PASS — 199s |
📱 ShellTests (ShellSectionDelegatesDoNotRetainRenderer, DisposedShellSectionRootIgnoresLateLayout, DisposedShellFlyoutContentIgnoresLateLifecycleCallbacks, DisposedShellFlyoutContentDisconnectsHeaderAndFooterHandlers, DisposedShellTableSourceClearsScrolledSubscribers, DisconnectShellDuringCurrentItemChangeDoesNotRecreateRenderer, StaleShellFlyoutBackgroundImageIsDisposed, Disconnect, Complete, DisposeForTest) Category=Shell |
✅ FAIL — 80s | ✅ PASS — 67s |
🔴 Without fix — 📱 MemoryTests (TableViewSourceReplacementUnsubscribesPreviousSource, ContextActionsCellDisposalUnsubscribesCell, SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacement): FAIL ✅ · 360s
(truncated to last 15,000 chars)
Maui.Controls.DeviceTests[7127:47912] NUNIT_SKIPPED_METHODS = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9232870] 2026-07-23 02:36:08.915952-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] NUNIT_SKIPPED_CLASSES = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9232970] 2026-07-23 02:36:08.916013-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] headlessrunner = 'true'
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9832880] 2026-07-23 02:36:08.973381-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Runner executing: Run everything]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9833390] 2026-07-23 02:36:08.974363-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [arm64: iOS v26.0]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9833470] 2026-07-23 02:36:08.974577-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Device Name: iPhone 11 Pro]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9833550] 2026-07-23 02:36:08.974755-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Device UDID: 3c49784bcead46e1ab7cc9f605076119]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9833600] 2026-07-23 02:36:08.974834-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Device Locale: en-US]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9935360] 2026-07-23 02:36:08.983420-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Device Date/Time: 7/23/2026 2:36:08 AM]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9936010] 2026-07-23 02:36:08.983904-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [Bundle: com.microsoft.maui.controls.devicetests]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9936570] 2026-07-23 02:36:08.984961-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Skipping categories: Category=Accessibility, Category=Application, Category=Behavior, Category=Border, Category=BoxView, Category=Button, Category=CarouselView, Category=CheckBox, Category=CollectionView, Category=Compatibility, Category=ContentView, Category=DatePicker, Category=Dispatcher, Category=Editor, Category=Element, Category=Entry, Category=FlexLayout, Category=FlyoutPage, Category=Frame, Category=Gesture, Category=HybridWebView, Category=Image, Category=Label, Category=Layout, Category=Lifecycle, Category=ListView, Category=Map, Category=MenuFlyout, Category=Mapper, Category=Modal, Category=NavigationPage, Category=Page, Category=Path, Category=Picker, Category=RadioButton, Category=RefreshView, Category=ScrollView, Category=SearchBar, Category=Shape, Category=Shell, Category=Slider, Category=SwipeView, Category=TabbedPage, Category=TextInput, Category=Toolbar, Category=TemplatedView, Category=View, Category=VisualElement, Category=VisualElementTree, Category=WebView, Category=Window, Category=WindowOverlay, Category=Xaml
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:08.9937260] 2026-07-23 02:36:08.989976-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Using reflection-based Xunit runner (threaded execution)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:09.0239020] 2026-07-23 02:36:09.015128-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Discovering: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/AF96444A-E952-4C7D-B9CB-D6B498650878/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (method display = ClassAndMethod, method display options = None)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:09.4606920] 2026-07-23 02:36:09.460314-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Discovered: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/AF96444A-E952-4C7D-B9CB-D6B498650878/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (found 15 of 467 test cases)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:09.4682910] 2026-07-23 02:36:09.467866-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Starting: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/AF96444A-E952-4C7D-B9CB-D6B498650878/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8922210] 2026-07-23 02:36:17.891567-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [FAIL] ContextActionsCell Disposal Unsubscribes Cell
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923090] Assert.DoesNotContain() Failure: Filter matched in collection
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923210] ↓ (pos 0)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923270] 2026-07-23 02:36:17.891681-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Collection: [PropertyChangedEventHandler { Method = Void OnCellPropertyChanged(System.Object, System.ComponentModel.PropertyChangedEventArgs), Target = [···] }]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923320] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.<>c.<ContextActionsCellDisposalUnsubscribesCell>b__12_0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923390] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923630] 2026-07-23 02:36:17.891822-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923720] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923840] 2026-07-23 02:36:17.891955-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.ContextActionsCellDisposalUnsubscribesCell()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:17.8923940] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6402450] 2026-07-23 02:36:21.639905-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [FAIL] TableView Source Replacement Unsubscribes Previous Source
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6402790] Assert.Single() Failure: The collection contained 2 items
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6402870] 2026-07-23 02:36:21.640074-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Collection: [EventHandler { Method = Void <.ctor>b__12_0(System.Object, System.EventArgs), Target = <Microsoft_Maui_Controls_Handlers_Compatibility_TableViewModelRenderer: 0x6000000aa300> }, EventHandler { Method = Void <.ctor>b__12_0(System.Object, System.EventArgs), Target = <Microsoft_Maui_Controls_Handlers_Compatibility_UnEvenTableViewModelRenderer: 0x6000000aab60> }]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6403090] 2026-07-23 02:36:21.640181-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.<TableViewSourceReplacementUnsubscribesPreviousSource>b__11_0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6403130] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6404330] 2026-07-23 02:36:21.640282-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6404690] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6404840] 2026-07-23 02:36:21.640362-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.TableViewSourceReplacementUnsubscribesPreviousSource()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:21.6404900] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9302290] 2026-07-23 02:36:28.929647-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] [FAIL] Secondary Toolbar Item Disposal Unsubscribes After Custom View Replacement
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9304750] System.InvalidCastException : Arg_InvalidCastException
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9305100] 2026-07-23 02:36:28.929969-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Controls.Compatibility.Platform.iOS.ToolbarItemExtensions.SecondaryToolbarItem.UpdateText(ToolbarItem item)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9305310] at Microsoft.Maui.Controls.Compatibility.Platform.iOS.ToolbarItemExtensions.SecondaryToolbarItem.OnPropertyChanged(Object sender, PropertyChangedEventArgs e)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9305360] at Microsoft.Maui.Controls.BindableObject.OnPropertyChanged(String propertyName)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9305450] 2026-07-23 02:36:28.930185-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Controls.Element.OnPropertyChanged(String propertyName)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9305560] at Microsoft.Maui.Controls.BindableObject.OnBindablePropertySet(BindableProperty property, Object original, Object value, Boolean didChange, Boolean willFirePropertyChanged)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9306320] 2026-07-23 02:36:28.930330-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Controls.Element.OnBindablePropertySet(BindableProperty property, Object original, Object value, Boolean changed, Boolean willFirePropertyChanged)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9306970] 2026-07-23 02:36:28.930545-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty property, BindablePropertyContext context, Object value, Boolean currentlyApplying, SetValueFlags attributes, SetterSpecificity specificity, Boolean silent)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9308480] 2026-07-23 02:36:28.930708-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty property, Object value, SetValueFlags attributes, SetValuePrivateFlags privateAttributes, SetterSpecificity specificity)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9308580] at Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty property, Object value)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9308730] at Microsoft.Maui.Controls.MenuItem.set_Text(String value)
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9310030] 2026-07-23 02:36:28.930798-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.<>c.<SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacement>b__13_0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9310550] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9310860] 2026-07-23 02:36:28.930870-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9311020] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9311500] 2026-07-23 02:36:28.930979-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] at Microsoft.Maui.DeviceTests.Memory.MemoryTests.SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacement()
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9311570] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9328730] 2026-07-23 02:36:28.932627-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Finished: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/AF96444A-E952-4C7D-B9CB-D6B498650878/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9338110] 2026-07-23 02:36:28.933492-0700 Microsoft.Maui.Controls.DeviceTests[7127:49178] Tests run: 59 Passed: 55 Inconclusive: 0 Failed: 3 Ignored: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9364030] 2026-07-23 02:36:28.936169-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9364960] 2026-07-23 02:36:28.936297-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912]
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9365290] === TEST EXECUTION SUMMARY ===
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9365350] Tests run: 59 Passed: 55 Inconclusive: 0 Failed: 3 Ignored: 0 Skipped: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:36:28.9368640] 2026-07-23 02:36:28.936704-0700 Microsoft.Maui.Controls.DeviceTests[7127:47912] Test results saved to: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Data/Application/BBFC21B4-4A56-415E-9CB8-846E7EBA259F/Documents/test-results.xml
�[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": "H16WP4KY95-1",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-3E231176-1D1F-43BF-B31F-141714850176.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260723_023539.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260723_023547.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-20260723_023547.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 1 (TESTS_FAILED)
Passed: 0
Failed: 0
Tests completed with exit code: 1
🟢 With fix — 📱 MemoryTests (TableViewSourceReplacementUnsubscribesPreviousSource, ContextActionsCellDisposalUnsubscribesCell, SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacement): PASS ✅ · 199s
(truncated to last 15,000 chars)
bea7798e]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219680] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219760] at Microsoft.Maui.DeviceTests.ShellTests.DisposedShellTableSourceClearsScrolledSubscribers()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219810] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2295600] 2026-07-23 02:37:48.227460-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x1112e5000>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353220] 2026-07-23 02:37:48.235047-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [FAIL] Disconnect Shell Detaches Current Item Renderer Before Disposal
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353390] System.NullReferenceException : Arg_NullReferenceException
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353750] 2026-07-23 02:37:48.235230-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Controls.Platform.Compatibility.ShellFlyoutRenderer.Microsoft.Maui.Controls.Platform.Compatibility.IShellFlyoutRenderer.AttachFlyout(IShellContext context, UIViewController content)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353940] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.get_FlyoutRenderer()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2357930] 2026-07-23 02:37:48.235318-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.Dispose(Boolean disposing)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358010] at Foundation.NSObject.Dispose()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358050] at Microsoft.Maui.DeviceTests.ShellTests.<>c.<DisconnectShellDetachesCurrentItemRendererBeforeDisposal>b__75_0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358080] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358110] 2026-07-23 02:37:48.235406-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358140] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358150] 2026-07-23 02:37:48.235511-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.8520950] 2026-07-23 02:37:48.851758-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [Snapshotting] Snapshotting a view (0x13d2264b0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:49.9985880] 2026-07-23 02:37:49.998332-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Finished: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/835129C4-C102-4E68-A60F-1CC3A7D49B9F/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:49.9992100] 2026-07-23 02:37:49.999061-0700 Microsoft.Maui.Controls.DeviceTests[7357:51211] Tests run: 215 Passed: 205 Inconclusive: 0 Failed: 10 Ignored: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0028410] 2026-07-23 02:37:50.002657-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029480] 2026-07-23 02:37:50.002788-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117]
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029600] === TEST EXECUTION SUMMARY ===
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029650] Tests run: 215 Passed: 205 Inconclusive: 0 Failed: 10 Ignored: 0 Skipped: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0033210] 2026-07-23 02:37:50.003198-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Test results saved to: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Data/Application/2A0EF2CF-7C4D-4858-9DA9-92DF4D199D3D/Documents/test-results.xml
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:56.7671770] xcrun simctl launch --console --terminate-running-process 3E231176-1D1F-43BF-B31F-141714850176 com.microsoft.maui.controls.devicetests
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:57.3567200] com.microsoft.maui.controls.devicetests: 8096
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.2587730] 2026-07-23 02:40:58.258340-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [UIKit App Config] `UIScene` lifecycle will soon be required. Failure to adopt will result in an assert in the future.
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.2942740] 2026-07-23 02:40:58.293911-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] TestFilter: Category=Memory
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3048060] 2026-07-23 02:40:58.304530-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_AUTOSTART = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3048590] 2026-07-23 02:40:58.304638-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_AUTOEXIT = 'true'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3049040] 2026-07-23 02:40:58.304735-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_ENABLE_NETWORK = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3050740] 2026-07-23 02:40:58.304887-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] DISABLE_SYSTEM_PERMISSION_TESTS = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3051460] 2026-07-23 02:40:58.304980-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_HOSTNAME = '127.0.0.1'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3051690] 2026-07-23 02:40:58.305049-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_TRANSPORT = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3051860] 2026-07-23 02:40:58.305098-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_LOG_FILE = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3052480] 2026-07-23 02:40:58.305141-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_HOSTPORT = '50919'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3053930] 2026-07-23 02:40:58.305192-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] USE_TCP_TUNNEL = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3054750] 2026-07-23 02:40:58.305314-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] RUN_END_TAG = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3055230] 2026-07-23 02:40:58.305412-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_ENABLE_XML_OUTPUT = 'true'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3055870] 2026-07-23 02:40:58.305472-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_ENABLE_XML_MODE = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3056190] 2026-07-23 02:40:58.305522-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_XML_VERSION = 'xUnit'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3057680] 2026-07-23 02:40:58.305631-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_SORTNAMES = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3058350] 2026-07-23 02:40:58.305729-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_RUN_ALL = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3059130] 2026-07-23 02:40:58.305777-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_SKIPPED_METHODS = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3059930] 2026-07-23 02:40:58.305872-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] NUNIT_SKIPPED_CLASSES = ''
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3060740] 2026-07-23 02:40:58.305969-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] headlessrunner = 'true'
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3310110] 2026-07-23 02:40:58.330788-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Runner executing: Run everything]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3313530] 2026-07-23 02:40:58.331173-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [arm64: iOS v26.0]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3314060] 2026-07-23 02:40:58.331259-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Device Name: iPhone 11 Pro]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3316420] 2026-07-23 02:40:58.331518-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Device UDID: 8979f3d23ff64f20ab53a60f27d100bf]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3318290] 2026-07-23 02:40:58.331597-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Device Locale: en-US]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3350520] 2026-07-23 02:40:58.334850-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Device Date/Time: 7/23/2026 2:40:58 AM]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3352320] 2026-07-23 02:40:58.335058-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] [Bundle: com.microsoft.maui.controls.devicetests]
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3356490] 2026-07-23 02:40:58.335520-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Skipping categories: Category=Accessibility, Category=Application, Category=Behavior, Category=Border, Category=BoxView, Category=Button, Category=CarouselView, Category=CheckBox, Category=CollectionView, Category=Compatibility, Category=ContentView, Category=DatePicker, Category=Dispatcher, Category=Editor, Category=Element, Category=Entry, Category=FlexLayout, Category=FlyoutPage, Category=Frame, Category=Gesture, Category=HybridWebView, Category=Image, Category=Label, Category=Layout, Category=Lifecycle, Category=ListView, Category=Map, Category=MenuFlyout, Category=Mapper, Category=Modal, Category=NavigationPage, Category=Page, Category=Path, Category=Picker, Category=RadioButton, Category=RefreshView, Category=ScrollView, Category=SearchBar, Category=Shape, Category=Shell, Category=Slider, Category=SwipeView, Category=TabbedPage, Category=TextInput, Category=Toolbar, Category=TemplatedView, Category=View, Category=VisualElement, Category=VisualElementTree, Category=WebView, Category=Window, Category=WindowOverlay, Category=Xaml
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3382080] 2026-07-23 02:40:58.338100-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Using reflection-based Xunit runner (threaded execution)
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.3477390] 2026-07-23 02:40:58.347543-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Discovering: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/0F29C40D-D420-4236-A4AC-223FD715347C/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (method display = ClassAndMethod, method display options = None)
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.5254840] 2026-07-23 02:40:58.525038-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Discovered: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/0F29C40D-D420-4236-A4AC-223FD715347C/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (found 15 of 467 test cases)
�[40m�[37mdbug�[39m�[22m�[49m: [02:40:58.5292080] 2026-07-23 02:40:58.528949-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Starting: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/0F29C40D-D420-4236-A4AC-223FD715347C/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7399300] 2026-07-23 02:41:16.739664-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Finished: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/0F29C40D-D420-4236-A4AC-223FD715347C/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7406870] 2026-07-23 02:41:16.740575-0700 Microsoft.Maui.Controls.DeviceTests[8096:58522] Tests run: 59 Passed: 58 Inconclusive: 0 Failed: 0 Ignored: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7451550] 2026-07-23 02:41:16.744998-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7452980] 2026-07-23 02:41:16.745094-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477]
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7453410] === TEST EXECUTION SUMMARY ===
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7453560] Tests run: 59 Passed: 58 Inconclusive: 0 Failed: 0 Ignored: 0 Skipped: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:16.7456180] 2026-07-23 02:41:16.745499-0700 Microsoft.Maui.Controls.DeviceTests[8096:58477] Test results saved to: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Data/Application/7477C1C1-22C4-4611-BE47-EF4321F20DD7/Documents/test-results.xml
�[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": "H16WP4KY95-1",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-3E231176-1D1F-43BF-B31F-141714850176.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260723_024051.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260723_024055.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-20260723_024055.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 0
Passed: 0
Failed: 10
Tests completed successfully
🔴 Without fix — 📱 ShellTests (ShellSectionDelegatesDoNotRetainRenderer, DisposedShellSectionRootIgnoresLateLayout, DisposedShellFlyoutContentIgnoresLateLifecycleCallbacks, DisposedShellFlyoutContentDisconnectsHeaderAndFooterHandlers, DisposedShellTableSourceClearsScrolledSubscribers, DisconnectShellDuringCurrentItemChangeDoesNotRecreateRenderer, StaleShellFlyoutBackgroundImageIsDisposed, Disconnect, Complete, DisposeForTest): FAIL ✅ · 80s
(truncated to last 15,000 chars)
200080] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:42.2200100] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:43.8934150] 2026-07-23 02:37:43.893165-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [RTILog] -[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID. inputModality = Keyboard, inputOperation = <null selector>, customInfoType = UIEmojiSearchOperations
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:44.8204200] 2026-07-23 02:37:44.820111-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [Snapshotting] Snapshotting a view (0x139fc83e0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:44.8204550] 2026-07-23 02:37:44.820292-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [Snapshotting] Snapshotting a view (0x139fcc120, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:45.4429530] 2026-07-23 02:37:45.442630-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [ViewController] Calling -viewWillAppear: directly on a view controller is not supported, and may result in out-of-order callbacks and other inconsistent behavior. Use the -beginAppearanceTransition:animated: and -endAppearanceTransition APIs on UIViewController to manually drive appearance callbacks instead. Make a symbolic breakpoint at UIViewControllerAlertForAppearanceCallbackMisuse to catch this in the debugger. View controller: <Microsoft_Maui_Controls_Platform_Compatibility_ShellFlyoutContentRenderer: 0x13a268cf0>
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:45.4453400] 2026-07-23 02:37:45.442977-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [ViewController] Calling -viewWillDisappear: directly on a view controller is not supported, and may result in out-of-order callbacks and other inconsistent behavior. Use the -beginAppearanceTransition:animated: and -endAppearanceTransition APIs on UIViewController to manually drive appearance callbacks instead. Make a symbolic breakpoint at UIViewControllerAlertForAppearanceCallbackMisuse to catch this in the debugger. View controller: <Microsoft_Maui_Controls_Platform_Compatibility_ShellFlyoutContentRenderer: 0x13a268cf0>
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4873680] 2026-07-23 02:37:46.487032-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [FAIL] Disconnect Shell Cancels Active Item Transition Before Disposal
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4873960] Assert.Same() Failure: Values are not the same instance
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874030] Expected: Task<VoidTaskResult,<SetCurrentShellItemControllerAsync>d__60> { Status = RanToCompletion }
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874220] 2026-07-23 02:37:46.487139-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Actual: Task { Status = RanToCompletion }
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874290] at Microsoft.Maui.DeviceTests.ShellTests.<>c.<<DisconnectShellCancelsActiveItemTransitionBeforeDisposal>b__76_0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874340] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874420] 2026-07-23 02:37:46.487319-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4874470] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4875380] 2026-07-23 02:37:46.487398-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4875460] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:46.4875500] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200090] 2026-07-23 02:37:47.619667-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [FAIL] Disposed Shell Table Source Clears Scrolled Subscribers
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200390] Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200420] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200570] Actual: True
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200600] at Microsoft.Maui.DeviceTests.ShellTests.<>c.<DisposedShellTableSourceClearsScrolledSubscribers>b__72_0(ShellRenderer handler)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6200970] 2026-07-23 02:37:47.619905-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass13_0`1[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].<CreateHandlerAndAddToWindow>b__0(ShellRenderer handler)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6202300] 2026-07-23 02:37:47.620067-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6202410] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6218530] 2026-07-23 02:37:47.620230-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6218680] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6218760] 2026-07-23 02:37:47.620355-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass31_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6218810] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6218830] 2026-07-23 02:37:47.620510-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219290] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219370] 2026-07-23 02:37:47.620630-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219430] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219480] 2026-07-23 02:37:47.620774-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass17_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219540] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219580] 2026-07-23 02:37:47.621003-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219610] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219650] 2026-07-23 02:37:47.621098-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219680] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219760] at Microsoft.Maui.DeviceTests.ShellTests.DisposedShellTableSourceClearsScrolledSubscribers()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:47.6219810] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2295600] 2026-07-23 02:37:48.227460-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x1112e5000>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353220] 2026-07-23 02:37:48.235047-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [FAIL] Disconnect Shell Detaches Current Item Renderer Before Disposal
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353390] System.NullReferenceException : Arg_NullReferenceException
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353750] 2026-07-23 02:37:48.235230-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Controls.Platform.Compatibility.ShellFlyoutRenderer.Microsoft.Maui.Controls.Platform.Compatibility.IShellFlyoutRenderer.AttachFlyout(IShellContext context, UIViewController content)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2353940] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.get_FlyoutRenderer()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2357930] 2026-07-23 02:37:48.235318-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.Dispose(Boolean disposing)
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358010] at Foundation.NSObject.Dispose()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358050] at Microsoft.Maui.DeviceTests.ShellTests.<>c.<DisconnectShellDetachesCurrentItemRendererBeforeDisposal>b__75_0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358080] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358110] 2026-07-23 02:37:48.235406-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358140] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.2358150] 2026-07-23 02:37:48.235511-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:48.8520950] 2026-07-23 02:37:48.851758-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] [Snapshotting] Snapshotting a view (0x13d2264b0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:49.9985880] 2026-07-23 02:37:49.998332-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Finished: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/835129C4-C102-4E68-A60F-1CC3A7D49B9F/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:49.9992100] 2026-07-23 02:37:49.999061-0700 Microsoft.Maui.Controls.DeviceTests[7357:51211] Tests run: 215 Passed: 205 Inconclusive: 0 Failed: 10 Ignored: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0028410] 2026-07-23 02:37:50.002657-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029480] 2026-07-23 02:37:50.002788-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117]
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029600] === TEST EXECUTION SUMMARY ===
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0029650] Tests run: 215 Passed: 205 Inconclusive: 0 Failed: 10 Ignored: 0 Skipped: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:37:50.0033210] 2026-07-23 02:37:50.003198-0700 Microsoft.Maui.Controls.DeviceTests[7357:51117] Test results saved to: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Data/Application/2A0EF2CF-7C4D-4858-9DA9-92DF4D199D3D/Documents/test-results.xml
�[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": "H16WP4KY95-1",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-3E231176-1D1F-43BF-B31F-141714850176.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260723_023649.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260723_023654.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-20260723_023654.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 1 (TESTS_FAILED)
Passed: 0
Failed: 10
Tests completed with exit code: 1
🟢 With fix — 📱 ShellTests (ShellSectionDelegatesDoNotRetainRenderer, DisposedShellSectionRootIgnoresLateLayout, DisposedShellFlyoutContentIgnoresLateLifecycleCallbacks, DisposedShellFlyoutContentDisconnectsHeaderAndFooterHandlers, DisposedShellTableSourceClearsScrolledSubscribers, DisconnectShellDuringCurrentItemChangeDoesNotRecreateRenderer, StaleShellFlyoutBackgroundImageIsDisposed, Disconnect, Complete, DisposeForTest): PASS ✅ · 67s
(truncated to last 15,000 chars)
w, Category=Image, Category=Label, Category=Layout, Category=Lifecycle, Category=ListView, Category=Map, Category=MenuFlyout, Category=Mapper, Category=Memory, Category=Modal, Category=NavigationPage, Category=Page, Category=Path, Category=Picker, Category=RadioButton, Category=RefreshView, Category=ScrollView, Category=SearchBar, Category=Shape, Category=Slider, Category=SwipeView, Category=TabbedPage, Category=TextInput, Category=Toolbar, Category=TemplatedView, Category=View, Category=VisualElement, Category=VisualElementTree, Category=WebView, Category=Window, Category=WindowOverlay, Category=Xaml
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.5685420] 2026-07-23 02:41:37.568397-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Using reflection-based Xunit runner (threaded execution)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.5820440] 2026-07-23 02:41:37.581762-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Discovering: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/1BD40187-9C48-44F2-B39C-729048930E09/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (method display = ClassAndMethod, method display options = None)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.7410860] 2026-07-23 02:41:37.740798-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Discovered: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/1BD40187-9C48-44F2-B39C-729048930E09/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll (found 63 of 467 test cases)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.7444960] 2026-07-23 02:41:37.744352-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Starting: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/1BD40187-9C48-44F2-B39C-729048930E09/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.7660750] 2026-07-23 02:41:37.765805-0700 Microsoft.Maui.Controls.DeviceTests[8230:60517] [General] Failed to send CA Event for app launch measurements for ca_event_type: 0 event_name: com.apple.app_launch_measurement.FirstFramePresentationMetric
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:37.9516720] 2026-07-23 02:41:37.951400-0700 Microsoft.Maui.Controls.DeviceTests[8230:60517] [General] Failed to send CA Event for app launch measurements for ca_event_type: 1 event_name: com.apple.app_launch_measurement.ExtendedLaunchMetrics
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2533850] 2026-07-23 02:41:40.252660-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x113824e00>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2604340] 2026-07-23 02:41:40.260110-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Marshaling managed exception
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2606040] 2026-07-23 02:41:40.260447-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Exception: System.InvalidOperationException: Active Shell Item not set. Have you added any Shell Items to your Shell?
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2606200] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.SetupCurrentShellItem()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2606620] 2026-07-23 02:41:40.260522-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2609830] 2026-07-23 02:41:40.260704-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Mode: Default
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2613820] 2026-07-23 02:41:40.261212-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Marshaling Objective-C exception
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2614120] 2026-07-23 02:41:40.261279-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Exception: Active Shell Item not set. Have you added any Shell Items to your Shell? (System.InvalidOperationException)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2614240] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.SetupCurrentShellItem()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2614310] 2026-07-23 02:41:40.261336-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2615600] 2026-07-23 02:41:40.261404-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Mode: ThrowManagedException
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2617390] 2026-07-23 02:41:40.261579-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Marshaling managed exception
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2618900] 2026-07-23 02:41:40.261740-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Exception: System.InvalidOperationException: Active Shell Item not set. Have you added any Shell Items to your Shell?
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2619000] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.SetupCurrentShellItem()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2620070] 2026-07-23 02:41:40.261868-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2620180] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2620330] at ObjCRuntime.Runtime.RethrowManagedException(IntPtr )
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2621670] 2026-07-23 02:41:40.262019-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at ObjCRuntime.Runtime.rethrow_managed_exception(IntPtr original_exception_gchandle, IntPtr* exception_gchandle)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2621740] at UIKit.UIViewController.get_View()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2621770] at Microsoft.Maui.Controls.Platform.Compatibility.ShellFlyoutRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2622410] 2026-07-23 02:41:40.262109-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Mode: Default
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2625370] 2026-07-23 02:41:40.262333-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Marshaling Objective-C exception
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2625430] 2026-07-23 02:41:40.262425-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Exception: Active Shell Item not set. Have you added any Shell Items to your Shell? (System.InvalidOperationException)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2625520] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.SetupCurrentShellItem()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2625950] 2026-07-23 02:41:40.262454-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2626160] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2626290] at ObjCRuntime.Runtime.RethrowManagedException(IntPtr )
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2627070] 2026-07-23 02:41:40.262562-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] at ObjCRuntime.Runtime.rethrow_managed_exception(IntPtr original_exception_gchandle, IntPtr* exception_gchandle)
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2627280] at UIKit.UIViewController.get_View()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2627350] at Microsoft.Maui.Controls.Platform.Compatibility.ShellFlyoutRenderer.ViewDidLoad()
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:40.2627610] 2026-07-23 02:41:40.262629-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Mode: ThrowManagedException
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:45.0374320] 2026-07-23 02:41:45.037127-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x10f07c000>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:45.2716010] 2026-07-23 02:41:45.271196-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x10ea8c600>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:50.0057710] 2026-07-23 02:41:50.005410-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] [TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window). This may cause bugs by forcing views inside the table view to load and perform layout without accurate information (e.g. table view bounds, trait collection, layout margins, safe area insets, etc), and will also cause unnecessary performance overhead due to extra layout passes. Make a symbolic breakpoint at UITableViewAlertForLayoutOutsideViewHierarchy to catch this in the debugger and see what caused this to occur, so you can avoid this action altogether if possible, or defer it until the table view has been added to a window. Table view: <Microsoft_Maui_Controls_Platform_Compatibility_ShellTableViewController_AccessibilityNeutralTableView: 0x1138a1200; baseClass = UITableView; frame = (0 0; 300 812); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x600000e458f0>; backgroundColor = UIExtendedGrayColorSpace 0 0; layer = <CALayer: 0x600000e45a40>; contentOffset: {0, -44}; contentSize: {300, 44}; adjustedContentInset: {44, 0, 0, 0}; dataSource: <Microsoft_Maui_Controls_Platform_Compatibility_ShellTableViewSource: 0x6000000ffba0>>
�[40m�[37mdbug�[39m�[22m�[49m: [02:41:55.5418150] 2026-07-23 02:41:55.541334-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x10ea07400>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:18.8637100] 2026-07-23 02:42:18.863327-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] [RTILog] -[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID. inputModality = Keyboard, inputOperation = <null selector>, customInfoType = UIEmojiSearchOperations
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:19.7918510] 2026-07-23 02:42:19.791499-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] [Snapshotting] Snapshotting a view (0x138613b90, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:19.7919100] 2026-07-23 02:42:19.791708-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] [Snapshotting] Snapshotting a view (0x138617810, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:21.9990540] 2026-07-23 02:42:21.998628-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Unbalanced calls to begin/end appearance transitions for <Microsoft_Maui_Controls_Platform_Compatibility_ShellSectionRenderer: 0x1149dc800>.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:22.6084360] 2026-07-23 02:42:22.607995-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] [Snapshotting] Snapshotting a view (0x1381235e0, _TtCC5UIKit19NavigationButtonBar15ItemWrapperView) that has not been rendered at least once requires afterScreenUpdates:YES.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7541620] 2026-07-23 02:42:23.753735-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Finished: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Bundle/Application/1BD40187-9C48-44F2-B39C-729048930E09/Microsoft.Maui.Controls.DeviceTests.app/Microsoft.Maui.Controls.DeviceTests.dll
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7550150] 2026-07-23 02:42:23.754771-0700 Microsoft.Maui.Controls.DeviceTests[8230:60539] Tests run: 215 Passed: 215 Inconclusive: 0 Failed: 0 Ignored: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7596570] 2026-07-23 02:42:23.759431-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7597060] 2026-07-23 02:42:23.759550-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502]
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7597250] === TEST EXECUTION SUMMARY ===
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7597310] Tests run: 215 Passed: 215 Inconclusive: 0 Failed: 0 Ignored: 0 Skipped: 0
�[40m�[37mdbug�[39m�[22m�[49m: [02:42:23.7600560] 2026-07-23 02:42:23.759838-0700 Microsoft.Maui.Controls.DeviceTests[8230:60502] Test results saved to: /Users/cloudtest/Library/Developer/CoreSimulator/Devices/3E231176-1D1F-43BF-B31F-141714850176/data/Containers/Data/Application/2DB507FD-4E1E-43A7-8533-A95CF22E3122/Documents/test-results.xml
�[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": "H16WP4KY95-1",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-3E231176-1D1F-43BF-B31F-141714850176.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260723_024130.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260723_024135.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-20260723_024135.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 0
Passed: 0
Failed: 10
Tests completed successfully
📁 Fix files reverted (54 files)
src/Controls/src/Core/Compatibility/Handlers/FlyoutPage/iOS/PhoneFlyoutPageRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/CellTableViewCell.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ContextActionCell.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ContextScrollViewDelegate.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/EntryCellRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ListViewRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/ListView/iOS/ViewCellRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutContentRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutHeaderContainer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemTransition.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSearchResultsRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootHeader.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellTableViewController.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellTableViewSource.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/UIContainerCell.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/UIContainerView.cssrc/Controls/src/Core/Compatibility/Handlers/TabbedPage/iOS/TabbedRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/TableView/iOS/TableViewModelRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/TableView/iOS/TableViewRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/VisualElementRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/iOS/FrameRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/iOS/ViewRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/iOS/VisualElementRenderer.cssrc/Controls/src/Core/Compatibility/iOS/Extensions/ToolbarItemExtensions.cssrc/Controls/src/Core/Compatibility/iOS/GlobalCloseContextGestureRecognizer.cssrc/Controls/src/Core/Compatibility/iOS/NativeViewPropertyListener.cssrc/Controls/src/Core/Controls.Core.csprojsrc/Controls/src/Core/Handlers/Items/iOS/CarouselViewController.cssrc/Controls/src/Core/Handlers/Items/iOS/DefaultCell.cssrc/Controls/src/Core/Handlers/Items/iOS/GroupableItemsViewController.cssrc/Controls/src/Core/Handlers/Items/iOS/ItemsViewController.cssrc/Controls/src/Core/Handlers/Items/iOS/ItemsViewDelegator.cssrc/Controls/src/Core/Handlers/Items/iOS/ItemsViewLayout.cssrc/Controls/src/Core/Handlers/Items/iOS/ReorderableItemsViewController.cssrc/Controls/src/Core/Handlers/Items/iOS/StructuredItemsViewController.cssrc/Controls/src/Core/Handlers/Items2/iOS/CarouselViewController2.cssrc/Controls/src/Core/Handlers/Items2/iOS/DefaultCell2.cssrc/Controls/src/Core/Handlers/Items2/iOS/GroupableItemsViewController2.cssrc/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cssrc/Controls/src/Core/Handlers/Items2/iOS/ItemsViewDelegator2.cssrc/Controls/src/Core/Handlers/Items2/iOS/ReorderableItemsViewController2.cssrc/Controls/src/Core/Handlers/Items2/iOS/TemplatedCell2.cssrc/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cssrc/Controls/src/Core/Platform/iOS/ControlsModalWrapper.cssrc/Controls/src/Core/Platform/iOS/CustomPressGestureRecognizer.cssrc/Controls/src/Core/Platform/iOS/DragAndDropDelegate.cssrc/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
📱 UI Tests — CollectionView,ListView,Shell,TableView
Detected UI test categories: CollectionView,ListView,Shell,TableView
❌ Deep UI tests — 633 passed, 203 failed across 4 categories on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
CollectionView |
335/427 (89 ❌) | 174 diff PNGs |
ListView |
89/99 (8 ❌) | 16 diff PNGs |
Shell |
193/312 (104 ❌) | 208 diff PNGs |
TableView |
16/18 (2 ❌) | 4 diff PNGs |
❌ CollectionView — 89 failed tests
VerifyScrollToByIndexWithEndPositionAndVerticalList_Carrot
System.InvalidOperationException :
Snapshot different than baseline: VerifyScrollToByIndexWithEndPositionAndVerticalList_Carrot.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: VerifyScrollToByIndexWithEndPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't
...
VerifyScrollToByIndexWithMakeVisiblePositionAndVerticalList_Carrot
System.InvalidOperationException :
Snapshot different than baseline: VerifyScrollToByIndexWithMakeVisiblePositionAndVerticalList_Carrot.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: VerifyScrollToByIndexWithMakeVisiblePositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has chan
...
CVHorizontalLinearItemsLayoutItemSpacing
System.InvalidOperationException :
Snapshot different than baseline: CVHorizontalLinearItemsLayoutItemSpacing.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: CVHorizontalLinearItemsLayoutItemSpacing.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
...
CollectionViewMeasureFirstItem
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewMeasureFirstItem.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: CollectionViewMeasureFirstItem.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
...
CollectionViewGroupFooterTemplateShouldNotCrash
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewGroupFooterTemplateShouldNotCrash.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: CollectionViewGroupFooterTemplateShouldNotCrash.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
...
CollectionViewSelectedItemBackgroundShouldPersistAfterModalNavigation
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewSelectedItemBackgroundShouldPersistAfterModalNavigation.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: CollectionViewSelectedItemBackgroundShouldPersistAfterModalNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline ha
...
VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot
System.InvalidOperationException :
Snapshot different than baseline: VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot.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: VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this is
...
VerifyModelItemsGroupedListWhenMultipleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyModelItemsGroupedListWhenMultipleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 774
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.Interp
...
ReorderBetweenGroupsShouldNotOccurWhenCanMixGroupsIsFalse
System.InvalidOperationException :
Snapshot different than baseline: ReorderBetweenGroupsShouldNotOccurWhenCanMixGroupsIsFalse.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: ReorderBetweenGroupsShouldNotOccurWhenCanMixGroupsIsFalse.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a
...
VerifySelectionModeMultipleWhenProgrammaticSelectionWorksWithVerticalList
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.CollectionView_SelectionFeatureTests.VerifySelectionModeMultipleWhenProgrammaticSelectionWorksWithVerticalList() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_SelectionFeatureTests.cs:line 533
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBase
...
AddHeaderFooterAtRuntime
System.InvalidOperationException :
Snapshot different than baseline: AddHeaderFooterAtRuntime.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: AddHeaderFooterAtRuntime.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 dow
...
FlowdirectionShouldWorkForHeaderFooter
System.InvalidOperationException :
Snapshot different than baseline: FlowdirectionShouldWorkForHeaderFooter.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: FlowdirectionShouldWorkForHeaderFooter.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
...
CellLayoutUpdatesCorrectlyAfterDeviceOrientationChanges
System.InvalidOperationException :
Snapshot different than baseline: Issue28657_Landscape.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: Issue28657_Landscape.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
...
CollectionViewAddGroupWhenViewIsEmpty
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewAddGroupWhenViewIsEmpty.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: CollectionViewAddGroupWhenViewIsEmpty.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.
...
VerifyStringItemsObservableCollectionWhenMultipleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyStringItemsObservableCollectionWhenMultipleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 630
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvo
...
CollectionViewHeightIsCorrectAfterDelayedLoad
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.Issues.Issue34336.CollectionViewHeightIsCorrectAfterDelayedLoad() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue34336.cs:line 29
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflectio
...
VerticalItemsRemainFullyVisibleAfterChangingSpacing
System.InvalidOperationException :
Snapshot different than baseline: VerticalItemsRemainFullyVisibleAfterChangingSpacing.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: VerticalItemsRemainFullyVisibleAfterChangingSpacing.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then
...
VerticalGridCollectionViewRTLColumnMirroringShouldWork
System.InvalidOperationException :
Snapshot different than baseline: VerticalGridCollectionViewRTLColumnMirroringShouldWork.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: VerticalGridCollectionViewRTLColumnMirroringShouldWork.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug)
...
CollectionviewFooterHideswhenDynamicallyAddorRemoveItems
System.InvalidOperationException :
Snapshot different than baseline: CollectionviewFooterHideswhenDynamicallyAddorRemoveItems.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: CollectionviewFooterHideswhenDynamicallyAddorRemoveItems.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a
...
SelectedItemVisualIsCleared
System.InvalidOperationException :
Snapshot different than baseline: SelectedItemVisualIsCleared.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: SelectedItemVisualIsCleared.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
...
CollectionViewSelectionChangesVisualState
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewSelectionChangesVisualState.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: CollectionViewSelectionChangesVisualState.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
...
CheckEmptyViewMargin
System.InvalidOperationException :
Snapshot different than baseline: CheckEmptyViewMargin.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: CheckEmptyViewMargin.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 th
...
VerifyFlowDirectionRTLAndMeasureAllItemsWithObservableCollection
System.InvalidOperationException :
Snapshot different than baseline: VerifyFlowDirectionRTLAndMeasureAllItemsWithObservableCollection.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: VerifyFlowDirectionRTLAndMeasureAllItemsWithObservableCollection.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed
...
RemoveEmptyViewAtRuntime
System.InvalidOperationException :
Snapshot different than baseline: RemoveEmptyViewAtRuntime.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: RemoveEmptyViewAtRuntime.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 dow
...
VerifyStringItemsGroupedListWhenMultipleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyStringItemsGroupedListWhenMultipleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 722
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.Inter
...
HeaderShouldNotCollapseWithItems
System.InvalidOperationException :
Snapshot different than baseline: HeaderShouldNotCollapseWithItems.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: HeaderShouldNotCollapseWithItems.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
...
CollectionViewSelectionModeOnDarkTheme
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewSelectionModeOnDarkTheme.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: CollectionViewSelectionModeOnDarkTheme.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
...
VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot
System.InvalidOperationException :
Snapshot different than baseline: VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot.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: VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this
...
CollectionViewHorizontalItemSpacing
System.InvalidOperationException :
Snapshot different than baseline: CollectionViewHorizontalItemSpacing.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: CollectionViewHorizontalItemSpacing.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
...
VerifyCollectionViewVisualState
System.InvalidOperationException :
Snapshot different than baseline: VerifyCollectionViewVisualState.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: VerifyCollectionViewVisualState.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
...
(+59 more — see TRX in artifact)
❌ ListView — 8 failed tests
GradientAndShadowShouldWork
System.InvalidOperationException :
Snapshot different than baseline: GradientAndShadowShouldWork.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: GradientAndShadowShouldWork.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
...
ToggleAppearanceApiBackgroundColorListView
System.InvalidOperationException :
Snapshot different than baseline: ToggleAppearanceApiBackgroundColorListView.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: ToggleAppearanceApiBackgroundColorListView.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
...
Issue3798Test
System.InvalidOperationException :
Snapshot different than baseline: Issue3798Test.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: Issue3798Test.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 artifa
...
Issue18896Test
System.InvalidOperationException :
Snapshot different than baseline: Issue18896Test.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: Issue18896Test.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 arti
...
Bugzilla36802Test
System.InvalidOperationException :
Snapshot different than baseline: Bugzilla36802Test.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: Bugzilla36802Test.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 buil
...
Bugzilla53834Test
System.InvalidOperationException :
Snapshot different than baseline: Bugzilla53834Test.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: Bugzilla53834Test.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 buil
...
Bugzilla56298Test
System.InvalidOperationException :
Snapshot different than baseline: Bugzilla56298Test.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: Bugzilla56298Test.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 buil
...
Issue2775Test
System.InvalidOperationException :
Snapshot different than baseline: Issue2775Test.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: Issue2775Test.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 artifa
...
❌ Shell — 104 failed tests
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
...
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
...
VerifyShell_TabBarTitleColor
System.InvalidOperationException :
Snapshot different than baseline: VerifyShell_TabBarTitleColor.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_TabBarTitleColor.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 attachmen
...
TabBarVisibilityHidesOnPage2UsingBinding
System.InvalidOperationException :
Snapshot different than baseline: TabBarVisibilityHidesOnPage2UsingBinding.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: TabBarVisibilityHidesOnPage2UsingBinding.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
...
BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.ExtractDifferencePercentage(Exception ex) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 543
at Microsoft.Maui.TestCases.Tests.UITest.VerifyWithTolerance(String name, ImageSnapshot actualImage, String environmentName, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 506
at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 471
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 309
at Microsoft.Maui.TestCases.Tests.ShellNavigationFeatureTests.ShellScreenshot() i
...
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
...
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.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.
...
FlyoutIconShouldRespectForegroundColorAfterNavigation
System.InvalidOperationException :
Snapshot different than baseline: FlyoutIconShouldRespectForegroundColorAfterNavigation.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: FlyoutIconShouldRespectForegroundColorAfterNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug),
...
ShellTabBarBackgroundColor
System.InvalidOperationException :
Snapshot different than baseline: ShellTabBarBackgroundColor.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: ShellTabBarBackgroundColor.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
...
ShellPages_IsVisibleTrue
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_IsVisibleTrue.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_IsVisibleTrue.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 dow
...
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
...
ShouldUpdateSearchHandlerOnPageNavigation
System.InvalidOperationException :
Snapshot different than baseline: ShouldUpdateSearchHandlerOnPageNavigation.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: ShouldUpdateSearchHandlerOnPageNavigation.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
...
VerifySearchHandlerPlaceholderText
System.InvalidOperationException :
Snapshot different than baseline: VerifySearchHandlerPlaceholderText.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: VerifySearchHandlerPlaceholderText.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 te
...
PageShouldNotMoveOutsideViewportWhenEntryFocusedOnPageLoad
System.InvalidOperationException :
Snapshot different than baseline: PageShouldNotMoveOutsideViewportWhenEntryFocusedOnPageLoad.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: PageShouldNotMoveOutsideViewportWhenEntryFocusedOnPageLoad.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't
...
VerifyShellFlyout_FlyoutItemVisibility
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_FlyoutItemVisibility() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 423
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Sy
...
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
...
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
...
FlyoutMenuShouldNotDisappearWhenNavigateUsingServices
System.InvalidOperationException :
Snapshot different than baseline: FlyoutMenuShouldNotDisappearWhenNavigateUsingServices.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: FlyoutMenuShouldNotDisappearWhenNavigateUsingServices.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug),
...
VerifyHamburgerIcon
System.InvalidOperationException :
Snapshot different than baseline: VerifyHamburgerIcon.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: VerifyHamburgerIcon.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
...
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
...
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
...
FlyoutItemTextShouldDisplayProperly
System.InvalidOperationException :
Snapshot different than baseline: FlyoutItemTextShouldDisplayProperly.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: FlyoutItemTextShouldDisplayProperly.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
...
VerifyShellFlyout_DisplayOptionsWithHeaderAndFooter
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_DisplayOptionsWithHeaderAndFooter() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 892
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* a
...
Issue27822Test
System.InvalidOperationException :
Snapshot different than baseline: Issue27822Test.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: Issue27822Test.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 arti
...
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
...
ToolbarItemsShouldWork
System.InvalidOperationException :
Snapshot different than baseline: ToolbarItemsShouldWork.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: ToolbarItemsShouldWork.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
...
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
...
TabBarIconsShouldAutoscaleShell
System.InvalidOperationException :
Snapshot different than baseline: TabBarIconsShouldAutoscaleShell.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: TabBarIconsShouldAutoscaleShell.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
...
TabBarShouldBeVisibleAfterNavigatingFromModalViaGoToAsync
System.InvalidOperationException :
Snapshot different than baseline: TabBarShouldBeVisibleAfterNavigatingFromModalViaGoToAsync.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: TabBarShouldBeVisibleAfterNavigatingFromModalViaGoToAsync.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a
...
SubPageNavigationShouldWorkAfterFirstTabBecomesInvisible
System.InvalidOperationException :
Snapshot different than baseline: SubPageNavigationShouldWorkAfterFirstTabBecomesInvisible.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: SubPageNavigationShouldWorkAfterFirstTabBecomesInvisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a
...
(+74 more — see TRX in artifact)
❌ TableView — 2 failed tests
VerifyContextActionCell
System.InvalidOperationException :
Snapshot different than baseline: VerifyContextActionCell.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: VerifyContextActionCell.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
...
ValidateTableViewTitles
System.InvalidOperationException :
Snapshot different than baseline: ValidateTableViewTitles.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: ValidateTableViewTitles.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
...
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)
📋 Pre-Flight — Context & Validation
Issue: #18318 - [ios] update MemoryAnalyzers package, add to Controls
PR: #36312 - [iOS/MacCatalyst] Controls.Core: Enable MemoryAnalyzers
Platforms Affected: iOS, MacCatalyst
Files Changed: 55 implementation, 2 test
Key Findings
- PR enables
MemoryAnalyzersforControls.Coreand handles roughly 226 analyzer findings with targeted lifecycle fixes and justified suppressions. - The active change set is broad iOS/MacCatalyst NSObject ownership cleanup across Shell, ListView, TableView, CollectionView/CarouselView, toolbar, gesture, modal, and compatibility renderer paths.
- Prior inline review errors about public API breakage, Shell disconnect cleanup, attached renderer disposal, stale callbacks, UIContainer ownership, TableView recognizer cleanup, and ContextActionsCell unsubscription appear addressed in current head.
- Regression coverage is device-test focused under
src/Controls/tests/DeviceTests, especially Shell lifecycle and Memory tests; the supplied gate already passed, so the gate was not re-run. - Candidate testing platform is
ios; focused validation should use the device-test runner againstsrc/Controls/tests/DeviceTests/Controls.DeviceTests.csprojwith filters for the new Shell/Memory regression tests.
Code Review Summary
Verdict: NEEDS_DISCUSSION
Confidence: low
Errors: 0 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ℹ No actionable code findings were found on current head.
- ℹ Required CI could not be fully verified from this unauthenticated environment; public checks were pending/undetermined with one likely infrastructure failure, so confidence is capped low.
- ℹ Blast radius is broad for iOS/MacCatalyst Shell/Flyout/ListView/TableView/CollectionView lifecycle paths, including startup/page initialization paths when those controls are used.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #36312 | Enable MemoryAnalyzers for Controls.Core, fix real iOS/MacCatalyst retain cycles and deterministic teardown gaps, and suppress only intentional ownership patterns. |
✅ PASSED (Gate) | 57 files | Original PR; gate result supplied by caller and not re-run. |
🔬 Code Review — Deep Analysis
Code Review — PR #36312
Independent Assessment
What this changes: Enables MemoryAnalyzers for Controls.Core and adds iOS/MacCatalyst lifecycle/disposal fixes across Shell, ListView, TableView, CollectionView, toolbar, and compatibility renderers.
Inferred motivation: Reduce native/managed retain cycles and make analyzer suppressions match deterministic teardown behavior.
Reconciliation with PR Narrative
Author claims: Fix-first/suppression-second memory-analyzer enablement with targeted tests and no public API break.
Agreement/disagreement: Matches current code. Previously flagged lifecycle/API issues appear addressed in current head.
Prior Review Reconciliation
| Prior ❌ Error Finding | Source | Status | Evidence |
|---|---|---|---|
ShellFlyoutContentRenderer.WillAppear/WillDisappear hidden public API |
MauiBot | ✅ Fixed | Events are public at ShellFlyoutContentRenderer.cs:37,40. |
Shell cleanup only ran from Dispose |
MauiBot | ✅ Fixed | IElementHandler.DisconnectHandler() delegates to shared cleanup at ShellRenderer.cs:569-572. |
| Shell item renderer disposed while attached | MauiBot | ✅ Fixed | DetachRenderer removes view/controller before dispose at ShellRenderer.cs:270-287. |
ContextActionsCell keeps _cell.PropertyChanged |
MauiBot | ✅ Fixed | Unsubscribed in dispose at ContextActionCell.cs:306. |
| TableView source recognizers remain attached | MauiBot | ✅ Fixed | Recognizers removed/disposed at TableViewModelRenderer.cs:214-221. |
| Flyout late lifecycle callbacks after dispose | MauiBot | ✅ Fixed | Disposed guards in lifecycle methods, e.g. ShellFlyoutContentRenderer.cs:365. |
| UIContainerView handler leak | MauiBot | ✅ Fixed | Disconnect() detaches platform view and conditionally disconnects owned handler at UIContainerView.cs:150-163. |
| Shell active-transition teardown risk | MauiBot | ✅ Fixed | Transition cancellation plus regression test DisconnectShellCancelsActiveItemTransitionBeforeDisposal. |
Blast Radius Assessment
- Runs for all instances: Yes, for affected iOS/MacCatalyst compatibility renderers/handlers when used.
- Startup impact: Possible for Shell/Flyout setup paths.
- Static/shared state: No new broad static state; mostly instance lifecycle cleanup.
CI Status
- Required-check result:
gh pr checks --requiredunavailable due missing auth. - Fallback public check-runs: pending/in progress plus one failed
maui-pr (Build .NET MAUI Build Windows (Debug)). - Classification: failure appears infra/transient (
microsoft-jdk-17.0.12-windows-x64.msidownload response ended prematurely); overall CI still undetermined. - Action taken: invoked
azdo-build-investigator;ci-analysisskill unavailable; confidence capped low.
Findings
No actionable code findings found on current head.
External Output Contract
| Consumer token/pattern | Producer location | Producer emission condition | Consumer assumption | Ordinary negative case | Downstream effect |
|---|---|---|---|---|---|
| N/A | N/A | No changed code classifies external tool output via regex/string literal | N/A | N/A | N/A |
Failure-Mode Probing
- Disconnect during Shell item transition: cancellation removes active animations and disposes old/new renderers once.
- Late UIKit callback after dispose: affected flyout/root renderer paths now guard
_isDisposed. - Reparented shared title view: default
UIContainerViewno longer disconnects shared handler; flyout-owned containers opt in.
Verdict: NEEDS_DISCUSSION
Confidence: low
Summary: Code changes look sound and prior error-level findings appear fixed. I cannot return LGTM because required CI is not complete/verified and one current public check is failing with likely infrastructure failure.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix-1 | Replace ShellRenderer's split DisconnectAndDispose / DetachAndDispose helpers with one teardown path backed by explicit disconnected-renderer tracking. |
1 file | iOS/MacCatalyst/device-test builds passed, but iOS simulator deployment timed out. Structurally clearer than the PR but not empirically validated. | |
| 2 | try-fix-2 | Delay _currentShellItemRenderer promotion until after Shell item transition completion, keeping "current" as the committed renderer during animation. |
❌ Fail | 1 file | Regressed CanClearShellContent: delaying old-renderer disconnect temporarily double-registers Shell appearance observers. |
| 3 | try-fix-3 | Infer UIContainerView handler ownership at disconnect time from captured view/handler/platform-view relationships instead of using the PR's explicit ownership flag. |
❌ Fail | 3 files | Missed legitimate flyout header/footer teardown; Disposed Shell Flyout Content Disconnects Header And Footer Handlers failed. |
| 4 | try-fix-4 | Centralize ContextActionsCell teardown through a SetCell(...) path and have Dispose(bool) call SetCell(null, false) while preserving the content cell for late UIKit callbacks. |
❌ Fail | 1 file | Build passed, but iOS MemoryTests timed out after 3600s with XHarness exit code 80 (APP_CRASH) and no test counts. |
| PR | PR #36312 | Current PR fix: explicit lifecycle cleanup, focused weak references, explicit ownership flags, early Shell old-renderer disconnect with outgoing tracking, and targeted suppressions/tests. | ✅ PASSED (Gate) | 57 files | Gate result supplied by caller; not re-run. |
Iterative Learning
| Candidate | Lesson fed into next iteration |
|---|---|
| try-fix-1 | A unified Shell teardown helper can make the invariant clearer, but without device-test completion it cannot be selected over the PR's already-gated fix. |
| try-fix-2 | Delayed promotion is not safe: Shell observer unregistration must happen synchronously at transition start, so the PR's early disconnect is load-bearing. |
| try-fix-3 | Reparentable vs owned UIContainerView teardown cannot be reliably inferred from runtime identity alone; the PR's explicit ownership signal is necessary for flyout header/footer cleanup. |
| try-fix-4 | Centralized ListView context-action cleanup is plausible statically, but the available iOS run ended in an app-crash timeout, so it cannot displace the current focused fix. |
Candidate Details
try-fix-1 — Explicit ShellRenderer disconnect-state tracking
This candidate kept the PR's Shell transition state machine shape but replaced the two teardown helpers with one TeardownRenderer method that consults _disconnectedRenderers. When an old renderer is disconnected at transition start, it is recorded; later teardown removes it from the set and skips a second Disconnect().
Diff: recorded in ../try-fix-1/content.md as an excerpt.
Result: Blocked. Relevant builds succeeded, but the iOS Shell device-test deployment exceeded the environment timeout, so no passing test result was available.
try-fix-2 — Delayed current-renderer promotion
This candidate changed the Shell transition model: _currentShellItemRenderer stayed on the old renderer during animation; the new renderer stayed _incomingRenderer until the transition completed.
Diff: recorded in ../try-fix-2/candidate.diff and summarized in ../try-fix-2/content.md.
Result: Failed. The candidate regressed CanClearShellContent because old appearance observers remained registered until transition completion. The PR's current early-disconnect model is required to maintain the observer-count invariant.
try-fix-3 — Inferred UIContainerView ownership
This candidate removed the PR's explicit ownsHandler constructor signal and attempted to disconnect only when the captured handler/platform view relationship proved ownership at teardown time.
Diff: recorded in ../try-fix-3/content.md.
Result: Failed. The heuristic skipped required flyout header/footer handler teardown and failed Shell lifecycle tests, showing explicit ownership is safer and clearer.
try-fix-4 — Centralized ContextActionsCell teardown
This candidate routed ContextActionsCell disposal through a centralized SetCell(...) helper instead of duplicating _cell.PropertyChanged -= OnCellPropertyChanged in Dispose(bool).
Diff: recorded in ../try-fix-4/fix.diff and summarized in ../try-fix-4/content.md.
Result: Failed. The code built and self-review found no issues, but the iOS MemoryTests run timed out with XHarness APP_CRASH, so it did not produce a successful regression result.
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| claude-opus-4.6 | 1 | Yes | Proposed explicit ShellRenderer disconnected-state tracking. |
| claude-opus-4.7 | 1 | Yes | Proposed delayed current-renderer promotion; test failure proved early disconnect is required. |
| gpt-5.3-codex | 1 | Yes | Proposed inferred UIContainerView ownership; test failure proved explicit ownership flag is required. |
| gpt-5.5 | 1 | Yes | Proposed centralized ContextActionsCell teardown; build passed but iOS app-crash timeout prevented validation. |
| all | Exhaustion | No | Further variants would either reintroduce the failed delayed-promotion/inferred-ownership assumptions or become trivial reshuffles of the PR's current fix. |
Exhausted: Yes
Selected Fix: PR #36312 — It is the only candidate with a completed passing gate. The failed alternatives also support key design choices in the PR: early Shell old-renderer disconnect, explicit UIContainer ownership, and direct deterministic teardown for analyzer-owned subscriptions.
🏁 Report — Final Recommendation
Comparative Analysis — PR #36312
Candidates Compared
| Candidate | Result | Rank | Rationale |
|---|---|---|---|
pr |
Passed supplied gate | 1 | The submitted PR is the only fully validated candidate. It enables MemoryAnalyzers, fixes concrete iOS/MacCatalyst ownership problems, preserves public compatibility surface, and includes targeted device-test coverage. |
pr-plus-reviewer |
Equivalent to pr |
2 | The expert-review pass produced no actionable source changes to apply, so this candidate is functionally identical to pr. It is ranked just below pr because there is no actual improvement over the already-gated PR fix. |
try-fix-1 |
Blocked | 3 | Structurally attractive ShellRenderer teardown centralization, but its device-test run did not complete. Because candidates without completed regression validation must rank below candidates with a passing gate, it cannot beat pr. |
try-fix-2 |
Failed | 4 | Delaying _currentShellItemRenderer promotion regressed CanClearShellContent by allowing old and new Shell appearance observers to coexist during transition. This proves the PR's early old-renderer disconnect is load-bearing. |
try-fix-3 |
Failed | 5 | Inferring UIContainerView handler ownership missed required flyout header/footer handler teardown and failed Shell lifecycle tests. This proves the PR's explicit ownership flag is necessary. |
try-fix-4 |
Failed | 6 | Centralized ContextActionsCell teardown built cleanly and self-reviewed cleanly, but the iOS MemoryTests run timed out with XHarness exit code 80 (APP_CRASH) and produced no passing test counts. It must rank below passing candidates. |
Winning Candidate
Winner: pr
The raw PR fix wins because it is the only candidate with a completed passing gate. The expert-review pass found no actionable change to apply, so pr-plus-reviewer collapses to the same implementation rather than becoming a distinct improvement. The try-fix failures also strengthen confidence in the PR's design: early Shell old-renderer disconnect, explicit UIContainerView ownership, and direct deterministic teardown are not incidental complexity; they preserve tested lifecycle invariants.
Candidate-Specific Notes
try-fix-1 remains a plausible future cleanup idea because explicit disconnected-renderer tracking would make Shell teardown state easier to audit, but it did not complete the iOS simulator validation. It should not displace a passing PR fix.
try-fix-2 should not be revived as-is. Its delayed-promotion model makes _currentShellItemRenderer semantically cleaner, but it delays observer unregistration and regresses existing Shell behavior.
try-fix-3 should not be revived. Runtime inference of handler ownership is too fragile for flyout header/footer lifetimes.
try-fix-4 should not be selected without a clean device-test pass. Its refactor may be reasonable in isolation, but the available run ended in app-crash timeout and therefore fails the required ranking rule.
🧭 Next Steps — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
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!
Important
🤖 AI-generated PR. This PR was drafted with the assistance of an AI agent (GitHub Copilot CLI) and reviewed by a human maintainer (@kubaflo). Please review carefully.
Description of Change
This revives @jonathanpeppers' #18318 and enables the deterministic
MemoryAnalyzersRoslyn analyzer forControls.Coreat error severity.The analyzer is already used by
Microsoft.Maui.Core. It detects unsafe ownership patterns in AppleNSObjectsubclasses:The large legacy compatibility surface needs a fix-first, suppression-second approach. This PR therefore combines specific justified suppressions with targeted lifecycle fixes.
Root Cause and Key Fixes
ShellSectionRenderer's UIKit navigation and gesture delegates strongly referenced their owning renderer, creating a real retain cycle. They now useWeakReference<ShellSectionRenderer>and ignore callbacks after disposal.ShellRenderercleanup now runs through the normalIElementHandler.DisconnectHandler()path as well asDispose(bool), clears the Shell-to-handler reference, prevents in-flight current-item transitions from recreating or retaining renderers after teardown, cancels active native transition animations before disposal, observes late faults from custom transitions after cancellation, and detaches item-renderer views/controllers before disposing them.ShellFlyoutRenderermakes both native and managed disposal paths idempotent, can be disposed safely beforeAttachFlyout, and tears down native views and gesture recognizers beforebase.Dispose(disposing).ShellFlyoutContentRendererpreserves the shipped publicWillAppear/WillDisappearevents, clears subscribers during disposal, ignores late UIKit lifecycle callbacks after disposal, and owns/disposes asynchronous background-image service results when loads are replaced, become stale, or complete after teardown, and detaches its child table-controller view before disposing the controller.ShellSectionRootRendererignores late UIKit layout callbacks after disposal instead of dereferencing its released container view, and now callsbase.Dispose(disposing)so its native controller resources are released deterministically.TableViewModelRendereruses a namedModelChangedhandler and unsubscribes it during disposal.TableViewRendererdisposes replaced and final sources deterministically.TableViewModelRenderertracks the tap and long-press recognizers it owns, then removes and disposes them when a source is replaced.ContextActionsCellremoves managed subscriptions during disposal while retaining its native content cell for late UIKit layout and reuse callbacks.TouchUpInsidehandler is always removed even ifCustomViewis replaced before disposal.NativeViewPropertyListenerimplementsINotifyPropertyChanged.PropertyChangedexplicitly instead of suppressing a public event.There is no breaking public API change.
PublicAPI.Unshipped.txtintentionally records three new protectedDispose(bool)overrides on public compatibility types; these are non-breaking API additions required for deterministic cleanup.Label.~Label()already exists in the merge base and is only reordered. Existing shipped compatibility events remain public.Analyzer Findings
The analyzer surfaces roughly 226 findings across legacy compatibility renderers and modern handlers. Each is handled individually:
Regression Coverage
ShellSectionDelegatesDoNotRetainRendererdirectly roots the native delegates and proves they no longer retainShellSectionRenderer.DisconnectShellDuringCurrentItemChangeDoesNotRecreateRendererforces a current-item continuation to resume after disconnect and proves no renderer is recreated or retained.DisconnectShellDetachesCurrentItemRendererBeforeDisposalproves the current item renderer has neither a parent controller nor a superview when disposal begins.DisconnectShellCancelsActiveItemTransitionBeforeDisposalproves teardown removes live native animations, releases the transition await, and disposes both renderers exactly once.DisconnectShellDisposesAllPendingItemRenderersproves every superseded renderer awaiting a transition is disconnected and disposed exactly once.StaleShellFlyoutBackgroundImageIsDisposedblocks an image load, invalidates its source, resumes it, and proves the stale image-service result is disposed.DisposedShellSectionRootIgnoresLateLayoutdisposes the native root renderer and proves a subsequent UIKit layout callback is harmless.DisposedShellFlyoutContentIgnoresLateLifecycleCallbacksproves UIKit appearance and layout callbacks no longer touch released native state after disposal.DisposedShellFlyoutContentDisconnectsHeaderAndFooterHandlersproves final flyout teardown clears both hosted MAUI handlers and detaches their native views, including the child table-controller view; it fails without the fix and passes on iOS and MacCatalyst.DisconnectingReparentedUIContainerPreservesSharedHandlerproves disposing an old Shell title container does not disconnect the shared handler after UIKit reparents its platform view; it fails without the fix and passes on iOS and MacCatalyst.DisposedShellTableSourceClearsScrolledSubscribersproves final flyout teardown releases every publicScrolledEventsubscriber; it fails without the fix and passes on iOS and MacCatalyst.ShellFlyoutRendererDisposalIsIdempotentAfterNativeTeardownproves native-side teardown prevents later explicit disposal from rerunning managed cleanup.UnattachedShellFlyoutRendererCanBeDisposedproves direct repeatedDispose(true)is safe beforeAttachFlyout; it fails withNullReferenceExceptionwithout the guard.TableViewSourceReplacementUnsubscribesPreviousSourceproves source replacement swaps theModelChangedsubscriber and does not accumulate source-owned recognizers.ContextActionsCellDisposalUnsubscribesCellproves disposed native context-action cells detach managed subscriptions while remaining safe for late UIKit size and reuse callbacks.SecondaryToolbarItemDisposalUnsubscribesAfterCustomViewReplacementproves property updates no longer target a replacement custom view and both managedPropertyChangedand the original nativeTouchUpInsidesubscription are removed during disposal.The broader Shell renderer graph has a separate pre-existing lifetime issue: full-tree collection fails on both the base branch and this PR. This PR intentionally does not claim to fix that unrelated ownership chain.
What NOT to Do
Dispose(bool); normal MAUI teardown usesDisconnectHandler().Verification
Controls.Corebuilds cleanly with zero warnings and zero errors:Empirical device-test results:
Exact UI-test reproductions from the failed CI run:
TitleViewSetOnShellWorksAfterNavigation,ShellItemItemsClearTests,Issue3276Test,GitHub1567Test, and eight ListView/context-action crash repros.Issue3276Test.Focused delegate-retention comparison over 50 iterations:
Android has no direct analyzer or runtime behavior change; its run validates regression safety.
Current-head CI and Merge Recommendation
Fresh current-head builds target merge SHA
7085aeafrom heada6a6559:maui-pr1523478 succeeded.Issue20855.GroupedCollectionViewItemsscreenshot delta (0.54-0.55%) and the wrapper's full-suite retry exceeding the 180-minute job limit.The exact macOS visual signature recurs on unrelated builds 1505713, 1511724, 1511860, 1514713, and 1517676. The latest actual image differs from the unrelated PR #36552 failure image in only 0.2175% of pixels, with a maximum channel delta of 3. No further product change or retry is warranted; clearing the required check needs a separate baseline/test-infrastructure fix or maintainer override.
MauiBot found no actionable issue on the current head, Copilot reviewed all 57 files without current-head comments, and all review threads are resolved. Engineering verdict: ready to merge after human approval.
Issues Fixed
Revives #18318.
Credits
Original author: @jonathanpeppers (#18318). Revived per a suggestion by @AdamEssenmacher.