Conversation
…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 <shneuvil@microsoft.com>
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 <shneuvil@microsoft.com>
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 <shneuvil@microsoft.com>
#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 <175728472+Copilot@users.noreply.github.com>
…nt crash (#31866) Add null check in ControlsModalWrapper.ViewDidLayoutSubviews to prevent crash Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> Add explanatory comment for defensive null check in ViewDidLayoutSubviews Co-authored-by: jsuarezruiz <6755973+jsuarezruiz@users.noreply.github.com>
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 <939291+jfversluis@users.noreply.github.com> Address code review feedback - extract constant and improve comment Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> Update src/Controls/tests/TestCases.HostApp/Issues/MauiDoneAccessoryButton.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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 <175728472+Copilot@users.noreply.github.com>
* 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 <5375137+PureWeen@users.noreply.github.com> * Move ScrollView to run separately Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com> * Split Label,Layout,Lifecycle,ListView and Shadow,ViewBaseTests,Visual,WebView,Window to run separately Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com> * Combine SafeAreaEdges and Shadow, remove Visual category and reassign tests Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com> * Combine category groups: Lifecycle+ManualReview+Maps, ViewBaseTests+Window, Cells+DatePicker groups Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
* 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 <939291+jfversluis@users.noreply.github.com> * Update src/Controls/src/NuGet/README.md * Change title to use product name .NET MAUI instead of .NET MAUI Controls Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * Address PR feedback: Update Background property, add XAML enhancements, update Discord/social links Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * Update src/Controls/src/NuGet/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/Controls/src/NuGet/README.md Co-authored-by: Kartheek Penagamuri <kapenaga@microsoft.com> * Add Mac Catalyst run command and replace code examples with doc links Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * Add code snippets alongside doc links and remove ListView reference Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * Remove build status badge from README Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * Update src/Controls/src/NuGet/README.md --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Kartheek Penagamuri <kapenaga@microsoft.com>
* Initial plan * chore: plan uitest artifact fix Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> * fix: include stage in uitest snapshot artifacts Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com>
* 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.
# Conflicts: # eng/Versions.props # eng/common/core-templates/job/publish-build-assets.yml # eng/common/core-templates/post-build/post-build.yml # eng/common/core-templates/steps/install-microbuild.yml # eng/pipelines/ci-device-tests.yml # eng/pipelines/ci-official.yml # eng/pipelines/ci-uitests.yml # eng/pipelines/ci.yml # eng/pipelines/device-tests.yml # eng/pipelines/handlers.yml # eng/pipelines/ui-tests.yml
There was a problem hiding this comment.
Pull request overview
This is a merge PR bringing the latest changes from the main branch into net11.0. The PR includes multiple bug fixes, test improvements, new features, and infrastructure updates spanning iOS, Android, and cross-platform code.
Key changes:
- Added slider test coverage and iOS-specific slider platform configuration
- Fixed SwipeView logical children handling to properly maintain SwipeItems in the tree
- Multiple Shell navigation and lifecycle fixes (modal appearing, tab bar visibility, large titles)
- Picker selection preservation when items are added/removed from ItemsSource
- CollectionView Items2 handler improvements (MeasureFirstItem optimization, flow direction, selection state)
- Build infrastructure updates (pipeline wildcards, EmitCompilerGeneratedFiles optimization, TypeScript compilation)
- New PR testing scripts (get-maui-pr.sh and get-maui-pr.ps1) for easier PR artifact testing
Reviewed changes
Copilot reviewed 131 out of 909 changed files in this pull request and generated 2 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 logical children count assertion from 1 to 5 to verify SwipeItems are maintained |
| src/Controls/tests/DeviceTests/Elements/Slider/*.cs | Added new Slider test files (base class and iOS leak test) |
| src/Controls/tests/DeviceTests/Elements/ContentView/ContentViewTests.iOS.cs | Unskipped previously failing 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 SolidColorBrush.Equals using value comparison (fixes issue #27281) |
| src/Controls/tests/Core.UnitTests/ShellModalAppearingTests.cs | New comprehensive test suite for Shell modal lifecycle (fixes issue #31584) |
| src/Controls/tests/Core.UnitTests/PickerTests.cs | Enhanced tests for Picker selection preservation during ItemsSource modifications |
| src/Controls/src/SourceGen/CompiledBindingMarkup.cs | Added null value handling for compiled bindings with non-nullable setters |
| src/Controls/src/NuGet/. | Added README.md for NuGet package with comprehensive documentation |
| src/Controls/src/Core/VisualStateManager.cs | Added debug output and specificity preservation for VSM (issue #27202) |
| src/Controls/src/Core/TimePicker/TimePicker.cs | Fixed TimeSelected event to accept nullable TimeSpan parameters |
| src/Controls/src/Core/TemplateUtilities.cs | Enhanced to preserve SwipeItems in logical tree during content changes |
| src/Controls/src/Core/SolidColorBrush.cs | Changed Color comparison to use Equals() instead of == operator |
| src/Controls/src/Core/Slider/*.cs | Added iOS platform-specific slider mapping for UpdateOnTap |
| src/Controls/src/Core/Shell/ShellSection.cs | Fixed modal disappearing logic to prevent incorrect SendDisappearing calls |
| src/Controls/src/Core/Shapes/*.cs | Fixed RoundRectangle measurement to use inner path |
| src/Controls/src/Core/SetterSpecificity.cs | Added StyleBasedOn constant and updated specificity handling for base styles |
| src/Controls/src/Core/PublicAPI/*.txt | Updated API surface for new ViewWillTransitionToSize override |
| src/Controls/src/Core/Platform/iOS/ControlsModalWrapper.cs | Added defensive check for VirtualView disposal during snapshot |
| src/Controls/src/Core/Platform/GestureManager/*.cs | Added SwipeGestureRecognizer direction change handling |
| src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs | Fixed Standard platform alert manager to return subscription instead of throwing |
| src/Controls/src/Core/Picker/Picker.cs | Refactored to preserve SelectedItem when collection changes |
| src/Controls/src/Core/ImageBrush.cs, GradientStop.cs | Simplified GetHashCode to use base implementation |
| src/Controls/src/Core/Hosting/AppHostBuilderExtensions.cs | Added Slider.RemapForControls() call |
| src/Controls/src/Core/Handlers/Items2/*.cs | Multiple iOS CollectionView handler improvements (measurement caching, flow direction, selection VSM) |
| src/Controls/src/Core/Handlers/Items/*.cs | Updated VSM selection detection to include Background property |
| src/Controls/src/Core/Compatibility/Handlers/TabbedPage/*.cs | Fixed TabBar visibility on MacCatalyst 18+ |
| src/Controls/src/Core/Compatibility/Handlers/Shell/*.cs | Multiple Shell fixes (search bar, title view, flyout, large titles, appearance) |
| src/Controls/src/Core/Compatibility/Handlers/NavigationPage/*.cs | Added iOS 26+ orientation handling for title view |
| src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj | Only emit compiler-generated files in Debug configuration |
| eng/scripts/. | Added get-maui-pr.sh and get-maui-pr.ps1 scripts for PR artifact testing |
| eng/pipelines/*.yml | Updated to use wildcard patterns for net*.0 branches and improved artifact naming |
| eng/. | Version updates and build configuration improvements |
| Directory.Build.* | Added TypeScript compilation settings and EmitCompilerGeneratedFiles workaround |
| .github/workflows/*.yml | Added repository_owner checks and new dogfood-comment workflow |
| .github/instructions/.md, .github/prompts/.md | Removed obsolete documentation files |
| // since default GetBoundsByFlattening(0.001) returns incorrect results for curves | ||
| RectF pathBounds = this.GetPath().GetBoundsByFlattening(1); | ||
| // Get the inner path by subtracting the stroke thickness for a rounded rectangle, as the GetPath() method returns the path including the stroke thickness. | ||
| // For other shapes, the GetPath() method excludes the stroke thickness" |
There was a problem hiding this comment.
Missing closing quotation mark at the end of line 387. The comment should end with a period, not a quotation mark, or if a quotation mark is intended, it should have a matching opening quote.
| // For other shapes, the GetPath() method excludes the stroke thickness" | |
| // For other shapes, the GetPath() method excludes the stroke thickness. |
| } | ||
| else | ||
| { | ||
| pathBounds = this.GetPath().GetBoundsByFlattening(1); |
There was a problem hiding this comment.
Inconsistent indentation. This line uses spaces for indentation while surrounding code uses tabs. Should use tabs to match the file's indentation style.
| pathBounds = this.GetPath().GetBoundsByFlattening(1); | |
| pathBounds = this.GetPath().GetBoundsByFlattening(1); |
Description of Change
Bring latest from main to net11