Skip to content

Conversation

@rmarinho
Copy link
Member

Description of Change

Bring latest changes from main to net10.0

dotnet-maestro bot and others added 30 commits November 24, 2025 05:02
…51120.1

On relative base path root
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 10.0.0-prerelease.25506.2 -> To Version 10.0.0-prerelease.25570.1
* Added size update for Shell Popup Overlay after rotation

# Conflicts:
#	src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
#	src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt

* Fix resizing on rotation

* - fix publicapi

# Conflicts:
#	src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
#	src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt

* - apply copilot suggested change

* - Add Tests

* - fix test

* - make backdrop orange

---------

Co-authored-by: Shane Neuville <[email protected]>
Deleted the OnDestroy method and its dispatcher-based disposal logic from ShellFragmentContainer. Cleanup is unnecessary in this context and causes Android.Runtime.JavaProxyThrowable exception
* Fix RTL column mirroring in UICollectionView

Explicitly sets the semantic content attribute on the native UICollectionView to ensure compositional layouts mirror columns correctly in right-to-left (RTL) scenarios. This addresses an issue where the platform view's semantic attribute does not propagate to native children not backed by IView.

* - add UITests

* Improvements

---------

Co-authored-by: Shane Neuville <[email protected]>
Since TimePicker now supports nullable, the casts need to be nullable to match the TimeChangedEventArgs properties. Otherwise, `timeSpan.Time = null` throws a NullReferenceException.
… Back to a ContentPage with NavigationBar Hidden (#32622)

* [iOS] Fix for Shell Navigation Bar Remaining Visible After Navigating Back to a ContentPage with NavigationBar Hidden

* Added test cases and snapshots for both iOS and Android platforms

* Added snapshot for windows platform
…m change with PresentationMode set to Modal (#32582)

* Fix for Page OnAppearing triggered twice when navigating via ShellItem change with PresentationMode set to Modal

* - generate tests with copilot

* Removed the UI test since unit tests have been added, and also removed duplicate tests in the unit tests

---------

Co-authored-by: Shane Neuville <[email protected]>
#32868)

This PR addresses the UI test image failures that occurred in the
inflight/candidate branch #32841 and
includes updates to improve rendering and test stability across
platforms.

- In ShouldFlyoutTextWrapsInLandscape test case, added the resaved CI
snapshot caused by changes from fix PR -
#15866
- In FlyoutOverlayResizesOnRotation test cases, disable for android
platform, because the Shell FlyoutContent overlaps the navigation bar
due to SafeArea during Landscape Orientation, Related issue:
#32275

**Test cases:**
- ShouldFlyoutTextWrapsInLandscape
- NavigationBarShouldRemainHiddenAfterNavigatingBack
- FlyoutOverlayResizesOnRotation
- VerticalGridCollectionViewLTRToRTLToggleShouldWork
- VerticalGridCollectionViewRTLColumnMirroringShouldWork
…51125.2

On relative base path root
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 10.0.0-prerelease.25506.2 -> To Version 10.0.0-prerelease.25575.2
…ces (#32956)

Fixes #27281

The issue was that SolidColorBrush.Equals used '==' to compare Color objects, which compares references instead of values. This caused infinite loops when using DynamicResource with OnPlatform<Color> because OnPlatform creates new Color instances each time, and the equality check would always return false even for identical color values.

Changed to use Equals() which properly compares Color values via Color.Equals().
This pull request updates the following dependencies

[marker]: <> (Begin:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)
## From https://github.com/dotnet/xharness
- **Subscription**:
[a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95](https://maestro.dot.net/subscriptions?search=a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)
- **Build**:
[20251125.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=2847614)
([292346](https://maestro.dot.net/channel/8394/github:dotnet:xharness/build/292346))
- **Date Produced**: November 25, 2025 9:55:44 PM UTC
- **Commit**:
[bdf0f92540d68762bb028b8cb859146048f3c356](dotnet/xharness@bdf0f92)
- **Branch**:
[release/10.0](https://github.com/dotnet/xharness/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-prerelease.25506.2 to 10.0.0-prerelease.25575.2][2]
     - Microsoft.DotNet.XHarness.CLI
     - Microsoft.DotNet.XHarness.TestRunners.Common
     - Microsoft.DotNet.XHarness.TestRunners.Xunit

[2]: dotnet/xharness@5b57221...bdf0f92

[DependencyUpdate]: <> (End)


[marker]: <> (End:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)
The TS compiler automatically includes the JS files as content, but we want it as embedded files.

Fixes #32683

Update src/TestUtils/src/Microsoft.Maui.IntegrationTests/WindowsTemplateTest.cs

Co-authored-by: Copilot <[email protected]>
…nt crash (#31866)

Add null check in ControlsModalWrapper.ViewDidLayoutSubviews to prevent crash

Co-authored-by: jfversluis <[email protected]>

Add explanatory comment for defensive null check in ViewDidLayoutSubviews

Co-authored-by: jsuarezruiz <[email protected]>
Fixes unsigned underflow in AsBaseStyle() causing VSM setters from base
styles to be incorrectly converted to ImplicitVSM (lower priority).

Changes:
- Check if style <= StyleBasedOn before subtracting to prevent underflow
- Clamp result to StyleBasedOn minimum to maintain proper priority
- Add StyleBasedOn constant (0x0C0) between implicit and local styles
- Preserve specificity during VisualStateGroupList cloning

Fixes #27202
…2828)

Add accessibility identifier to MauiDoneAccessoryView Done button

Co-authored-by: jfversluis <[email protected]>

Address code review feedback - extract constant and improve comment

Co-authored-by: jfversluis <[email protected]>

Update src/Controls/tests/TestCases.HostApp/Issues/MauiDoneAccessoryButton.cs

Co-authored-by: Copilot <[email protected]>
Added a device test

Fixes

Fixed a memory leak

Don't interfere with other gestures
# Conflicts:
#	src/Controls/tests/TestCases.HostApp/Issues/Issue15810.cs
#	src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue15810.cs
#	src/Core/src/Handlers/ContentView/ContentViewHandler.Windows.cs

Updated test
Removed conditional compilation for Android tests related to color assertions.
Introduces the UpdateLargeTitles method to manage large title display modes for navigation bars in ShellItemRenderer. This ensures that the large title preference is updated when the displayed page changes or when the view lays out subviews, aligning with iOS-specific platform configurations.

Added a UITest

Fix large title display mode handling on iOS Shell

Corrects the logic for setting PrefersLargeTitles to only enable large titles when LargeTitleDisplayMode is Always. Updates Issue12156 test to set LargeTitleDisplay on ContentPage instead of Shell. Adds snapshot images for large title display verification on Mac and iOS.
…r scrolling when deploying ManualMaui Demo project on iOS 26.1 (#32822)

Fix optimized

Update src/Controls/src/Core/Handlers/Items2/iOS/TemplatedCell2.cs

Co-authored-by: Copilot <[email protected]>
NirmalKumarYuvaraj and others added 24 commits December 5, 2025 11:03
* Migrate Xaml.UnitTests from NUnit to xUnit

Complete migration of src/Controls/tests/Xaml.UnitTests from NUnit to xUnit testing framework.

* Improve exception tests and remove unnecessary IDisposable

- Bz43694, Bz44216, Issue2450: Use XamlExceptionAssert to check
  exception line/position and message content
- Maui17222: Replace IDisposable with try/finally for cleanup
…tegory (#32990)

* Initial plan

* Split UITest category group into two runs

Co-authored-by: PureWeen <[email protected]>

* Move ScrollView to run separately

Co-authored-by: PureWeen <[email protected]>

* Split Label,Layout,Lifecycle,ListView and Shadow,ViewBaseTests,Visual,WebView,Window to run separately

Co-authored-by: PureWeen <[email protected]>

* Combine SafeAreaEdges and Shadow, remove Visual category and reassign tests

Co-authored-by: PureWeen <[email protected]>

* Combine category groups: Lifecycle+ManualReview+Maps, ViewBaseTests+Window, Cells+DatePicker groups

Co-authored-by: PureWeen <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: PureWeen <[email protected]>
* Add scripts to easily retrieve MAUI PR artifacts

* Add GitHub Action for commenting

* Remove comment from PR template

* Update README.md

* Address comments

* Don't trigger Azure Pipelines on GitHub changes

* Update get-maui-pr.sh
Added version 10.0.20 to the bug report template options.
…2835)

* Initial plan

* Add comprehensive README for Microsoft.Maui.Controls NuGet package

Co-authored-by: jfversluis <[email protected]>

* Update src/Controls/src/NuGet/README.md

* Change title to use product name .NET MAUI instead of .NET MAUI Controls

Co-authored-by: jfversluis <[email protected]>

* Address PR feedback: Update Background property, add XAML enhancements, update Discord/social links

Co-authored-by: jfversluis <[email protected]>

* Update src/Controls/src/NuGet/README.md

Co-authored-by: Copilot <[email protected]>

* Update src/Controls/src/NuGet/README.md

Co-authored-by: Kartheek Penagamuri <[email protected]>

* Add Mac Catalyst run command and replace code examples with doc links

Co-authored-by: jfversluis <[email protected]>

* Add code snippets alongside doc links and remove ListView reference

Co-authored-by: jfversluis <[email protected]>

* Remove build status badge from README

Co-authored-by: jfversluis <[email protected]>

* Update src/Controls/src/NuGet/README.md

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: jfversluis <[email protected]>
Co-authored-by: Gerald Versluis <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Kartheek Penagamuri <[email protected]>
* Initial plan

* chore: plan uitest artifact fix

Co-authored-by: jfversluis <[email protected]>

* fix: include stage in uitest snapshot artifacts

Co-authored-by: jfversluis <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: jfversluis <[email protected]>
* Update arcade

* [ci] Force helix sdk version to be the same as release
### Description of Change

This tries to workaround a issue with Microsoft.Windowsappsdk failing
sometimes https://microsoft.visualstudio.com/OS/_workitems/edit/57204991

Fixes #32503
This PR addresses UI test image failures in the main branch and includes
updates to improve rendering and test stability across platforms.

- WebViewShouldNotMirrored: Updated to use a new static web link and
added VerifyInternetConnectivity to ensure internet connection before
running the test.
- HeaderFooterHorizontalViewWorks: Changed the scroll strategy to
Gesture for better reliability.

### Test cases:

- WebViewShouldNotMirrored
- HeaderFooterHorizontalViewWorks
This pull request updates the test order in the
``TwoPaneViewFeatureTests`` class. The TwoPaneView_Pane1Priority test
was occasionally failing in CI due to RTL state carried over from
earlier tests. Setting a clear execution order ensures tests run in the
correct sequence and resolves the flaky behavior.
This pull request improves the reliability and accuracy of UI tests by
addressing test flakiness, enhancing assertions, and refining test
logic. The main focus is on making tests more robust across different
platforms (especially in CI environments) and ensuring UI behavior is
correctly validated.

**Test reliability improvements:**

* Added retry logic for drag-and-drop actions in
`GesturesSenderIsView()` on Mac Catalyst to reduce test flakiness in CI
environments.
* Extended double-tap retry logic in `TapThenDoubleTap()` to both
Android and iOS platforms, not just Android, to handle potential
flakiness.

**Test accuracy and validation enhancements:**

* Improved `ModalPageMarginCorrectAfterKeyboardOpens()` by capturing and
asserting the position of an `Entry` before and after keyboard
appearance/dismissal, ensuring the UI remains visible and returns to its
original state.
* Updated `TextInEditorShouldScroll()` to use a more precise scroll
command (`ScrollStrategy.Gesture` with `withInertia: false`), improving
test consistency.
This pull request updates the `VerifyEditorFocusedEvent` test method to
be asynchronous, improving reliability by adding a short delay after
tapping the editor. This ensures the focus event is properly triggered
before the assertion is made.

**Test reliability improvement:**
* Changed `VerifyEditorFocusedEvent` in `EditorFeatureTests.cs` to be an
`async Task`, and added a `Task.Delay(100)` after tapping the editor to
ensure the focus event has time to trigger before the test assertion.
Copilot AI review requested due to automatic review settings December 18, 2025 15:15
Copy link
Contributor

Copilot AI left a comment

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 merges the latest changes from the main branch into the net10.0 branch, bringing forward numerous bug fixes, test improvements, and infrastructure updates.

Key changes include:

  • Multiple bug fixes for controls (SwipeView, Picker, Slider, CollectionView, etc.)
  • Test coverage improvements with new UI tests for Slider and Shell
  • New PR testing scripts for bash and PowerShell to enable dogfooding
  • Infrastructure updates including pipeline configurations and GitHub workflow improvements

Reviewed changes

Copilot reviewed 126 out of 904 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/Controls/tests/DeviceTests/TestCategory.cs Added "Slider" test category constant
src/Controls/tests/DeviceTests/Elements/SwipeView/SwipeViewTests.cs Updated test to verify SwipeView maintains 5 logical children (Content + 4 SwipeItems)
src/Controls/tests/DeviceTests/Elements/Slider/SliderTests.iOS.cs New iOS-specific memory leak test for Slider with UpdateOnTap feature
src/Controls/tests/DeviceTests/Elements/Slider/SliderTests.cs New test infrastructure for Slider control
src/Controls/tests/DeviceTests/Elements/ContentView/ContentViewTests.iOS.cs Re-enabled previously skipped test (issue #32368 resolved)
src/Controls/tests/Core.UnitTests/SwipeViewTests.cs Added comprehensive test for SwipeItems logical tree and binding context propagation
src/Controls/tests/Core.UnitTests/SolidColorBrushTests.cs Added test for Color value equality comparison (fixes issue #27281)
src/Controls/tests/Core.UnitTests/ShellModalAppearingTests.cs New test file for Shell modal page lifecycle (fixes issue #31584)
src/Controls/tests/Core.UnitTests/PickerTests.cs Updated tests to verify SelectedItem preservation during collection changes
src/Controls/src/SourceGen/CompiledBindingMarkup.cs Added null value handling for compiled bindings setter generation
src/Controls/src/NuGet/README.md New comprehensive README for NuGet package with documentation and examples
src/Controls/src/NuGet/Controls.NuGet.csproj Added PackageReadmeFile property to include README in package
src/Controls/src/Core/VisualStateManager.cs Added debug output and specificity preservation for VSM cloning (issue #27202)
src/Controls/src/Core/TimePicker/TimePicker.cs Fixed TimeSelected event arguments to accept nullable TimeSpan values
src/Controls/src/Core/TemplateUtilities.cs Modified to preserve SwipeItems in logical tree during content changes
src/Controls/src/Core/SolidColorBrush.cs Fixed Equals comparison to use value equality instead of reference equality
src/Controls/src/Core/Slider/Slider.iOS.cs New iOS-specific mapper for UpdateOnTap property
src/Controls/src/Core/Slider/Slider.Mapper.cs New mapper configuration for iOS Slider handlers
src/Controls/src/Core/Shell/ShellSection.cs Fixed modal page lifecycle during ShellItem switching
src/Controls/src/Core/Shapes/Shape.cs Fixed RoundRectangle measurement to use inner path excluding stroke
src/Controls/src/Core/Shapes/RoundRectangle.cs Added InnerPath method to IRoundRectangle interface
src/Controls/src/Core/SetterSpecificity.cs Added StyleBasedOn constant and updated VSM priority handling
src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt Added ViewWillTransitionToSize method to public API surface
src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt Added ViewWillTransitionToSize method to public API surface
src/Controls/src/Core/Platform/iOS/ControlsModalWrapper.cs Added defensive null check for VirtualView during iOS snapshot creation
src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs Added SwipeGestureRecognizer direction property change handling
src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs Fixed NotImplementedException in CreateSubscription for standard platforms
src/Controls/src/Core/Picker/Picker.cs Fixed SelectedIndex to preserve SelectedItem during collection changes
src/Controls/src/Core/ImageBrush.cs Simplified GetHashCode to use base implementation
src/Controls/src/Core/Hosting/AppHostBuilderExtensions.cs Added Slider.RemapForControls() call to handler remapping
src/Controls/src/Core/Handlers/Items2/iOS/TemplatedCell2.cs Added MeasureFirstItem caching and BackgroundProperty VSM support
src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs Added rotation check to prevent invalid carousel positioning
src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs Added ReloadData wrapper to reset cached first item size
src/Controls/src/Core/Handlers/Items2/iOS/CarouselViewController2.cs Added device orientation change handling for carousel repositioning
src/Controls/src/Core/Handlers/Items2/ItemsViewHandler2.iOS.cs Added layout update call when FlowDirection changes
src/Controls/src/Core/Handlers/Items2/CollectionViewHandler2.iOS.cs Implemented first item size caching for MeasureFirstItem strategy
src/Controls/src/Core/Handlers/Items/iOS/TemplatedCell.cs Added BackgroundProperty check to VSM selection color detection
src/Controls/src/Core/Handlers/Items/Android/TemplatedItemViewHolder.cs Added BackgroundProperty check to VSM selection color detection
src/Controls/src/Core/Handlers/Items/Android/MauiRecyclerView.cs Added empty view update detection for header/footer property changes
src/Controls/src/Core/Handlers/Items/Android/Adapters/StructuredItemsViewAdapter.cs Added header/footer template property change notifications
src/Controls/src/Core/GradientStop.cs Simplified GetHashCode to use base implementation
src/Controls/src/Core/Compatibility/Handlers/TabbedPage/iOS/TabbedRenderer.cs Added TabBar visibility fix for MacCatalyst 18+
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs Added navigation bar visibility animation and iOS 26+ title view updates
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cs Added iOS 26+ navigation controller check and search bar cleanup
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellItemRenderer.cs Added large title display mode updates and TabBar visibility handling
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutRenderer.cs Added ViewWillTransitionToSize override for tapoff view frame updates
src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellItemRenderer.cs Added appearance update when switching between tabs
src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFragmentContainer.cs Removed OnDestroy override with Dispose call
src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFlyoutTemplatedContentRenderer.cs Added UpdateContentPadding call when footer is null
src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs Added iOS 26+ orientation change handling for title view
src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj Conditional EmitCompilerGeneratedFiles only in Debug configuration
src/Controls/samples/Controls.Sample.Profiling/Maui.Controls.Sample.Profiling.csproj Conditional EmitCompilerGeneratedFiles only in Debug configuration
eng/scripts/get-maui-pr.sh New bash script to apply PR builds to local projects
eng/scripts/get-maui-pr.ps1 New PowerShell script to apply PR builds to local projects
eng/scripts/README.md Documentation for PR artifact testing scripts
eng/pipelines/*.yml Updated branch patterns from hardcoded versions to wildcard (net*.0)
eng/Versions.props Updated PatchVersion to 30 and XHarness package versions
eng/Version.Details.xml Updated XHarness dependency SHAs
Directory.Build.targets Added target to prevent TypeScript output deletion
Directory.Build.props Added TypeScript compilation properties and EmitCompilerGeneratedFiles workaround
.github/workflows/*.yml Added repository_owner checks to prevent fork workflow execution
.github/workflows/dogfood-comment.yml New workflow to add PR dogfooding comments automatically
.github/scripts/templates/RunWithAppiumTest.template.cs Updated template with better validation and helper extensions
.github/scripts/shared/Start-Emulator.ps1 Added AVD name detection for DeviceUdid parameter
.github/instructions/*.md Removed/reorganized agent instruction files
.config/dotnet-tools.json Updated XHarness CLI version

@rmarinho rmarinho merged commit 9f6830c into net10.0 Dec 18, 2025
106 of 156 checks passed
@rmarinho rmarinho deleted the merge-main-net10 branch December 18, 2025 17:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.