Skip to content

[iOS] Fix CarouselView CurrentItem not updating with vertical LinearItemsLayout#32699

Draft
Shalini-Ashokan wants to merge 7 commits into
dotnet:mainfrom
Shalini-Ashokan:fix-32136
Draft

[iOS] Fix CarouselView CurrentItem not updating with vertical LinearItemsLayout#32699
Shalini-Ashokan wants to merge 7 commits into
dotnet:mainfrom
Shalini-Ashokan:fix-32136

Conversation

@Shalini-Ashokan

Copy link
Copy Markdown
Contributor

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!

Issue Details

In CarouselView, when using LinearItemsLayout with Orientation="Vertical", the CurrentItem property does not update correctly.

Root Cause

Page calculation always used horizontal scroll offset regardless of scroll orientation.

Description of Change

Modified page calculation to use vertical scroll offset for vertical orientation. Implemented 10% tolerance threshold to accept positions near page boundaries.

Validated the behavior in the following platforms

  • Android
  • Windows
  • iOS
  • Mac

Issues Fixed

Fixes #32136

Output ScreenShot

Before After
32136-BeforeFix.mov
32136-AfterFix.mov

@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label Nov 18, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Hey there @@Shalini-Ashokan! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Nov 18, 2025
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run

@sheiksyedm sheiksyedm marked this pull request as ready for review November 18, 2025 12:21
Copilot AI review requested due to automatic review settings November 18, 2025 12:21
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 3 pipeline(s).

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in CarouselView where the CurrentItem property does not update correctly when using LinearItemsLayout with vertical orientation on iOS. The root cause was that page calculations always used horizontal scroll offset (offset.X) regardless of scroll orientation.

Key Changes:

  • Modified page calculation to use vertical scroll offset (offset.Y) for vertical orientation
  • Implemented a 10% tolerance threshold for vertical scrolling (compared to epsilon for horizontal) to handle iOS-specific scroll settling behavior
  • Added comprehensive UI test coverage for vertical CarouselView scrolling

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs Fixed page calculation to use offset.Y for vertical orientation and added tolerance threshold for vertical scroll position detection
src/Controls/tests/TestCases.HostApp/Issues/Issue32136.cs Added test page with vertical CarouselView demonstrating CurrentItem binding and programmatic scrolling
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32136.cs Added UI test to verify CurrentItem updates correctly when scrolling vertical CarouselView

Comment thread src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs
@PureWeen

Copy link
Copy Markdown
Member

/rebase

@PureWeen PureWeen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed up some test code in the sandbox

The current looping behavior in the sandbox seems to be super broken with CarouselView2

Is that because of this change? or is there a different PR to fix?

like if you scroll the CarouselView past the last item it snaps in a broken way

@Shalini-Ashokan Shalini-Ashokan marked this pull request as draft November 21, 2025 08:32
@rmarinho

rmarinho commented Feb 18, 2026

Copy link
Copy Markdown
Member

🤖 AI Summary

📊 Expand Full Review
🔍 Pre-Flight — Context & Validation
📝 Review Session- push up test code · c8b61a9

Issue: #32136 - CarouselView CurrentItem Not Updating with Vertical LinearItemsLayout
PR: #32699 - [iOS] Fix CarouselView CurrentItem not updating with vertical LinearItemsLayout
Author: Shalini-Ashokan (Syncfusion partner)
Platforms Affected: iOS only (CarouselViewHandler2 - the new iOS CollectionView v2 handler)
Files Changed: 1 fix file, 2 test files, 3 sandbox files (sandbox files should not be committed)

Issue Summary

In CarouselView with CarouselViewHandler2 (the newer iOS implementation), when using LinearItemsLayout with Orientation="Vertical", the CurrentItem property does not update as the user scrolls. The older CarouselViewHandler (Items/) works correctly. Issue is iOS-only.

Root Cause (from PR description)

Page calculation in LayoutFactory2.cs VisibleItemsInvalidationHandler always used horizontal scroll offset (offset.X) regardless of orientation. For vertical orientation, it should use offset.Y.

Fix Files

File Type Description
src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs Fix Core fix: orientation-aware page calculation + 10% threshold for vertical
src/Controls/tests/TestCases.HostApp/Issues/Issue32136.cs Test HostApp page with CarouselView2 (vertical), scroll button
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32136.cs Test NUnit UI test taps ScrollButton, verifies CurrentItemLabel
src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml Sandbox ⚠️ Should not be in PR
src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml.cs Sandbox ⚠️ Should not be in PR
src/Controls/samples/Controls.Sample.Sandbox/MauiProgram.cs Sandbox ⚠️ Should not be in PR

PR Discussion Summary

Reviewer Comment Status
copilot-pull-request-reviewer [nitpick] Improve comment explaining why 10% threshold vs double.Epsilon ✅ Resolved
sheiksyedm Triggered /azp run CI -
PureWeen /rebase command -

Key Concerns

  1. Sandbox files committed - PR includes modifications to Sandbox app (MainPage.xaml, MainPage.xaml.cs, MauiProgram.cs) which are developer testing artifacts and should not be committed to the repo
  2. Test timing - UI test does App.WaitForElement("CurrentItemLabel").GetText() immediately after tap without waiting for scroll animation to complete - could be flaky
  3. 10% threshold - The 0.1 (10%) hardcoded threshold for vertical scroll may be too broad/narrow depending on content size

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #32699 Use offset.Y for vertical orientation; add 10% threshold for vertical scroll settlement ⏳ PENDING (Gate) LayoutFactory2.cs (+13, -2) Original PR

🚦 Gate — Test Verification
📝 Review Session- push up test code · c8b61a9

Result: ✅ PASSED
Platform: ios
Mode: Full Verification

  • Tests FAIL without fix ✅
  • Tests PASS with fix ✅

Details

  • Fix file verified: src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs
  • Test class: Issue32136.CurrentItemShouldUpdateWhenScrollingVerticalCarouselView
  • Test category: CarouselView

Run 1 (WITHOUT fix): Build succeeded, test FAILED as expected (bug present)
Run 2 (WITH fix): Build succeeded, test PASSED (bug fixed)

Full report: CustomAgentLogsTmp/PRState/32699/PRAgent/gate/verify-tests-fail/verification-report.md


🔧 Fix — Analysis & Comparison
📝 Review Session- push up test code · c8b61a9

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #32699 Use offset.Y for vertical orientation; add 10% threshold for vertical scroll settlement ✅ PASS (Gate) LayoutFactory2.cs (+13, -2) Original PR

Exhausted: No — try-fix models were blocked due to AI model rate limits after 1 retry attempt

Selected Fix: PR's fix — It is the only empirically validated solution (Gate confirmed: tests fail without it, pass with it)

Blocked Reason: Task agents returned 429 rate limit errors on both attempts to invoke try-fix with claude-sonnet-4.5.


📋 Report — Final Recommendation
📝 Review Session- push up test code · c8b61a9

⚠️ Final Recommendation: REQUEST CHANGES

Summary

PR #32699 fixes a real bug in CarouselViewHandler2 (iOS) where vertical CarouselView never updated CurrentItem. The core fix in LayoutFactory2.cs is correct and empirically verified (Gate ✅). However, the PR includes Sandbox testing files that must be removed, and there's a pre-existing loop handling bug exposed by enabling vertical support.

Root Cause

In LayoutFactory2.cs's VisibleItemsInvalidationHandler, the page calculation used offset.X (horizontal scroll offset) unconditionally. For vertical CarouselView, offset.X is always 0, so page = 0 / height = 0, and page % 1 == 0 → the handler would fire immediately and set position to 0. This meant vertical scrolling never correctly updated CurrentItem.

Fix Quality

The fix modifies the page calculation to use offset.Y for vertical orientation and adds a 10% tolerance threshold to account for vertical scrolling having no auto-centering paging behavior (unlike horizontal which uses GroupPagingCentered). The approach is sound and minimal.

Issues Found

🔴 Required Changes

1. Sandbox files must be removed from the PR

The PR includes modifications to 3 Sandbox files:

  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml
  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml.cs
  • src/Controls/samples/Controls.Sample.Sandbox/MauiProgram.cs

These are developer testing scaffolding that should not be committed. The Sandbox is a shared resource for testing and these changes would confuse other contributors. The contributor should revert these files to their original state.

2. Loop handling for vertical orientation uses wrong scroll position

In the loop repositioning code (lines ~394-396):

cv2Controller.CollectionView.ScrollToItem(
    NSIndexPath.FromItemSection(pageIndex, 0),
    UICollectionViewScrollPosition.Left,   // ⚠️ Wrong for vertical!
    false);

For vertical orientation, the scroll position should be .Top not .Left. The current loop test (Loop = false) doesn't exercise this path, but vertical Loop = true scenarios will behave incorrectly. This is pre-existing code, but by making vertical CarouselView functional, this PR exposes the issue.

Suggested fix:

cv2Controller.CollectionView.ScrollToItem(
    NSIndexPath.FromItemSection(pageIndex, 0),
    isHorizontal ? UICollectionViewScrollPosition.Left : UICollectionViewScrollPosition.Top,
    false);

🟡 Suggested Improvements

3. Test timing - could be flaky

The UI test taps the scroll button and immediately reads the label text:

App.Tap("ScrollButton");
var currentItemText = App.WaitForElement("CurrentItemLabel").GetText();
Assert.That(currentItemText, Is.EqualTo("CurrentItem = Capuchin Monkey"));

After the tap, the label shows "Button was clicked" (set synchronously), then "CurrentItem = Capuchin Monkey" (set after async scroll animation). The test relies on Appium latency exceeding animation duration. Consider using a text-specific wait or reducing animation:

App.Tap("ScrollButton");
App.WaitForElement(e => e.Marked("CurrentItemLabel").Text("CurrentItem = Capuchin Monkey"));

Gate Verification

Check Result
Tests FAIL without fix ✅ Confirmed
Tests PASS with fix ✅ Confirmed
Platform iOS
Test Issue32136.CurrentItemShouldUpdateWhenScrollingVerticalCarouselView

Try-Fix Phase

⚠️ Skipped — AI model rate limits blocked all task agent invocations after 1 retry. Gate validation confirms PR's fix is correct; try-fix would have searched for alternatives only.

Code Review Notes

File:Line Issue Severity
LayoutFactory2.cs:395 UICollectionViewScrollPosition.Left should be .Top for vertical loop repositioning 🔴 Required
Controls.Sample.Sandbox/MainPage.xaml Sandbox files should not be in PR 🔴 Required
Controls.Sample.Sandbox/MainPage.xaml.cs Sandbox files should not be in PR 🔴 Required
Controls.Sample.Sandbox/MauiProgram.cs Sandbox files should not be in PR 🔴 Required
TestCases.Shared.Tests/Issue32136.cs:21 Test may be timing-sensitive - no wait for expected text 🟡 Suggested

📋 Expand PR Finalization Review
Title: ✅ Good

Current: [iOS] Fix CarouselView CurrentItem not updating with vertical LinearItemsLayout

Description: ⚠️ Needs Update

Description needs updates. See details below.

✨ Suggested PR Description

[!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!

Root Cause

In CarouselViewHandler2 (Items2/iOS/LayoutFactory2.cs), the VisibleItemsInvalidationHandler callback always used offset.X (horizontal scroll offset) to calculate the current page index, regardless of the CarouselView's scroll orientation. For a vertical LinearItemsLayout, the scroll position is tracked via offset.Y, so the page index was always computed incorrectly — causing CurrentItem to never update.

Additionally, horizontal CarouselView uses UICollectionLayoutSectionOrthogonalScrollingBehavior.GroupPagingCentered which auto-snaps to exact page boundaries (allowing a near-zero epsilon threshold). Vertical CarouselView uses .None scrolling behavior — the user's finger release position determines where the scroll settles, which may not land on an exact boundary. A 10% tolerance threshold is used to accept vertical scroll positions near page boundaries.

Description of Change

Modified LayoutFactory2.cs (CreateCarouselLayout) to use orientation-aware page calculation:

  • When isHorizontal is true: uses offset.X (existing behavior, unchanged)
  • When isHorizontal is false: uses offset.Y (new behavior)

Also introduced a per-orientation pageThreshold:

  • Horizontal: double.Epsilon * 100 (essentially exact match, since paging auto-centers)
  • Vertical: 0.1 (10% tolerance, since vertical scroll has no auto-centering)

This fix only affects CarouselViewHandler2 (Items2/iOS/) — the iOS/MacCatalyst handler. The legacy CarouselViewHandler (Items/) is not affected.

Issues Fixed

Fixes #32136

Platforms Tested

  • Android (not affected — Items2 is iOS/MacCatalyst only)
  • Windows (not affected — Items2 is iOS/MacCatalyst only)
  • iOS
  • Mac (MacCatalyst)
Code Review: ⚠️ Issues Found

Code Review — PR #32699

🔴 Critical Issues

1. Sandbox debug/test code must be reverted before merge

Files:

  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml
  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml.cs
  • src/Controls/samples/Controls.Sample.Sandbox/MauiProgram.cs

Problem: These three files contain test/debug code added during development to manually reproduce and validate the issue. They should not be committed to the main branch. Specifically:

  • MainPage.xaml / MainPage.xaml.cs: Replaces the default empty Sandbox page with a vertical CarouselView test harness containing extensive Console.WriteLine debug logging.
  • MauiProgram.cs: Adds a UseHandler2 boolean toggle to force CarouselViewHandler (legacy) vs the default CarouselViewHandler2, with #if IOS || MACCATALYST conditional registration. This is a development-only toggle.

Recommendation: Revert all three Sandbox files to their original state before merging:

git checkout origin/main -- src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml
git checkout origin/main -- src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml.cs
git checkout origin/main -- src/Controls/samples/Controls.Sample.Sandbox/MauiProgram.cs

🟡 Suggestions

2. UI test may be flaky — missing wait after async scroll animation

File: src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32136.cs

Code:

App.WaitForElement("ScrollButton");
App.Tap("ScrollButton");
var currentItemText = App.WaitForElement("CurrentItemLabel").GetText();
Assert.That(currentItemText, Is.EqualTo("CurrentItem = Capuchin Monkey"));

Problem: After App.Tap("ScrollButton"), ScrollTo(..., animate: true) is called in the HostApp. The scroll animation is asynchronous — CurrentItemLabel is only updated in the CurrentItemChanged event, which fires after the scroll completes. App.WaitForElement("CurrentItemLabel") will return immediately (the element already exists) without waiting for its text to change.

Recommendation: Wait for the label text to change rather than just for the element to exist:

App.WaitForElement("ScrollButton");
App.Tap("ScrollButton");
// Wait for label text to update after async scroll completes
App.WaitForElement(e => e.Marked("CurrentItemLabel") && e.HasText("CurrentItem = Capuchin Monkey"));
Assert.That(App.FindElement("CurrentItemLabel").GetText(), Is.EqualTo("CurrentItem = Capuchin Monkey"));

Or use a polling approach with a timeout. Without this, the test may pass immediately with the initial text ("CurrentItem = Baboon") or fail intermittently.

3. Threshold comment could be more precise

File: src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs, line 358–360

Current comment:

// Vertical: Scroll stops wherever touch is released (no auto-centering), so use 0.1 (10%) threshold
//           to accept positions near page boundaries where scroll naturally settles

Note: A Copilot reviewer already suggested a more precise comment (PR review thread, resolved). The suggestion clarifies why horizontal uses epsilon (UIKit GroupPagingCentered auto-snaps) vs why vertical needs 10% (.None scroll behavior, finger-release position). Consider applying that suggestion.


✅ Looks Good

  • Core fix is correct and minimal — The LayoutFactory2.cs change (13 lines) correctly addresses the root cause. Using offset.Y for vertical orientation and a wider tolerance threshold is the right approach.
  • Host app test page (Issue32136.cs) is well-structured, uses CarouselView2 (the Items2 handler), sets Loop = false (appropriate for a deterministic UI test), and exposes the right AutomationId values.
  • Test method name is descriptive: CurrentItemShouldUpdateWhenScrollingVerticalCarouselView.
  • Issue link in [Issue] attribute correctly references [CarouselViewHandler2] CurrentItem Not Updating with Vertical LinearItemsLayout #32136.
  • [Category(UITestCategories.CarouselView)] is appropriate.
  • PlatformAffected.iOS in the [Issue] attribute correctly limits scope.

@rmarinho rmarinho added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-fix-lose Author adopted the agent's fix and it turned out to be bad s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Feb 18, 2026
@kubaflo kubaflo added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-fix-lose Author adopted the agent's fix and it turned out to be bad labels Feb 20, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review March 24, 2026 06:54

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please review the AI's summary?

@dotnet dotnet deleted a comment from MauiBot May 3, 2026
@dotnet dotnet deleted a comment from MauiBot May 3, 2026

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please resolve conflicts?

@Shalini-Ashokan Shalini-Ashokan marked this pull request as draft May 5, 2026 10:14
@justintemplar

Copy link
Copy Markdown

Would love this to be included soon. This is a current out standing bug for me.

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please resolve conflicts?

@kubaflo

kubaflo commented May 24, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/refactor-copilot-yml

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 32699

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 32699"

@kubaflo

kubaflo commented May 29, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/refactor-copilot-yml -p ios

MauiBot

This comment was marked as outdated.

@MauiBot MauiBot added s/agent-fix-win AI found a better alternative fix than the PR and removed s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates labels May 29, 2026
@MauiBot

This comment has been minimized.

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you try ai's suggestions?

@kubaflo

kubaflo commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer -p ios

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 3 findings

See inline comments for details.

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Maui.Controls.Sample.MainPage"
xmlns:local="clr-namespace:Maui.Controls.Sample">
<Grid Padding="20" RowSpacing="10">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[major] Regression Prevention -- This commits a full CarouselView debugging page into the shared Sandbox app. The sandbox is intended to stay as temporary local repro space; merging this replaces the clean sandbox startup with issue-specific UI and the paired code-behind/MauiProgram debug scaffolding. Please revert the Controls.Sample.Sandbox changes and keep the regression coverage in TestCases.HostApp/TestCases.Shared.Tests.

if (Math.Abs(page % 1) > (double.Epsilon * 100) || cv2Controller.ItemsSource.ItemCount <= 0)
// Vertical: Scroll stops wherever touch is released (no auto-centering), so use 0.1 (10%) threshold
// to accept positions near page boundaries where scroll naturally settles
double pageThreshold = isHorizontal ? (double.Epsilon * 100) : 0.1;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[major] CollectionView iOS/MacCatalyst -- VisibleItemsInvalidationHandler runs continuously while scrolling, not only after the scroll settles. With a 10% vertical threshold this can update Position/CurrentItem while the offset is still just past a page boundary; for Loop=true the same callback can enter the fake-item correction path and issue a non-animated ScrollToItem, interrupting the in-flight scroll. Please keep page acceptance tied to a settled/snap-complete state, or make vertical snapping produce exact page boundaries, rather than accepting the first 10% of every page.

{
App.WaitForElement("ScrollButton");
App.Tap("ScrollButton");
var currentItemText = App.WaitForElement("CurrentItemLabel").GetText();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[moderate] Regression Prevention and Test Coverage -- WaitForElement("CurrentItemLabel") only waits for the label to exist; it is already present before the tap, while the button starts an animated ScrollTo(..., animate: true). On slower CI this can read the initial/intermediate label before CurrentItemChanged fires. Please wait or poll for the expected text before asserting so the regression test is deterministic.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Review Summary

@Shalini-Ashokan — new AI review results are available based on this last commit: db00dae.
Merge remote-tracking branch 'upstream/main' into fix-32136 To request a fresh review after new comments or commits, comment /review rerun.

Gate Passed Code Review In Review Confidence High Platform iOS

Review Sessions — click to expand
Gate — Test Before & After Fix

Gate Result: ✅ PASSED

Platform: IOS · Base: main · Merge base: e904e900

Test Without Fix (expect FAIL) With Fix (expect PASS)
🖥️ Issue32136 Issue32136 ✅ FAIL — 261s ✅ PASS — 103s
🔴 Without fix — 🖥️ Issue32136: FAIL ✅ · 261s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 535 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 539 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 5.54 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 5.6 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj (in 5.61 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/maps/src/Maps.csproj (in 5.61 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 5.61 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Foldable/src/Controls.Foldable.csproj (in 5.62 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 5.62 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 5.61 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 5.62 sec).
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
  Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
  Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
  Detected signing identity:
    Code Signing Key: "" (-)
    Provisioning Profile: "" () - no entitlements
    Bundle Id: com.microsoft.maui.uitests
    App Id: com.microsoft.maui.uitests
  Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Optimizing assemblies for size. This process might take a while.

Build succeeded.

/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
    1 Warning(s)
    0 Error(s)

Time Elapsed 00:02:24.10
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils/VisualTestUtils.csproj (in 699 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Core/UITest.Core.csproj (in 699 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 699 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/CustomAttributes/Controls.CustomAttributes.csproj (in 699 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 700 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 33 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 787 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 814 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.NUnit/UITest.NUnit.csproj (in 1.52 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Appium/UITest.Appium.csproj (in 1.89 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Analyzers/UITest.Analyzers.csproj (in 2.4 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils.MagickNet/VisualTestUtils.MagickNet.csproj (in 2.21 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.iOS.Tests/Controls.TestCases.iOS.Tests.csproj (in 2.97 sec).
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
  Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
  UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
  VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
  UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
  VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
  UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
  UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
  Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.06]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.17]   Discovered:  Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/6/2026 3:13:42 PM FixtureSetup for Issue32136(iOS)
>>>>> 6/6/2026 3:13:46 PM CurrentItemShouldUpdateWhenScrollingVerticalCarouselView Start
>>>>> 6/6/2026 3:13:47 PM CurrentItemShouldUpdateWhenScrollingVerticalCarouselView Stop
>>>>> 6/6/2026 3:13:47 PM Log types: syslog, crashlog, performance, safariConsole, safariNetwork, server
  Failed CurrentItemShouldUpdateWhenScrollingVerticalCarouselView [1 s]
  Error Message:
     Assert.That(currentItemText, Is.EqualTo("CurrentItem = Capuchin Monkey"))
  Expected string length 29 but was 18. Strings differ at index 0.
  Expected: "CurrentItem = Capuchin Monkey"
  But was:  "Button was clicked"
  -----------^

  Stack Trace:
     at Microsoft.Maui.TestCases.Tests.Issues.Issue32136.CurrentItemShouldUpdateWhenScrollingVerticalCarouselView() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32136.cs:line 22

1)    at Microsoft.Maui.TestCases.Tests.Issues.Issue32136.CurrentItemShouldUpdateWhenScrollingVerticalCarouselView() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32136.cs:line 22


NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32136.trx

Test Run Failed.
Total tests: 1
     Failed: 1
 Total time: 1.2350 Minutes
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32136.trx

🟢 With fix — 🖥️ Issue32136: PASS ✅ · 103s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 2.57 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 2.59 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 2.6 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 2.65 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 2.66 sec).
  6 of 11 projects are up-to-date for restore.
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
  Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
  Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
  Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
  Detected signing identity:
    Code Signing Key: "" (-)
    Provisioning Profile: "" () - no entitlements
    Bundle Id: com.microsoft.maui.uitests
    App Id: com.microsoft.maui.uitests
  Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Optimizing assemblies for size. This process might take a while.

Build succeeded.

/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
    1 Warning(s)
    0 Error(s)

Time Elapsed 00:00:51.35
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 332 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 363 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 381 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 398 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 416 ms).
  8 of 13 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14304701
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
  VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
  UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
  VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
  UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
  UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
  UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
  Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.04]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.16]   Discovered:  Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/6/2026 3:15:26 PM FixtureSetup for Issue32136(iOS)
>>>>> 6/6/2026 3:15:30 PM CurrentItemShouldUpdateWhenScrollingVerticalCarouselView Start
>>>>> 6/6/2026 3:15:31 PM CurrentItemShouldUpdateWhenScrollingVerticalCarouselView Stop
  Passed CurrentItemShouldUpdateWhenScrollingVerticalCarouselView [828 ms]
NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32136.trx

Test Run Successful.
Total tests: 1
     Passed: 1
 Total time: 21.0722 Seconds
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32136.trx

📁 Fix files reverted (5 files)
  • eng/pipelines/ci-copilot.yml
  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml
  • src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml.cs
  • src/Controls/samples/Controls.Sample.Sandbox/MauiProgram.cs
  • src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs

UI Tests — CarouselView,CollectionView

Detected UI test categories: CarouselView,CollectionView

Deep UI tests — 407 passed, 103 failed across 2 categories on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
CarouselView 76/95 (17 ❌) 17 diff PNGs
CollectionView 331/420 (86 ❌) 84 diff PNGs
CarouselView — 17 failed tests
ValidateNoScrollOnInvalidItemWithLoop
System.InvalidOperationException : 
Snapshot different than baseline: ValidateNoScrollOnInvalidItemWithLoop.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: ValidateNoScrollOnInvalidItemWithLoop.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.

...
ResizeCarouselViewKeepsIndex
System.InvalidOperationException : 
Snapshot different than baseline: ResizeCarouselViewKeepsIndex.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: ResizeCarouselViewKeepsIndex.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
...
CarouselViewItemsShouldRenderVertically
System.InvalidOperationException : 
Snapshot different than baseline: CarouselViewItemsShouldRenderVertically.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: CarouselViewItemsShouldRenderVertically.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 ima
...
Issue32394CurrentItemShouldnotChange
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.Issue32394.Issue32394CurrentItemShouldnotChange() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32394.cs:line 25
   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.Reflection.Runtime
...
AddItemsToCarouselViewWorks
System.InvalidOperationException : 
Snapshot different than baseline: AddItemsToCarouselViewWorks.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: AddItemsToCarouselViewWorks.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 
...
HorizontalScrollBarShouldHideOnNever
System.InvalidOperationException : 
Snapshot different than baseline: HorizontalScrollBarShouldHideOnNever.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: HorizontalScrollBarShouldHideOnNever.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
Se
...
CarouselViewItemShouldScaleProperly
System.InvalidOperationException : 
Snapshot different than baseline: CarouselViewItemShouldScaleProperly.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: CarouselViewItemShouldScaleProperly.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 te
...
VerifySpacingAffectsItemSize
System.InvalidOperationException : 
Snapshot different than baseline: VerifySpacingAffectsItemSize.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: VerifySpacingAffectsItemSize.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
...
TestDynamicItemTemplateChangeInCarouselView
System.InvalidOperationException : 
Snapshot different than baseline: TestDynamicItemTemplateChangeInCarouselView.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: TestDynamicItemTemplateChangeInCarouselView.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the base
...
VerifyCarouselViewItemsSourceClearedDynamically
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCarouselViewItemsSourceClearedDynamically.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: VerifyCarouselViewItemsSourceClearedDynamically.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 
...
CarouselViewShouldScrollToRightPosition
System.InvalidOperationException : 
Snapshot different than baseline: CarouselViewShouldScrollToRightPosition.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: CarouselViewShouldScrollToRightPosition.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 ima
...
CarouselViewShouldRenderCorrectly
System.InvalidOperationException : 
Snapshot different than baseline: CarouselViewShouldRenderCorrectly.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: CarouselViewShouldRenderCorrectly.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
...
VerticalCarouselMandatorySingleSnapAdvancesOneCard
System.InvalidOperationException : 
Snapshot different than baseline: VerticalCarouselMandatorySingleSnapAdvancesOneCard.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: VerticalCarouselMandatorySingleSnapAdvancesOneCard.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then u
...
VerifyCarouselLayoutOrientationChange
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCarouselLayoutOrientationChange.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: VerifyCarouselLayoutOrientationChange.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.

...
CarouselItemLoadsInCorrectPosition
System.InvalidOperationException : 
Snapshot different than baseline: CarouselItemLoadsInCorrectPosition.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: CarouselItemLoadsInCorrectPosition.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
...
CarouselItemsShouldRenderProperly
System.InvalidOperationException : 
Snapshot different than baseline: CarouselItemsShouldRenderProperly.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: CarouselItemsShouldRenderProperly.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
...
Issue29772ItemSpaceShouldApply
System.InvalidOperationException : 
Snapshot different than baseline: Issue29772ItemSpaceShouldApply.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: Issue29772ItemSpaceShouldApply.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
...
CollectionView — 86 failed tests
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
...
VerifyScrollToByItemWithEndPositionAndVerticalList_Carrot
System.InvalidOperationException : 
Snapshot different than baseline: VerifyScrollToByItemWithEndPositionAndVerticalList_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: VerifyScrollToByItemWithEndPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a 
...
VerifyModelItemsObservableCollectionWhenSingleModePreSelection
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.VerifyModelItemsObservableCollectionWhenSingleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 652
   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
...
RightToLeftFlowDirectionShouldWork
System.InvalidOperationException : 
Snapshot different than baseline: RightToLeftFlowDirectionShouldWork.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: RightToLeftFlowDirectionShouldWork.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
...
CollectionViewItemsShouldRespectSafeAreaEdges
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewItemsShouldRespectSafeAreaEdges.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: CollectionViewItemsShouldRespectSafeAreaEdges.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 ba
...
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 
...
EmptyViewShouldRemeasureWhenParentLayoutChanges
System.InvalidOperationException : 
Snapshot different than baseline: EmptyViewShouldRemeasureWhenParentLayoutChanges.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: EmptyViewShouldRemeasureWhenParentLayoutChanges.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 
...
BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount
System.InvalidOperationException : 
Snapshot different than baseline: BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount.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: BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baselin
...
RefreshShouldNotChangeSize
System.InvalidOperationException : 
Snapshot different than baseline: RefreshShouldNotChangeSize.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: RefreshShouldNotChangeSize.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
...
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 
...
VerifyCustomSizedEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCustomSizedEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection.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: VerifyCustomSizedEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If t
...
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
...
CollectionViewDuplicateViewsWhenAddItemToGroup
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewDuplicateViewsWhenAddItemToGroup.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: CollectionViewDuplicateViewsWhenAddItemToGroup.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
...
VerifyMeasureAllItemsWithObservableCollection
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_ScrollingFeatureTests.VerifyMeasureAllItemsWithObservableCollection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ScrollingFeatureTests.cs:line 53
   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_Met
...
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 
...
CollectionViewHeaderBlankWhenLastItemRemoved
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewHeaderBlankWhenLastItemRemoved.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: CollectionViewHeaderBlankWhenLastItemRemoved.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 ba
...
VerifyStringItemsObservableCollectionWhenSingleModePreSelection
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.VerifyStringItemsObservableCollectionWhenSingleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 610
   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.MethodBaseInvoke
...
VerifyModelItemsGroupedListWhenSingleModePreSelection
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.VerifyModelItemsGroupedListWhenSingleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 748
   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.Interpre
...
GroupedCollectionViewItems
System.InvalidOperationException : 
Snapshot different than baseline: GroupedCollectionViewItems.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: GroupedCollectionViewItems.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
...
Issue18751Test
System.InvalidOperationException : 
Snapshot different than baseline: Issue18751Test.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: Issue18751Test.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
...
VerifyEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection
System.InvalidOperationException : 
Snapshot different than baseline: VerifyEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection.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: VerifyEmptyViewTemplateDisplaysCorrectly_WithLeftToRightFlowDirection.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
...
FooterShouldDisplayAtBottomOfEmptyView
System.InvalidOperationException : 
Snapshot different than baseline: FooterShouldDisplayAtBottomOfEmptyView.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: FooterShouldDisplayAtBottomOfEmptyView.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
...
AccessibilityTraitsSetCorrectly
System.InvalidOperationException : 
Snapshot different than baseline: AccessibilityTraitsSetCorrectlyNone.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: AccessibilityTraitsSetCorrectlyNone.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 
...
CollectionViewSingleItemAlignmentWithFooter
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewSingleItemAlignmentWithFooter.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: CollectionViewSingleItemAlignmentWithFooter.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the base
...
VerifyDefaultScrollToRequested
System.InvalidOperationException : 
Snapshot different than baseline: VerifyDefaultScrollToRequested.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: VerifyDefaultScrollToRequested.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
...
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 
...
HeaderShouldBeRemovedWhenSetToNull
System.InvalidOperationException : 
Snapshot different than baseline: HeaderShouldBeRemovedWhenSetToNull.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: HeaderShouldBeRemovedWhenSetToNull.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
...
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
...
VerticalGridCollectionViewLTRToRTLToggleShouldWork
System.InvalidOperationException : 
Snapshot different than baseline: VerticalGridCollectionViewLTRToRTLToggleShouldWork.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: VerticalGridCollectionViewLTRToRTLToggleShouldWork.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then u
...

(+56 more — see TRX in artifact)

📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)


Pre-Flight — Context & Validation

Issue: #32136 - CarouselView CurrentItem Not Updating with Vertical LinearItemsLayout
PR: #32699 - Fix CarouselView CurrentItem updates for vertical LinearItemsLayout on iOS
Platforms Affected: iOS (Items2 handler; MacCatalyst shares the same Items2/iOS implementation)
Files Changed: 4 implementation/sample, 2 test

Key Findings

  • The PR changes src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs, which is the active iOS/MacCatalyst CarouselView handler path.
  • Root cause appears to be page calculation in VisibleItemsInvalidationHandler: vertical scrolling used a width-based page denominator, so vertical offsets did not resolve to the expected page index.
  • The PR also includes sandbox debugging/scaffolding changes in src/Controls/samples/Controls.Sample.Sandbox/*; these are not part of the product fix.
  • Added coverage is a UI test for Issue32136 under the CarouselView category.
  • Gate result provided by caller: ✅ PASSED — tests fail without fix and pass with PR fix.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: high
Errors: 1 | Warnings: 2 | Suggestions: 1

Key code review findings:

  • ❌ Sandbox test scaffolding committed in src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml, MainPage.xaml.cs, and MauiProgram.cs; these development-only changes should not merge.
  • ⚠️ LayoutFactory2.cs vertical pageThreshold = 0.1 can fire loop correction while scrolling is still mid-animation, risking Loop=true snapping regressions.
  • ⚠️ Issue32136 UI test reads CurrentItemLabel immediately after tapping; WaitForElement only waits for existence, so it may be timing-sensitive with animate: true.
  • 💡 PR is draft/under active review; merge conflicts and reviewer concerns were indicated by the code-review sub-agent where available.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #32699 Use active-axis page size in LayoutFactory2 and widen vertical page-boundary threshold; align loop correction scroll position to vertical axis. ✅ PASSED (Gate) LayoutFactory2.cs, UI tests, sandbox files Original PR fix; gate already completed externally.

Code Review — Deep Analysis

Code Review — PR #32699

Independent Assessment

What this changes: Fixes a page-calculation bug in LayoutFactory2.cs that prevented CurrentItem from updating in vertical CarouselView. The denominator of the page formula always used ContentSize.Width regardless of scroll orientation; the fix uses ContentSize.Height when isHorizontal=false. A 10% threshold replaces the near-zero epsilon threshold for vertical carousels because they use OrthogonalScrollingBehavior.None (no UIKit auto-centering). Two UI test files are added. The Sandbox MainPage.xaml/cs and MauiProgram.cs are modified with development/debug content.

Inferred motivation: With LinearItemsLayout(Vertical), users reported CurrentItem never updating. The page formula offset.Y / ContentSize.Width can never yield an integer (Y-offset / Width dimension ratio), so the VisibleItemsInvalidationHandler always early-returned before calling SetPosition.

Reconciliation with PR Narrative

Author claims: Fixed by using vertical offset for vertical orientation; validated on iOS, Android, Windows, and Mac.

Agreement/disagreement:

  • ✅ Root cause analysis is correct — wrong dimension in denominator is definitively the bug.
  • ✅ The formula change (effectivePageSize = axis-appropriate dimension) is the right fix.
  • ⚠️ The claim of validated Loop=true behavior is disputed by maintainer PureWeen, who reported "looping is super broken" after testing the sandbox code from this PR.
  • ❌ Sandbox files containing development scaffolding are included in the diff and must not be merged.

Findings

❌ Error — Sandbox test scaffolding committed

src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml, MainPage.xaml.cs, and MauiProgram.cs contain debug/development content: verbose Console.WriteLine spam, a UseHandler2 = true toggle flag, and a full CarouselView test page that overwrites the clean sandbox template. Per MAUI conventions, sandbox changes are temporary test scaffolding and must not be merged into main. These three files should be reverted to their state on main.

⚠️ Warning — 10% threshold breaks Loop=true behavior

LayoutFactory2.cs line 380: double pageThreshold = isHorizontal ? (double.Epsilon * 100) : 0.1;

Because VisibleItemsInvalidationHandler fires continuously during scroll (not just when settled), a 10% threshold causes it to fire at partial page values mid-animation. When Loop=true, this triggers premature loop-correction ScrollToItem calls (the pageIndex == 0 or pageIndex == maxIndex branches, ~line 394–428) while an animation is in progress — causing the "super broken" snapping behavior PureWeen identified. The cv2Controller.IsUpdating() guard does not protect against this case (it guards ItemsSource updates, not ongoing scroll animations).

The epsilon threshold worked for horizontal carousels because GroupPagingCentered auto-snaps to exact page boundaries, so the handler never fires at mid-page values. Safer alternatives:

  • Add MandatorySingle snapping for vertical carousels (makes UIKit handle the snap; the handler sees exact boundaries, epsilon works again), or
  • Guard the loop-correction branch with a scroll-velocity/settled check rather than widening the threshold globally.

⚠️ Warning — UI test may be timing-sensitive with animate: true

TestCases.Shared.Tests/Tests/Issues/Issue32136.cs line 21:

App.Tap("ScrollButton");
var currentItemText = App.WaitForElement("CurrentItemLabel").GetText();

The ScrollButton handler calls ScrollTo(..., animate: true). WaitForElement("CurrentItemLabel") waits for the element's existence (it already exists) not for the label text to change. On a slow device or CI machine, this may read the intermediate text "Button was clicked" before CurrentItemChanged fires. Should wait for the expected value explicitly:

App.WaitForElement(x => x.Marked("CurrentItemLabel").Text("CurrentItem = Capuchin Monkey"));

💡 Suggestion — PR is in Draft with active CHANGES_REQUESTED

Currently in Draft state with CHANGES_REQUESTED from PureWeen (loop behavior) and kubaflo (AI summary, merge conflicts). Merge conflicts should be resolved before requesting re-review.

Devil's Advocate

On the 10% threshold: Could the loop-correction naturally absorb spurious firings? No — when page = 0.05 fires during a scroll-to-index-2 animation, pageIndex = 0 triggers a non-animated ScrollToItem(maxIndex-1, .Top), interrupting the ongoing animation. Not self-healing.

On the formula: Math checks out for the basic case: 400pt container, ItemSpacing=0, PeekAreaInsets=zeroeffectivePageSize=400 → after scrolling to index 1, offset.Y ≈ 400, page=1.0, page % 1 = 0. ✅ Integer. The formula is structurally correct.

On the test: Appium's WaitForElement does poll with retries under the hood; in practice the test may pass reliably if the animation completes within the default wait. Risk is flakiness on slow CI, not systematic failure.

Verdict: NEEDS_CHANGES

Confidence: high
Summary: The core dimension fix (effectivePageSize using axis-appropriate container dimension) correctly identifies and resolves the root cause. However, two concrete blocking issues remain: (1) sandbox development files must be reverted before merge, and (2) the 10% threshold regresses Loop=true scroll behavior in a way the maintainer has already observed and flagged. The test is also mildly fragile around animated scroll timing. These should be addressed before the PR leaves draft status.


Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix Route vertical CarouselView through snap-aware CustomUICollectionViewCompositionalLayout with implicit MandatorySingle/Start, while using active-axis page size and retaining the strict threshold. ✅ PASS 2 files Better than PR fix because it avoids a broad 0.1 vertical threshold that can trigger Loop correction mid-scroll.
PR PR #32699 Use active-axis page size and offset; widen vertical page-boundary threshold to 0.1; align loop correction anchor to vertical axis. ✅ PASSED (Gate) 6 files Original PR; gate was already completed externally. Includes sandbox scaffolding and threshold regression risk.

Cross-Pollination

Model Round New Ideas? Details
claude-opus-4.6 1 Yes Candidate 1: snap-aware vertical layout with implicit MandatorySingle/Start instead of broad threshold.
remaining models N/A Not queried Stopped per caller's stop rule because Candidate 1 passed all tests and is demonstrably better than the PR's fix.

Exhausted: No — stopped after a passing candidate that is better than the PR fix.
Selected Fix: Candidate #1 — It passes the iOS UI regression test and addresses the code-review concern by making vertical scrolling settle on page boundaries instead of accepting partial-page offsets with a broad threshold. It also leaves the PR's sandbox scaffolding out of the candidate.


Report — Final Recommendation

Comparative Report — PR #32699

Platform: iOS
Gate: ✅ Passed — tests fail without fix and pass with the PR fix. Gate verification was not rerun.

Candidates Compared

Rank Candidate Regression result Assessment
1 pr-plus-reviewer No failing regression evidence; implementation/test corrections match passing try-fix-1 core changes Best candidate. Retains the correct active-axis page calculation, removes Sandbox scaffolding, replaces the risky 0.1 vertical threshold with snap-to-page behavior, and makes the UI test deterministic.
2 try-fix-1 ✅ Passed iOS UI regression (Issue32136) Strong technical fix. It avoids the Loop=true threshold risk and fixes test timing, but as an independent try-fix it is less directly tied to the PR than the reviewed PR-plus candidate.
3 pr ✅ Passed gate Fixes the reported CurrentItem update bug, but expert review found blocking issues: committed Sandbox scaffolding, a broad vertical threshold that can disrupt Loop=true scrolling, and a timing-sensitive UI test.

Analysis

The raw PR correctly identifies the root cause: vertical CarouselView page detection in the iOS Items2 handler used a width-based denominator even when consuming vertical offsets. The active-axis page-size calculation is therefore the essential part of the fix and should be retained.

The PR's main weakness is how it compensates for vertical scrolling not landing exactly on page boundaries. A vertical pageThreshold = 0.1 makes the invalidation handler tolerate partial offsets, but that handler is called continuously during scroll. This creates a plausible and reviewer-confirmed regression risk for Loop=true, where fake-item correction can run before the scroll settles and jump the collection view mid-animation.

try-fix-1 addresses that risk more directly: rather than accepting partial page offsets, it makes vertical CarouselView use the existing custom compositional layout snapping pipeline so offsets settle on exact page boundaries. This preserves the strict threshold, uses the active-axis page size, and passed the iOS Issue32136 regression test.

pr-plus-reviewer combines the strengths of both: it starts from the PR, applies the expert reviewer's actionable corrections, and converges on the same snap-aware implementation/test robustness proven by try-fix-1, while also keeping the PR's HostApp regression page and removing unrelated Sandbox changes.

Winner

Winner: pr-plus-reviewer

pr-plus-reviewer is the best candidate because it keeps the PR's correct root-cause fix and regression coverage while addressing every expert reviewer finding. It ranks above try-fix-1 because it is the reviewed PR path with feedback applied; it ranks above the raw PR because it removes the Loop=true threshold risk, the Sandbox scaffolding, and the test flakiness.


Future Action — review latest findings

No alternative fix was selected for this run. Review the session findings and CI results before merging.

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please check the ai's suggestions, and check the failing tests?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration s/agent-fix-win AI found a better alternative fix than the PR s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CarouselViewHandler2] CurrentItem Not Updating with Vertical LinearItemsLayout

9 participants