Skip to content

[iOS26]Fix BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate UITest fails#34890

Merged
kubaflo merged 3 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix_34771
Apr 20, 2026
Merged

[iOS26]Fix BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate UITest fails#34890
kubaflo merged 3 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix_34771

Conversation

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor

Issue Details

In the issue, mentioned two tests are failed

  • BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
  • BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate

The test failed due to PR #28734. The PR included a fix for the BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on iOS 26. Further improvements are needed for iOS26, which was added in the PR.

Root Cause

On iOS 26, the Shell back button test failed because tapping the back button while BackButtonBehavior.IsEnabled was false left the Shell renderer in a pending back-navigation state. After the button was enabled again, the next back tap was still blocked, which caused the test to time out instead of returning to the main page.

Description of Change

The fix clears the pending back-navigation flag when a disabled back tap is ignored, so back navigation works correctly once the button is re-enabled.

BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR #34617

Note :
Existing PR #34850 was closed due to some conflicts issue

Issues Fixed

Fixes #34771

Tested the behavior in the following platforms.

  • Android
  • Windows
  • iOS
  • Mac
Before After
iOS
Before.mov
iOS
After.mov

@github-actions

github-actions Bot commented Apr 9, 2026

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 -- 34890

Or

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

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Apr 9, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review April 9, 2026 07:20
Copilot AI review requested due to automatic review settings April 9, 2026 07:20

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

Fixes an iOS 26+/MacCatalyst 26+ Shell back-navigation regression where a back tap can leave ShellSectionRenderer in a “pending pop” state, causing subsequent back navigation attempts to be blocked.

Changes:

  • Reset _sendPopPending when BackButtonBehavior.IsEnabled is false and the back tap is ignored in SendPop().

@Tamilarasan-Paranthaman Tamilarasan-Paranthaman added platform/ios area-controls-shell Shell Navigation, Routes, Tabs, Flyout community ✨ Community Contribution version/iOS-26 labels Apr 9, 2026
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines

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

@MauiBot

MauiBot commented Apr 10, 2026

Copy link
Copy Markdown
Collaborator

🚦 Gate — Test Before and After Fix

👋 @devanathan-vaithiyanathan — new gate results are available. Please review the latest session below.

🚦 Gate Session9afb518 · iOS26 snap added · 2026-04-17 09:51 UTC

Gate Result: ❌ FAILED

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

Test Without Fix (expect FAIL) With Fix (expect PASS)
🖥️ ShellNavigationFeatureTests ShellNavigationFeatureTests ❌ PASS — 436s ✅ PASS — 294s
🔴 Without fix — 🖥️ ShellNavigationFeatureTests: PASS ❌ · 436s

(truncated to last 15,000 chars)

.13867295
  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.
/Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
[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.05]   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 52 of 52 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 4/17/2026 2:43:33 AM FixtureSetup for ShellNavigationFeatureTests(iOS)
>>>>> 4/17/2026 2:43:40 AM VerifyShellProperties_InitialState Start
>>>>> 4/17/2026 2:43:42 AM VerifyShellProperties_InitialState Stop
>>>>> 4/17/2026 2:43:42 AM VerifyShellProperties_FlyoutSwitch Start
  Passed VerifyShellProperties_InitialState [1 s]
>>>>> 4/17/2026 2:43:45 AM VerifyShellProperties_FlyoutSwitch Stop
  Passed VerifyShellProperties_FlyoutSwitch [3 s]
>>>>> 4/17/2026 2:43:45 AM VerifyShellProperties_ContentSwitch Start
>>>>> 4/17/2026 2:43:50 AM VerifyShellProperties_ContentSwitch Stop
  Passed VerifyShellProperties_ContentSwitch [5 s]
>>>>> 4/17/2026 2:43:50 AM VerifyShellProperties_TabSwitch Start
>>>>> 4/17/2026 2:43:56 AM VerifyShellProperties_TabSwitch Stop
  Passed VerifyShellProperties_TabSwitch [5 s]
>>>>> 4/17/2026 2:43:56 AM BackButton_TapBackArrow_NoCommand_NavigatesBack Start
>>>>> 4/17/2026 2:43:58 AM BackButton_TapBackArrow_NoCommand_NavigatesBack Stop
  Passed BackButton_TapBackArrow_NoCommand_NavigatesBack [2 s]
>>>>> 4/17/2026 2:43:58 AM RelativeRoute_Detail1ToNavTest1 Start
>>>>> 4/17/2026 2:44:00 AM RelativeRoute_Detail1ToNavTest1 Stop
  Passed RelativeRoute_Detail1ToNavTest1 [2 s]
>>>>> 4/17/2026 2:44:00 AM ForwardNavigation_NavTest1ToNavTest2 Start
>>>>> 4/17/2026 2:44:01 AM ForwardNavigation_NavTest1ToNavTest2 Stop
>>>>> 4/17/2026 2:44:01 AM BackAndForwardNavigation_NavTest2ToNavTest3 Start
  Passed ForwardNavigation_NavTest1ToNavTest2 [891 ms]
>>>>> 4/17/2026 2:44:02 AM BackAndForwardNavigation_NavTest2ToNavTest3 Stop
>>>>> 4/17/2026 2:44:02 AM DoubleBackNavigation_NavTest3ToDetail1 Start
>>>>> 4/17/2026 2:44:03 AM DoubleBackNavigation_NavTest3ToDetail1 Stop
>>>>> 4/17/2026 2:44:03 AM AbsoluteRoute_Detail1ToPage2 Start
  Passed BackAndForwardNavigation_NavTest2ToNavTest3 [896 ms]
  Passed DoubleBackNavigation_NavTest3ToDetail1 [891 ms]
>>>>> 4/17/2026 2:44:04 AM AbsoluteRoute_Detail1ToPage2 Stop
>>>>> 4/17/2026 2:44:04 AM ContextualRoute_FromDetail1_SubDetailShowsDetail1Context Start
  Passed AbsoluteRoute_Detail1ToPage2 [972 ms]
>>>>> 4/17/2026 2:44:10 AM ContextualRoute_FromDetail1_SubDetailShowsDetail1Context Stop
  Passed ContextualRoute_FromDetail1_SubDetailShowsDetail1Context [6 s]
>>>>> 4/17/2026 2:44:10 AM ContextualRoute_FromDetail2_SubDetailShowsDetail2Context Start
>>>>> 4/17/2026 2:44:13 AM ContextualRoute_FromDetail2_SubDetailShowsDetail2Context Stop
  Passed ContextualRoute_FromDetail2_SubDetailShowsDetail2Context [2 s]
>>>>> 4/17/2026 2:44:13 AM RouteRegistration_UnregisterRoute_NavigationFails Start
>>>>> 4/17/2026 2:44:14 AM RouteRegistration_UnregisterRoute_NavigationFails Stop
>>>>> 4/17/2026 2:44:14 AM RouteRegistration_ReRegisterRoute_NavigationSucceeds Start
  Passed RouteRegistration_UnregisterRoute_NavigationFails [1 s]
>>>>> 4/17/2026 2:44:17 AM RouteRegistration_ReRegisterRoute_NavigationSucceeds Stop
  Passed RouteRegistration_ReRegisterRoute_NavigationSucceeds [2 s]
>>>>> 4/17/2026 2:44:17 AM CancelNavigation_NavigationIsBlocked_StaysOnMain Start
>>>>> 4/17/2026 2:44:21 AM CancelNavigation_NavigationIsBlocked_StaysOnMain Stop
  Passed CancelNavigation_NavigationIsBlocked_StaysOnMain [4 s]
>>>>> 4/17/2026 2:44:21 AM DeferralNavigation_NavigationCompletes_AfterDelay Start
>>>>> 4/17/2026 2:44:29 AM DeferralNavigation_NavigationCompletes_AfterDelay Stop
  Passed DeferralNavigation_NavigationCompletes_AfterDelay [8 s]
>>>>> 4/17/2026 2:44:29 AM TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo Start
>>>>> 4/17/2026 2:44:31 AM TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo Stop
  Passed TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo [1 s]
>>>>> 4/17/2026 2:44:31 AM TabStack_OnPushAsync_SubPage1_TabStackCountIsThree Start
>>>>> 4/17/2026 2:44:33 AM TabStack_OnPushAsync_SubPage1_TabStackCountIsThree Stop
>>>>> 4/17/2026 2:44:33 AM TabStack_OnPushAsync_SubPage2_TabStackCountIsFour Start
  Passed TabStack_OnPushAsync_SubPage1_TabStackCountIsThree [1 s]
>>>>> 4/17/2026 2:44:34 AM TabStack_OnPushAsync_SubPage2_TabStackCountIsFour Stop
>>>>> 4/17/2026 2:44:34 AM TabStack_OnPopAsync_SubPage2_TabStackCountIsThree Start
  Passed TabStack_OnPushAsync_SubPage2_TabStackCountIsFour [1 s]
>>>>> 4/17/2026 2:44:35 AM TabStack_OnPopAsync_SubPage2_TabStackCountIsThree Stop
>>>>> 4/17/2026 2:44:35 AM TabStack_OnPopToRootAsync_ReturnsToMainPage Start
  Passed TabStack_OnPopAsync_SubPage2_TabStackCountIsThree [1 s]
>>>>> 4/17/2026 2:44:36 AM TabStack_OnPopToRootAsync_ReturnsToMainPage Stop
>>>>> 4/17/2026 2:44:36 AM TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage Start
  Passed TabStack_OnPopToRootAsync_ReturnsToMainPage [1 s]
>>>>> 4/17/2026 2:44:39 AM TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage Stop
>>>>> 4/17/2026 2:44:39 AM TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo Start
  Passed TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage [2 s]
>>>>> 4/17/2026 2:44:40 AM TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo Stop
>>>>> 4/17/2026 2:44:40 AM TabStack_OnRemovePage_NoOp_WhenNothingToRemove Start
  Passed TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo [1 s]
>>>>> 4/17/2026 2:44:41 AM TabStack_OnRemovePage_NoOp_WhenNothingToRemove Stop
>>>>> 4/17/2026 2:44:41 AM TabStack_GetNavigationStack_TabStackMatchesNavigationStack Start
  Passed TabStack_OnRemovePage_NoOp_WhenNothingToRemove [931 ms]
>>>>> 4/17/2026 2:44:46 AM TabStack_GetNavigationStack_TabStackMatchesNavigationStack Stop
  Passed TabStack_GetNavigationStack_TabStackMatchesNavigationStack [4 s]
>>>>> 4/17/2026 2:44:46 AM NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage Start
>>>>> 4/17/2026 2:44:50 AM NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage Stop
  Passed NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage [3 s]
>>>>> 4/17/2026 2:44:50 AM NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped Start
>>>>> 4/17/2026 2:44:50 AM NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped Stop
>>>>> 4/17/2026 2:44:50 AM NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage Start
  Passed NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped [594 ms]
>>>>> 4/17/2026 2:44:52 AM NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage Stop
>>>>> 4/17/2026 2:44:52 AM NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage Start
>>>>> 4/17/2026 2:44:52 AM NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage Stop
>>>>> 4/17/2026 2:44:52 AM NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged Start
  Passed NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage [1 s]
  Passed NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage [526 ms]
>>>>> 4/17/2026 2:44:57 AM NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged Stop
  Passed NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged [4 s]
>>>>> 4/17/2026 2:44:57 AM NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain Start
>>>>> 4/17/2026 2:44:58 AM NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain Stop
>>>>> 4/17/2026 2:44:58 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged Start
  Passed NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain [505 ms]
>>>>> 4/17/2026 2:44:59 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged Stop
>>>>> 4/17/2026 2:44:59 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged Start
>>>>> 4/17/2026 2:44:59 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged Stop
>>>>> 4/17/2026 2:44:59 AM NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged Start
  Passed NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged [1 s]
  Passed NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged [317 ms]
>>>>> 4/17/2026 2:45:02 AM NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged Stop
  Passed NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged [3 s]
>>>>> 4/17/2026 2:45:02 AM NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 Start
>>>>> 4/17/2026 2:45:04 AM NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 Stop
  Passed NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 [1 s]
>>>>> 4/17/2026 2:45:04 AM NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged Start
>>>>> 4/17/2026 2:45:08 AM NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged Stop
  Passed NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged [3 s]
>>>>> 4/17/2026 2:45:08 AM NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA Start
>>>>> 4/17/2026 2:45:09 AM NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA Stop
  Passed NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA [1 s]
>>>>> 4/17/2026 2:45:09 AM NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot Start
>>>>> 4/17/2026 2:45:13 AM NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot Stop
  Passed NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot [3 s]
>>>>> 4/17/2026 2:45:13 AM NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot Start
>>>>> 4/17/2026 2:45:13 AM NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot Stop
>>>>> 4/17/2026 2:45:13 AM PassData_StringQueryParam_ReceivedByIQueryAttributable Start
  Passed NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot [326 ms]
>>>>> 4/17/2026 2:45:19 AM PassData_StringQueryParam_ReceivedByIQueryAttributable Stop
  Passed PassData_StringQueryParam_ReceivedByIQueryAttributable [5 s]
>>>>> 4/17/2026 2:45:19 AM PassData_DictionaryParam_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:45:23 AM PassData_DictionaryParam_ReceivedByIQueryAttributable Stop
  Passed PassData_DictionaryParam_ReceivedByIQueryAttributable [4 s]
>>>>> 4/17/2026 2:45:23 AM PassData_SingleUseParams_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:45:28 AM PassData_SingleUseParams_ReceivedByIQueryAttributable Stop
  Passed PassData_SingleUseParams_ReceivedByIQueryAttributable [4 s]
>>>>> 4/17/2026 2:45:28 AM PassData_StringQueryParam_BothLabelsReceiveSameValue Start
>>>>> 4/17/2026 2:45:33 AM PassData_StringQueryParam_BothLabelsReceiveSameValue Stop
  Passed PassData_StringQueryParam_BothLabelsReceiveSameValue [4 s]
>>>>> 4/17/2026 2:45:33 AM PassData_BackwardsNavigation_PassesDataToPreviousPage Start
>>>>> 4/17/2026 2:45:35 AM PassData_BackwardsNavigation_PassesDataToPreviousPage Stop
  Passed PassData_BackwardsNavigation_PassesDataToPreviousPage [2 s]
>>>>> 4/17/2026 2:45:35 AM PassData_MultipleStringParams_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:45:43 AM PassData_MultipleStringParams_ReceivedByIQueryAttributable Stop
  Passed PassData_MultipleStringParams_ReceivedByIQueryAttributable [7 s]
>>>>> 4/17/2026 2:45:43 AM PassData_IQueryAttributable_ReceivesDecodedValues Start
>>>>> 4/17/2026 2:45:48 AM PassData_IQueryAttributable_ReceivesDecodedValues Stop
  Passed PassData_IQueryAttributable_ReceivesDecodedValues [4 s]
>>>>> 4/17/2026 2:45:48 AM PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack Start
>>>>> 4/17/2026 2:45:56 AM PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack Stop
  Passed PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack [8 s]
>>>>> 4/17/2026 2:45:56 AM BackButtonBehavior_TextOverride_CustomTextShownOnBackButton Start
>>>>> 4/17/2026 2:46:02 AM BackButtonBehavior_TextOverride_CustomTextShownOnBackButton Stop
  Passed BackButtonBehavior_TextOverride_CustomTextShownOnBackButton [6 s]
>>>>> 4/17/2026 2:46:02 AM BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter Start
>>>>> 4/17/2026 2:46:08 AM BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter Stop
  Passed BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter [6 s]
>>>>> 4/17/2026 2:46:08 AM BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate Start
>>>>> 4/17/2026 2:46:17 AM BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate Stop
  Passed BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate [8 s]
>>>>> 4/17/2026 2:46:17 AM BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks Start
>>>>> 4/17/2026 2:46:19 AM BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks Stop
  Passed BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks [2 s]
>>>>> 4/17/2026 2:46:19 AM BackButtonBehavior_IconOverride_CustomIconShownOnBackButton Start
>>>>> 4/17/2026 2:46:23 AM BackButtonBehavior_IconOverride_CustomIconShownOnBackButton Stop
  Passed BackButtonBehavior_IconOverride_CustomIconShownOnBackButton [3 s]
NUnit Adapter 4.5.0.0: Test execution complete

Test Run Successful.
Total tests: 52
     Passed: 52
 Total time: 3.8609 Minutes

🟢 With fix — 🖥️ ShellNavigationFeatureTests: PASS ✅ · 294s

(truncated to last 15,000 chars)

0-ci+azdo.13867295
  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.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.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.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.
/Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
[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 52 of 52 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 4/17/2026 2:48:11 AM FixtureSetup for ShellNavigationFeatureTests(iOS)
>>>>> 4/17/2026 2:48:19 AM VerifyShellProperties_InitialState Start
>>>>> 4/17/2026 2:48:20 AM VerifyShellProperties_InitialState Stop
  Passed VerifyShellProperties_InitialState [1 s]
>>>>> 4/17/2026 2:48:20 AM VerifyShellProperties_FlyoutSwitch Start
>>>>> 4/17/2026 2:48:24 AM VerifyShellProperties_FlyoutSwitch Stop
  Passed VerifyShellProperties_FlyoutSwitch [3 s]
>>>>> 4/17/2026 2:48:24 AM VerifyShellProperties_ContentSwitch Start
>>>>> 4/17/2026 2:48:30 AM VerifyShellProperties_ContentSwitch Stop
  Passed VerifyShellProperties_ContentSwitch [5 s]
>>>>> 4/17/2026 2:48:30 AM VerifyShellProperties_TabSwitch Start
>>>>> 4/17/2026 2:48:36 AM VerifyShellProperties_TabSwitch Stop
  Passed VerifyShellProperties_TabSwitch [6 s]
>>>>> 4/17/2026 2:48:36 AM BackButton_TapBackArrow_NoCommand_NavigatesBack Start
>>>>> 4/17/2026 2:48:39 AM BackButton_TapBackArrow_NoCommand_NavigatesBack Stop
  Passed BackButton_TapBackArrow_NoCommand_NavigatesBack [2 s]
>>>>> 4/17/2026 2:48:39 AM RelativeRoute_Detail1ToNavTest1 Start
>>>>> 4/17/2026 2:48:41 AM RelativeRoute_Detail1ToNavTest1 Stop
  Passed RelativeRoute_Detail1ToNavTest1 [2 s]
>>>>> 4/17/2026 2:48:41 AM ForwardNavigation_NavTest1ToNavTest2 Start
>>>>> 4/17/2026 2:48:42 AM ForwardNavigation_NavTest1ToNavTest2 Stop
>>>>> 4/17/2026 2:48:42 AM BackAndForwardNavigation_NavTest2ToNavTest3 Start
  Passed ForwardNavigation_NavTest1ToNavTest2 [1 s]
>>>>> 4/17/2026 2:48:43 AM BackAndForwardNavigation_NavTest2ToNavTest3 Stop
>>>>> 4/17/2026 2:48:43 AM DoubleBackNavigation_NavTest3ToDetail1 Start
  Passed BackAndForwardNavigation_NavTest2ToNavTest3 [985 ms]
>>>>> 4/17/2026 2:48:44 AM DoubleBackNavigation_NavTest3ToDetail1 Stop
>>>>> 4/17/2026 2:48:44 AM AbsoluteRoute_Detail1ToPage2 Start
>>>>> 4/17/2026 2:48:45 AM AbsoluteRoute_Detail1ToPage2 Stop
>>>>> 4/17/2026 2:48:45 AM ContextualRoute_FromDetail1_SubDetailShowsDetail1Context Start
  Passed DoubleBackNavigation_NavTest3ToDetail1 [1 s]
  Passed AbsoluteRoute_Detail1ToPage2 [1 s]
>>>>> 4/17/2026 2:48:52 AM ContextualRoute_FromDetail1_SubDetailShowsDetail1Context Stop
  Passed ContextualRoute_FromDetail1_SubDetailShowsDetail1Context [6 s]
>>>>> 4/17/2026 2:48:52 AM ContextualRoute_FromDetail2_SubDetailShowsDetail2Context Start
>>>>> 4/17/2026 2:48:55 AM ContextualRoute_FromDetail2_SubDetailShowsDetail2Context Stop
  Passed ContextualRoute_FromDetail2_SubDetailShowsDetail2Context [3 s]
>>>>> 4/17/2026 2:48:55 AM RouteRegistration_UnregisterRoute_NavigationFails Start
>>>>> 4/17/2026 2:48:57 AM RouteRegistration_UnregisterRoute_NavigationFails Stop
>>>>> 4/17/2026 2:48:57 AM RouteRegistration_ReRegisterRoute_NavigationSucceeds Start
  Passed RouteRegistration_UnregisterRoute_NavigationFails [1 s]
>>>>> 4/17/2026 2:48:59 AM RouteRegistration_ReRegisterRoute_NavigationSucceeds Stop
  Passed RouteRegistration_ReRegisterRoute_NavigationSucceeds [2 s]
>>>>> 4/17/2026 2:48:59 AM CancelNavigation_NavigationIsBlocked_StaysOnMain Start
>>>>> 4/17/2026 2:49:05 AM CancelNavigation_NavigationIsBlocked_StaysOnMain Stop
  Passed CancelNavigation_NavigationIsBlocked_StaysOnMain [5 s]
>>>>> 4/17/2026 2:49:05 AM DeferralNavigation_NavigationCompletes_AfterDelay Start
>>>>> 4/17/2026 2:49:14 AM DeferralNavigation_NavigationCompletes_AfterDelay Stop
  Passed DeferralNavigation_NavigationCompletes_AfterDelay [8 s]
>>>>> 4/17/2026 2:49:14 AM TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo Start
>>>>> 4/17/2026 2:49:16 AM TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo Stop
  Passed TabStack_OnPushAsync_EnterOptionsPage_TabStackCountIsTwo [2 s]
>>>>> 4/17/2026 2:49:16 AM TabStack_OnPushAsync_SubPage1_TabStackCountIsThree Start
>>>>> 4/17/2026 2:49:17 AM TabStack_OnPushAsync_SubPage1_TabStackCountIsThree Stop
  Passed TabStack_OnPushAsync_SubPage1_TabStackCountIsThree [1 s]
>>>>> 4/17/2026 2:49:17 AM TabStack_OnPushAsync_SubPage2_TabStackCountIsFour Start
>>>>> 4/17/2026 2:49:19 AM TabStack_OnPushAsync_SubPage2_TabStackCountIsFour Stop
  Passed TabStack_OnPushAsync_SubPage2_TabStackCountIsFour [1 s]
>>>>> 4/17/2026 2:49:19 AM TabStack_OnPopAsync_SubPage2_TabStackCountIsThree Start
>>>>> 4/17/2026 2:49:20 AM TabStack_OnPopAsync_SubPage2_TabStackCountIsThree Stop
>>>>> 4/17/2026 2:49:20 AM TabStack_OnPopToRootAsync_ReturnsToMainPage Start
  Passed TabStack_OnPopAsync_SubPage2_TabStackCountIsThree [1 s]
>>>>> 4/17/2026 2:49:22 AM TabStack_OnPopToRootAsync_ReturnsToMainPage Stop
>>>>> 4/17/2026 2:49:22 AM TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage Start
  Passed TabStack_OnPopToRootAsync_ReturnsToMainPage [1 s]
>>>>> 4/17/2026 2:49:24 AM TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage Stop
  Passed TabStack_OnInsertPageBefore_InsertsPageBelowCurrentPage [2 s]
>>>>> 4/17/2026 2:49:24 AM TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo Start
>>>>> 4/17/2026 2:49:25 AM TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo Stop
>>>>> 4/17/2026 2:49:25 AM TabStack_OnRemovePage_NoOp_WhenNothingToRemove Start
  Passed TabStack_OnRemovePage_RemovesInsertedPage_CountBackToTwo [1 s]
>>>>> 4/17/2026 2:49:26 AM TabStack_OnRemovePage_NoOp_WhenNothingToRemove Stop
>>>>> 4/17/2026 2:49:26 AM TabStack_GetNavigationStack_TabStackMatchesNavigationStack Start
  Passed TabStack_OnRemovePage_NoOp_WhenNothingToRemove [986 ms]
>>>>> 4/17/2026 2:49:32 AM TabStack_GetNavigationStack_TabStackMatchesNavigationStack Stop
  Passed TabStack_GetNavigationStack_TabStackMatchesNavigationStack [5 s]
>>>>> 4/17/2026 2:49:32 AM NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage Start
>>>>> 4/17/2026 2:49:36 AM NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage Stop
  Passed NavEvents_Pop_NavigatingEvent_SourceIsPopAndCurrentIsPreviousPage [4 s]
>>>>> 4/17/2026 2:49:36 AM NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped Start
>>>>> 4/17/2026 2:49:37 AM NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped Stop
>>>>> 4/17/2026 2:49:37 AM NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage Start
  Passed NavEvents_Pop_NavigatedEvent_CurrentIsLandedPagePreviousIsPopped [698 ms]
>>>>> 4/17/2026 2:49:39 AM NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage Stop
>>>>> 4/17/2026 2:49:39 AM NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage Start
  Passed NavEvents_Push_NavigatingEvent_SourceIsPushAndCurrentIsPushedFromPage [1 s]
>>>>> 4/17/2026 2:49:39 AM NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage Stop
>>>>> 4/17/2026 2:49:39 AM NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged Start
  Passed NavEvents_Push_NavigatedEvent_CurrentIsNewPagePreviousIsSourcePage [600 ms]
>>>>> 4/17/2026 2:49:45 AM NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged Stop
  Passed NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged [5 s]
>>>>> 4/17/2026 2:49:45 AM NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain Start
>>>>> 4/17/2026 2:49:45 AM NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain Stop
>>>>> 4/17/2026 2:49:45 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged Start
  Passed NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain [576 ms]
>>>>> 4/17/2026 2:49:47 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged Stop
>>>>> 4/17/2026 2:49:47 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged Start
>>>>> 4/17/2026 2:49:47 AM NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged Stop
>>>>> 4/17/2026 2:49:47 AM NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged Start
  Passed NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged [1 s]
  Passed NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged [379 ms]
>>>>> 4/17/2026 2:49:51 AM NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged Stop
  Passed NavEvents_ShellContentChanged_NavigatingEvent_SourceIsShellContentChanged [3 s]
>>>>> 4/17/2026 2:49:51 AM NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 Start
>>>>> 4/17/2026 2:49:52 AM NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 Stop
  Passed NavEvents_ShellContentChanged_NavigatedEvent_CurrentIsContent2PreviousIsContent1 [1 s]
>>>>> 4/17/2026 2:49:52 AM NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged Start
>>>>> 4/17/2026 2:49:56 AM NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged Stop
  Passed NavEvents_ShellSectionChanged_NavigatingEvent_SourceIsShellSectionChanged [3 s]
>>>>> 4/17/2026 2:49:56 AM NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA Start
>>>>> 4/17/2026 2:49:58 AM NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA Stop
  Passed NavEvents_ShellSectionChanged_NavigatedEvent_CurrentIsTabBPreviousIsTabA [1 s]
>>>>> 4/17/2026 2:49:58 AM NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot Start
>>>>> 4/17/2026 2:50:02 AM NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot Stop
  Passed NavEvents_PopToRoot_NavigatingEvent_SourceIsPopToRoot [3 s]
>>>>> 4/17/2026 2:50:02 AM NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot Start
>>>>> 4/17/2026 2:50:02 AM NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot Stop
>>>>> 4/17/2026 2:50:02 AM PassData_StringQueryParam_ReceivedByIQueryAttributable Start
  Passed NavEvents_PopToRoot_NavigatedEvent_CurrentIsMainSourceIsPopToRoot [370 ms]
>>>>> 4/17/2026 2:50:08 AM PassData_StringQueryParam_ReceivedByIQueryAttributable Stop
  Passed PassData_StringQueryParam_ReceivedByIQueryAttributable [6 s]
>>>>> 4/17/2026 2:50:08 AM PassData_DictionaryParam_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:50:13 AM PassData_DictionaryParam_ReceivedByIQueryAttributable Stop
  Passed PassData_DictionaryParam_ReceivedByIQueryAttributable [5 s]
>>>>> 4/17/2026 2:50:13 AM PassData_SingleUseParams_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:50:18 AM PassData_SingleUseParams_ReceivedByIQueryAttributable Stop
  Passed PassData_SingleUseParams_ReceivedByIQueryAttributable [4 s]
>>>>> 4/17/2026 2:50:18 AM PassData_StringQueryParam_BothLabelsReceiveSameValue Start
>>>>> 4/17/2026 2:50:24 AM PassData_StringQueryParam_BothLabelsReceiveSameValue Stop
  Passed PassData_StringQueryParam_BothLabelsReceiveSameValue [5 s]
>>>>> 4/17/2026 2:50:24 AM PassData_BackwardsNavigation_PassesDataToPreviousPage Start
>>>>> 4/17/2026 2:50:26 AM PassData_BackwardsNavigation_PassesDataToPreviousPage Stop
  Passed PassData_BackwardsNavigation_PassesDataToPreviousPage [2 s]
>>>>> 4/17/2026 2:50:26 AM PassData_MultipleStringParams_ReceivedByIQueryAttributable Start
>>>>> 4/17/2026 2:50:34 AM PassData_MultipleStringParams_ReceivedByIQueryAttributable Stop
  Passed PassData_MultipleStringParams_ReceivedByIQueryAttributable [8 s]
>>>>> 4/17/2026 2:50:34 AM PassData_IQueryAttributable_ReceivesDecodedValues Start
>>>>> 4/17/2026 2:50:40 AM PassData_IQueryAttributable_ReceivesDecodedValues Stop
  Passed PassData_IQueryAttributable_ReceivesDecodedValues [5 s]
>>>>> 4/17/2026 2:50:40 AM PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack Start
>>>>> 4/17/2026 2:50:49 AM PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack Stop
  Passed PassData_Dictionary_PersistsWhenNavigatingToIntermediatePageAndBack [8 s]
>>>>> 4/17/2026 2:50:49 AM BackButtonBehavior_TextOverride_CustomTextShownOnBackButton Start
>>>>> 4/17/2026 2:50:56 AM BackButtonBehavior_TextOverride_CustomTextShownOnBackButton Stop
  Passed BackButtonBehavior_TextOverride_CustomTextShownOnBackButton [6 s]
>>>>> 4/17/2026 2:50:56 AM BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter Start
>>>>> 4/17/2026 2:51:03 AM BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter Stop
  Passed BackButtonBehavior_CommandParameter_CommandFiresWithCorrectParameter [7 s]
>>>>> 4/17/2026 2:51:03 AM BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate Start
>>>>> 4/17/2026 2:51:13 AM BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate Stop
  Passed BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate [9 s]
>>>>> 4/17/2026 2:51:13 AM BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks Start
>>>>> 4/17/2026 2:51:15 AM BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks Stop
  Passed BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks [2 s]
>>>>> 4/17/2026 2:51:15 AM BackButtonBehavior_IconOverride_CustomIconShownOnBackButton Start
>>>>> 4/17/2026 2:51:19 AM BackButtonBehavior_IconOverride_CustomIconShownOnBackButton Stop
  Passed BackButtonBehavior_IconOverride_CustomIconShownOnBackButton [4 s]
NUnit Adapter 4.5.0.0: Test execution complete

Test Run Successful.
Total tests: 52
     Passed: 52
 Total time: 3.3662 Minutes

⚠️ Issues found
  • ShellNavigationFeatureTests PASSED without fix (should fail) — tests don't catch the bug
📁 Fix files reverted (1 files)
  • src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs

@MauiBot MauiBot added s/agent-review-incomplete s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Apr 10, 2026
@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor Author

🚦 Gate - Test Before and After Fix

📊 Expand Full Gate9afb518 · iOS26 snap added

It seems the pre-fix gate failure occurred on an iOS 18 simulator. I validated the test locally on both iOS 18 and iOS 26:

  • iOS 18 – The test passed even without the fix.
  • iOS 26 – The test failed without the fix, as expected.

On iOS 18, the test passed even without the fix, since this issue occurs only on the iOS 26 simulator. Therefore, the gate test failure on iOS 18 before the fix was expected.

@MauiBot MauiBot added s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates labels Apr 17, 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 limit it to iOS 26+ only

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor Author

Could you limit it to iOS 26+ only

@kubaflo , _sendPopPending is only applicable for iOS 26+, so an additional condition is not required.

@kubaflo kubaflo changed the base branch from main to inflight/current April 20, 2026 21:46
@kubaflo kubaflo merged commit d098eec into dotnet:inflight/current Apr 20, 2026
26 of 36 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR7 milestone Apr 20, 2026
PureWeen pushed a commit that referenced this pull request Apr 22, 2026
…te UITest fails (#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR #28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
#34617

Note : 
Existing PR #34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
@dotnet dotnet deleted a comment from MauiBot Apr 22, 2026
PureWeen pushed a commit that referenced this pull request Apr 28, 2026
…te UITest fails (#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR #28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
#34617

Note : 
Existing PR #34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
PureWeen pushed a commit that referenced this pull request Apr 29, 2026
…te UITest fails (#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR #28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
#34617

Note : 
Existing PR #34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
github-actions Bot pushed a commit that referenced this pull request May 6, 2026
…te UITest fails (#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR #28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
#34617

Note : 
Existing PR #34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
PureWeen pushed a commit that referenced this pull request May 19, 2026
<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue details: 

**Failed case**: Issue33356NavigateShouldOccur

### Root Cause

On iOS 26+, _sendPopPending was introduced to prevent duplicate back
navigation caused by changed UINavigationBardelegate behavior. However,
in two early-return paths (BackButtonBehavior.IsEnabled == false and
Shell.SendBackButtonPressed() == true), the flag was set to true but
never reset, causing subsequent back navigations to be ignored.

### Fix Description

Reset _sendPopPending to false before returning from the affected
early-return paths in SendPop(). This ensures the navigation guard is
always released when GoToAsync("..") is not dispatched.

**Note:** The changes in this PR have already been merged into the
inflight/Candidate branch.

PR link: #34890
@kubaflo kubaflo added the s/agent-gate-failed AI could not verify tests catch the bug label May 20, 2026
PureWeen added a commit that referenced this pull request May 21, 2026
…ShownOnBackButton on iOS 26 (#35566)

<!-- Please let the below note in for people that find this PR -->
> [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Issue

UI test `BackButtonBehavior_IconOverride_CustomIconShownOnBackButton`
fails on iOS 26 (vlatest) on the `release/10.0.1xx-sr7` branch.

- Build:
[1427432](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1427432)
(`maui-pr-uitests` on SR7 head `bdca474345`)
- Failed twice (both attempts) — deterministic, not flaky
- Failure: `System.TimeoutException : Timed out waiting for element...`
at `ShellNavigationFeatureTests.cs:line 922`
- Other platforms (Android API 30, iOS 18.5, MacCatalyst) all pass

### Root cause

PR #35521 backported the `_sendPopPending` product fix from #34890 to
SR7 and **removed** the `Assert.Ignore` from tests 50 and 51 (since the
product is now fixed and those tests should pass on iOS 26).

It left in place an obsolete iOS 26 workaround in test 52:

```csharp
[Test, Order(52)]
public void BackButtonBehavior_IconOverride_CustomIconShownOnBackButton()
{
    if (iOS26OrHigher)
    {
        NavigateToDetail1AndWait();   // ← obsolete after #35521
    }
    App.WaitForElement("Detail1GoBackButton");
    ...
```

That workaround was originally needed when test 51 was being skipped on
iOS 26 (so test 52 started from Main and had to navigate to Detail1
itself).

Now that #35521 un-ignored test 51, the flow on iOS 26 is:
1. Test 51 runs, calls `NavigateToDetail1AndWait()` and ends with
`ShellScreenshot()` — UI is on **Detail1**, no reset
2. Test 52 starts on Detail1, hits `if (iOS26OrHigher)` and tries to
navigate **Main → Detail1**
3. But we're already on Detail1, so `NavigateToDetail1Button` isn't
visible → `TimeoutException`

This is purely a test state-leak bug — not a product regression.

### Fix

Remove the now-redundant `iOS26OrHigher` block from test 52. After the
removal, test 52 starts by tapping `Detail1GoBackButton` directly, which
is correct because:
- Test 51 leaves the UI on Detail1
- `Detail1GoBackButton` is a custom page-content button (created via
`ShellNavHelper.CreateNavButton(..., "Detail1GoBackButton")` in
`ShellNavigationControlPage.xaml.cs`), **not** the shell back arrow — it
is unaffected by test 51's `IsVisibleButton` toggle (which sets
`BackButtonBehavior.IsVisible=false` on the shell back arrow)

### Diff

```diff
 [Test, Order(52)]
 public void BackButtonBehavior_IconOverride_CustomIconShownOnBackButton()
 {
-    if (iOS26OrHigher)
-    {
-        NavigateToDetail1AndWait();
-    }
     App.WaitForElement("Detail1GoBackButton");
     App.Tap("Detail1GoBackButton");
     ...
```

### Follow-up (main)

`main` and `net11.0` have the **opposite** asymmetry: the product fix
(`_sendPopPending` reset) is already there, but tests 50 and 51 still
carry the `Assert.Ignore` (so iOS 26 coverage for those scenarios is
silently skipped). When those `Assert.Ignore` lines get removed, the
same workaround should also be removed from test 52 — otherwise main
will hit the same failure this PR fixes here.

### Validation

- Tested locally: only the obsolete branch is removed; remaining test
body matches the iOS 18.5 / Android / MacCatalyst flow that already
passes
- The 4 deleted lines were dead code on every other platform anyway
(`iOS26OrHigher` is false there)
- No product code touched

Co-authored-by: Copilot <[email protected]>
github-actions Bot pushed a commit that referenced this pull request May 25, 2026
…te UITest fails (#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR #28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
#34617

Note : 
Existing PR #34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
devanathan-vaithiyanathan added a commit to devanathan-vaithiyanathan/maui that referenced this pull request Jun 1, 2026
…te UITest fails (dotnet#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR dotnet#28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
dotnet#34617

Note : 
Existing PR dotnet#34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes dotnet#34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
@PureWeen PureWeen mentioned this pull request Jun 2, 2026
PureWeen added a commit that referenced this pull request Jun 2, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 85 commits with various improvements,
bug fixes, and enhancements.


## Button
- [Android, iOS] Button: Fix VisualState properties not restored when
leaving custom state by @BagavathiPerumal in
#33346
  <details>
  <summary>🔧 Fixes</summary>

- [Button VisualStates do not
work](#19690)
  </details>

## CollectionView
- Fix CollectionView grid spacing updates for first row and column by
@KarthikRajaKalaimani in #34527
  <details>
  <summary>🔧 Fixes</summary>

- [[MAUI] I2_Vertical grid for horizontal Item Spacing and Vertical Item
Spacing - horizontally updating the spacing only applies to the second
column](#34257)
  </details>

- CarouselView: Fix cascading PositionChanged/CurrentItemChanged events
on collection update by @praveenkumarkarunanithi in
#31275
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] CurrentItemChangedEventArgs and PositionChangedEventArgs
Not Working Properly in
CarouselView](#29529)
  </details>

- [Windows] Fixed ItemSpacing doesn't work in Carousel View by
@SubhikshaSf4851 in #30014
  <details>
  <summary>🔧 Fixes</summary>

- [ItemSpacing on CarouselView is not applied on
Windows.](#29772)
  </details>

- Fix CollectionView not scrolling to top on iOS status bar tap by
@jfversluis in #34687
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] UICollectionView ScrollToTop does not
work](#19866)
  </details>

- [iOS] Fixed CollectionView Scroll Jitter for TextType HTML Labels by
@SubhikshaSf4851 in #34383
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView scrolling is jittery when ItemTemplate contains Label
with TextType="Html" in .NET
10](#33065)
  </details>

- Fix CollectionView Header is not visible when ItemsSource is not set
and an EmptyView is set in iOS, Mac platform by @KarthikRajaKalaimani in
#34989
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView Header is not visible when ItemsSource is not set and
EmptyView is set in iOS, Mac
platform](#34897)
  </details>

- [Android] Fix CollectionView EmptyView not displayed correctly by
@KarthikRajaKalaimani in #34956
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] CollectionView - EmptyView not displayed
correctly](#34861)
  </details>

- [iOS] Fix CollectionView ScrollOffset not resetting when ItemsSource
changes by @SyedAbdulAzeemSF4852 in
#34488
  <details>
  <summary>🔧 Fixes</summary>

- [[IOS] CollectionView ScrollOffset does not reset when the ItemSource
is changed in iOS.](#26366)
- [Re-enable Issue7993 test on iOS/Catalyst - CollectionView scroll
position not reset when updating
ItemsSource](#33500)
  </details>

- [Revert] [iOS] Fixed CollectionView Scroll Jitter for TextType HTML
Labels by @SubhikshaSf4851 in #35341

## Core Lifecycle
- [Android] Fix NRE in ContainerView when Android Context is null during
lifecycle transition by @rmarinho in
#34901
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] NullReferenceException in NavigationRootManager.Connect
when mapping Window
content](#34900)
  </details>

## DateTimePicker
- [Android] Fix for TimePicker Dialog doesn't update the layout when
rotating the device with dialog open by @HarishwaranVijayakumar in
#31910
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] TimePicker Dialog doesn't update the layout when rotating
the device with dialog
open](#31658)
  </details>

- [Android, iOS] Fixed TimePicker FlowDirection Not Applied Across
Platforms by @Dhivya-SF4094 in #30369
  <details>
  <summary>🔧 Fixes</summary>

- [TimePicker FlowDirection Not Working on All
Platforms](#30192)
  </details>

- [Windows] Fixed TimePicker CharacterSpacing issue by @SubhikshaSf4851
in #30533
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] TimePicker CharacterSpacing Property Not Working on
Windows](#30199)
  </details>

- [MacCatalyst] Fix DatePicker Opened/Closed events not being raised by
@SubhikshaSf4851 in #34970
  <details>
  <summary>🔧 Fixes</summary>

- [[MacCatalyst] DatePicker Opened and Closed events are not raised on
Mac platform](#34848)
  </details>

## Dialogalert
- [Android] Fix AlertDialog, ActionSheet, and Prompt render with
Material 2 styles when Material 3 is enabled by @HarishwaranVijayakumar
in #35121
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] AlertDialog, ActionSheet, and Prompt render with Material 2
styles when Material 3 is
enabled](#35119)
  </details>

## Docs
- docs: Add UITesting-Guide, ReleasePlanning, and ReleaseProcess to
docs/README.md index by @PureWeen in
#35195

- docs: Fix hardcoded path and add library overview in Essentials.AI
README by @PureWeen in #35194

- docs: Update branch reference from net10.0 to net11.0 in
DEVELOPMENT.md by @PureWeen in #35193

## Drawing
- Fix Path Rendering Issue Inside StackLayout When Margin Is Set by
@Shalini-Ashokan in #28071
  <details>
  <summary>🔧 Fixes</summary>

- [Path does not render if it has
Margin](#13801)
  </details>

- Fixed FlowDirection property not working on Drawable control and
GraphicsView by @Dhivya-SF4094 in
#34557
  <details>
  <summary>🔧 Fixes</summary>

- [[Android, Windows, iOS, macOS] FlowDirection property not working on
BoxView Control](#34402)
  </details>

- [iOS & Mac] Fix image tile misalignment in GraphicsView ImagePaint by
@SubhikshaSf4851 in #34935
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Image resized with ResizeMode.Fit is not rendered correctly in
GraphicsView](#34755)
  </details>

- Fix Shadow does not honour Styles by @KarthikRajaKalaimani in
#35081
  <details>
  <summary>🔧 Fixes</summary>

- [Shadow does not honour
Styles](#19560)
  </details>

## Entry
- [iOS/macCatalyst] Fix Entry and Editor BackgroundColor reset when set
to null by @Shalini-Ashokan in #34741
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS, Maccatalyst] Entry & Editor BackgroundColor not reset to
Null](#34611)
  </details>

- [Windows] Fix password Entry crash when setting text on empty field by
@praveenkumarkarunanithi in #33891
  <details>
  <summary>🔧 Fixes</summary>

- [[WinUI] Password Obfuscation causes unhandled
crash](#33334)
  </details>

## Essentials
- [Essentials] Use mean sea level altitude on Android API 34+ by
@KitKeen in #35097
  <details>
  <summary>🔧 Fixes</summary>

- [Add support for MslAltitudeMeters in Essentials Geolocation on
Android](#27554)
  </details>

## Flyout
- Fixed Flyout Not Displayed on Android When FlyoutWidth Is Set Only for
Desktop via OnIdiom by @NanthiniMahalingam in
#29028
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] FlyoutWidth with OnIdiom shows no
flyout](#13243)
  </details>

- Revert "[Windows] Fix Flyout/Locked mode header collapse regression
causing UI test failures on candidate branch" by @kubaflo in
#35339

- Revert "Revert "[Windows] Fix Flyout/Locked mode header collapse
regression causing UI test failures on candidate branch"" by @kubaflo in
#35342

## Flyoutpage
- Fix [Android] Title of FlyOutPage is not updating anymore after
showing a NonFlyOutPage by @KarthikRajaKalaimani in
#34839
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Title of FlyOutPage is not updating anymore after showing a
NonFlyOutPage](#33615)
  </details>

## Label
- [iOS] Fix span Tap gesture on wrapped Label lines in iOS 26+ by
@SubhikshaSf4851 in #34640
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS]Span TapGestureRecognizer does not work on the second line of
the span, if the span is wrapped to the next
line](#34504)
  </details>

## Layout
- Fixed Stacklayout is not rendered when clip is applied and StackLayout
placed child to the Border control in iOS/ Mac platform by
@KarthikRajaKalaimani in #33330
  <details>
  <summary>🔧 Fixes</summary>

- [[Mac/iOS] StackLayout fails to render content while applying Clip,
and the layout is placed inside a Border with Background in .NET
MAUI](#33241)
  </details>

## Map
- Fix Changing Location on a Pin does nothing by @NirmalKumarYuvaraj in
#30201
  <details>
  <summary>🔧 Fixes</summary>

- [[Maps] [Regression from Xamarin.Forms.Maps] Changing Location on a
Pin does nothing](#12916)
  </details>

## Mediapicker
- [iOS] Fix HEIC images picked via PickPhotosAsync not displayed by
@HarishwaranVijayakumar in #34954
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] [Regression] HEIC images picked via PickPhotosAsync not
displayed](#34953)
  </details>

- [Android] Fix MediaPicker.PickPhotosAsync UnauthorizedAccessException
on API 28 and below by @HarishwaranVijayakumar in
#34981
  <details>
  <summary>🔧 Fixes</summary>

- [MediaPicker.PickPhotos fails to modify image, tries to load original
source, fails to load source on Android
9.0](#34889)
  </details>

## Pages
- [iOS] Fix ContentPage with ToolbarItem Clicked event leaks when
presented as modal page by @devanathan-vaithiyanathan in
#35009
  <details>
  <summary>🔧 Fixes</summary>

- [ContentPage with ToolbarItem Clicked event leaks when presented as
modal page](#34892)
  </details>

## Platform
- [Android] Fix OnBackButtonPressed not invoked for Shell by
@Dhivya-SF4094 in #35150
  <details>
  <summary>🔧 Fixes</summary>

- [On Screen Back Button Does Not Fire OnBackButtonPressed in
Android](#9095)
  </details>

## RadioButton
- Fix RadioButtonGroup not working with ContentView by @Dhivya-SF4094 in
#34781
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButtonGroup not working with
ContentView](#34759)
  </details>

- [Windows] Fix for RadioButton BorderColor and BorderWidth not updated
at runtime by @SyedAbdulAzeemSF4852 in
#28335
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButton Border color not working for focused visual
state](#15806)
  </details>

- [iOS] Fix RadioButton BackgroundColor bleeding outside CornerRadius by
@SyedAbdulAzeemSF4852 in #34844
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] RadioButton BackgroundColor bleeds outside
CornerRadius](#34842)
  </details>

## SafeArea
- [iOS] Fix stale bottom safe area after changing SafeAreaEdges with
keyboard open by @praveenkumarkarunanithi in
#35083
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] ContentPage bottom has white space after changing SafeAreaEdges
while keyboard is open](#34846)
  </details>

## ScrollView
- [Windows] Fix Preserve ScrollView offsets when Orientation changes to
Neither by @SubhikshaSf4851 in #34827
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] ScrollView offsets do not preserve when Orientation changes
to Neither](#34671)
  </details>

## Searchbar
- [iOS] Fix SearchBar unexpected left margin in iPad windowed mode on 26
Version by @SubhikshaSf4851 in #34704
  <details>
  <summary>🔧 Fixes</summary>

- [in iPad windowed mode SearchBar adds left margin equivaltent to
SafeAreaInsets when placed inside
grid](#34551)
  </details>

## Shell
- [Windows] Fix for Shell.FlyoutBehavior="Flyout" forces the title
height space above the tab bar even if the page title is empty by
@BagavathiPerumal in #30382
  <details>
  <summary>🔧 Fixes</summary>

- [(Windows) Shell.FlyoutBehavior="Flyout" forces the title height space
above the tab bar even if the page title is
empty](#30254)
  </details>

- Fix Shell flyout items scrolling behind FlyoutHeader on iOS by @Qythyx
in #34936
  <details>
  <summary>🔧 Fixes</summary>

- [Shell flyout items scroll behind FlyoutHeader on
iOS](#34925)
  </details>

- [iOS, Mac] Fix Shell.CurrentState.Location stale in OnNavigated after
GoToAsync by @Vignesh-SF3580 in
#34880
  <details>
  <summary>🔧 Fixes</summary>

- [Shell.OnNavigated not called for route
navigation](#34662)
  </details>

- [iOS26]Fix
BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate UITest
fails by @devanathan-vaithiyanathan in
#34890
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
test fails with
TimeoutException](#34771)
  </details>

- [iOS] Fix Shell page memory leak when using TitleView with x:Name by
@Shalini-Ashokan in #35082
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Title view memory
leak](#34975)
  </details>

- [Material 3] Fix Material 2 color flash in AppBar when switching tabs
for the first time by @Dhivya-SF4094 in
#35117
  <details>
  <summary>🔧 Fixes</summary>

- [Material 3: AppBar briefly displays Material 2 colors when switching
tabs for the first time](#35116)
  </details>

- [Android] Fix Shell/TabbedPage "More" BottomSheet uses hard-coded M2
colors when Material3 is enabled by @HarishwaranVijayakumar in
#35129
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Shell/TabbedPage "More" BottomSheet uses hard-coded M2
colors when Material3 is
enabled](#35127)
  </details>

- [Android] Shell: Fix top-tab unselected text visibility in Material 3
light theme by @SyedAbdulAzeemSF4852 in
#35128
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Shell top-tab unselected text appears too faint in Material
3 light theme](#35125)
  </details>

- Fix Shell.Items.Clear() memory leak by disconnecting child handlers on
removal (#34898) by @Shalini-Ashokan in
#35031
  <details>
  <summary>🔧 Fixes</summary>

- [Shell.Items.Clear() does not disconnect handlers
correctly](#34898)
  </details>

- [iOS&Mac] Fix Shell SearchHandler Query update on Initial load by
@SubhikshaSf4851 in #35008
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS&Mac] Shell SearchHandler Query not shown in search bar on
initial load](#35005)
  </details>

## SwipeView
- [iOS,MacCatalyst] Fix for SwipeView.Open() throwing an
ArgumentException on the second programmatic call by @BagavathiPerumal
in #34982
  <details>
  <summary>🔧 Fixes</summary>

- [[net 11.0][iOS,MacCatalyst] SwipeView.Open() throws ArgumentException
on second programmatic
call](#34917)
  </details>

- [Android/iOS] Fix SwipeItem visibility change causing double command
execution in Execute mode by @praveenkumarkarunanithi in
#35087
  <details>
  <summary>🔧 Fixes</summary>

- [Changing visibility on an SwipeItem causes multiple items to be
executed](#7580)
  </details>

## Switch
- [iOS] Fix Switch ThumbColor reset on iOS 26+ theme changes. by
@Shalini-Ashokan in #33953
  <details>
  <summary>🔧 Fixes</summary>

- [Switch ThumbColor not Initialized Using VisualStateManager on iOS
Device](#33783)
- [I9-On macOS 26.2, the "Animate scroll" button is white by default on
iOS and Maccatalyst
platforms.](#33767)
  </details>

## TabbedPage
- [Windows] TabbedPage: Refresh layout when NavigationView size changes
by @BagavathiPerumal in #26217
  <details>
  <summary>🔧 Fixes</summary>

- [TabbedPage - ScrollView not allowing scrolling when it
should](#26103)
- [TabbedPage App on resize hides page bottom
content](#11402)
- [Grid overflows child ContentPage of parent TabbedPage on initial load
and when resizing on
Windows](#20028)
  </details>

- [Android] Material 3 Fixed BottomNavigationView overflowing in Tabbed
page by @NirmalKumarYuvaraj in #35064
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Material3 - TabbedPage bottom tabs overflowing the
contents](#35063)
  </details>

- [Windows] Fix for Multiple Tabs Being Selected in WinUI TabbedPage by
@SyedAbdulAzeemSF4852 in #33312
  <details>
  <summary>🔧 Fixes</summary>

- [WinUI TabbedPage can have multiple tabs
selected](#31799)
  </details>

## Theming
- [iOS] Fix StaticResource Hot Reload crash on iOS by @StephaneDelcroix
in #35020
  <details>
  <summary>🔧 Fixes</summary>

- [The maui app quit and no errors in error list after editing
ResourceDictionary XAML file on iOS Simulator with MAUI SR6
10.0.60](#35018)
  </details>

## Toolbar
- [Windows] Fix for CS1061 build error caused by missing
HasMenuBarContent property in MauiToolbar by @BagavathiPerumal in
#35040

## Tooling
- Fix VisualStateGroups duplicate name crash with implicit styles
(#34716) by @StephaneDelcroix in
#34719
  <details>
  <summary>🔧 Fixes</summary>

- [SourceGen: VisualStateManager.VisualStateGroups causes 'Names must be
unique' at startup](#34716)
  </details>

## WebView
- Refactor the HybridWebView and properly support complex parameters by
@mattleibow in #32491

- [Android] Fix WebView scrolling inside ScrollView by @Shalini-Ashokan
in #33133
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] WebView's content does not scroll when placed inside a
ScrollView](#32971)
  </details>


<details>
<summary>🔧 Infrastructure (1)</summary>

- [Windows] Fix Narrator announcing ContentView children twice when
Description is set by @praveenkumarkarunanithi in
#33979
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] SemanticProperties.Description announced twice when set on
focusable container cell (Label
inside)](#33373)
  </details>

</details>

<details>
<summary>🧪 Testing (14)</summary>

- [Testing] SafeArea Feature Matrix Test Cases for ContentPage by
@TamilarasanSF4853 in #34877
- [Windows] Fix CollectionView ScrollTo related test cases failed in CI
by @HarishwaranVijayakumar in #34907
  <details>
  <summary>🔧 Fixes</summary>

- [[Testing][Windows]CollectionView ScrollTo related test cases failed
in CI](#34772)
  </details>
- [Testing] Fixed Build error on inflight/ candidate PR 35234 by
@HarishKumarSF4517 in #35241
- Fix CI for
ValidateKeyboardRuntime_SwitchContainerToSoftInput_WhileKeyboardOpen
test failure in May 4th Candidate by @devanathan-vaithiyanathan in
#35307
- [Windows] Fix Flyout/Locked mode header collapse regression causing UI
test failures on candidate branch by @BagavathiPerumal in
#35312
- [iOS/macCatalyst] [Candidate Fix] Editor shadow and theme regression
caused by BackgroundColor reset on initial handler connection by
@Shalini-Ashokan in #35343
- [Testing] Fixed UI test image failure in PR 35234 - [30/03/2026]
Candidate - 1 by @HarishKumarSF4517 in
#35325
- [iOS] Fix ShellFeatureMatrix test failures on candidate branch by
@Vignesh-SF3580 in #35346
- [Windows] Fix Issue29529VerifyPreviousPositionOnInsert test failure on
candidate branch by @praveenkumarkarunanithi in
#35398
- [Android] [Candidate Fix] Shell: Fix handler disconnect timing to
preserve WebView navigation and memory leak fix by @Shalini-Ashokan in
#35417
- [Testing]Revert 'Fix Preserve ScrollView offsets when Orientation
changes to Neither' by @TamilarasanSF4853 in
#35412
- [Windows] Fix VerifyAllIndicatorDotsShowShadowsWhenIndicatorSize test
failure on candidate branch by @praveenkumarkarunanithi in
#35458
- [Testing] Fixed test failure in PR 35234 - [05/08/2026] Candidate by
@TamilarasanSF4853 in #35362
- [Testing] Fixed test failure in PR 35234 - [05/04/2026] Candidate - 3
by @TamilarasanSF4853 in #35639

</details>

<details>
<summary>📦 Other (6)</summary>

- [UIKit] Avoid useless measure invalidation propagation cycles by
@albyrock87 in #33459
- BindableObject property access micro-optimizations by @albyrock87 in
#33584
- Extract filename from DisplayName and add extension if missing by
@mattleibow in #35050
- [core] Add keyed-DI screenshot extensibility for 3rd-party platform
backends by @Redth in #35096
  <details>
  <summary>🔧 Fixes</summary>

- [`ViewExtensions.CaptureAsync(IView)` and `IPlatformScreenshot` need
extensibility for third-party platform
backends](#34266)
  </details>
- Fix MainThread throwing on custom platform backends by @Redth in
#35070
  <details>
  <summary>🔧 Fixes</summary>

- [`MainThread.BeginInvokeOnMainThread` throws on custom platform
backends - Common UI-thread marshaling pattern crashes; `Dispatcher`
works but isn't the documented/recommended
path](#34101)
  </details>
- Tests: Add 11 missing UnitConverters unit tests by @PureWeen in
#35191

</details>

<details>
<summary>📝 Issue References</summary>

Fixes #7580, Fixes #9095, Fixes #11402, Fixes #12916, Fixes #13243,
Fixes #13801, Fixes #15806, Fixes #19560, Fixes #19690, Fixes #19866,
Fixes #20028, Fixes #26103, Fixes #26366, Fixes #27554, Fixes #29529,
Fixes #29772, Fixes #30192, Fixes #30199, Fixes #30254, Fixes #31658,
Fixes #31799, Fixes #32971, Fixes #33065, Fixes #33241, Fixes #33334,
Fixes #33373, Fixes #33500, Fixes #33615, Fixes #33767, Fixes #33783,
Fixes #34101, Fixes #34257, Fixes #34266, Fixes #34402, Fixes #34504,
Fixes #34551, Fixes #34611, Fixes #34662, Fixes #34671, Fixes #34716,
Fixes #34755, Fixes #34759, Fixes #34771, Fixes #34772, Fixes #34842,
Fixes #34846, Fixes #34848, Fixes #34861, Fixes #34889, Fixes #34892,
Fixes #34897, Fixes #34898, Fixes #34900, Fixes #34917, Fixes #34925,
Fixes #34953, Fixes #34975, Fixes #35005, Fixes #35018, Fixes #35063,
Fixes #35116, Fixes #35119, Fixes #35125, Fixes #35127

</details>

**Full Changelog**:
main...inflight/candidate
@PureWeen PureWeen modified the milestones: .NET 10 SR7, .NET 10 SR8 Jun 11, 2026
Shalini-Ashokan pushed a commit to Shalini-Ashokan/maui that referenced this pull request Jun 15, 2026
…te UITest fails (dotnet#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR dotnet#28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
dotnet#34617

Note : 
Existing PR dotnet#34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes dotnet#34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
Dhivya-SF4094 pushed a commit to Dhivya-SF4094/maui that referenced this pull request Jun 15, 2026
…te UITest fails (dotnet#34890)

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
In the issue, mentioned two tests are failed

* BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
* BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks
 
## BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
The test failed due to PR dotnet#28734. The PR included a fix for the
BackButton IsEnabled issue, but it resolves the issue on iOS 18, not on
iOS 26. Further improvements are needed for iOS26, which was added in
the PR.
### Root Cause
On iOS 26, the Shell back button test failed because tapping the back
button while BackButtonBehavior.IsEnabled was false left the Shell
renderer in a pending back-navigation state. After the button was
enabled again, the next back tap was still blocked, which caused the
test to time out instead of returning to the main page.


**Description of Change**

<!-- Enter description of the fix in this section -->

The fix clears the pending back-navigation flag when a disabled back tap
is ignored, so back navigation works correctly once the button is
re-enabled.


## BackButtonBehavior_IsVisible_False_ProgrammaticNavStillWorks

Above test fail related to base snapshot, which was addressed in PR
dotnet#34617

Note : 
Existing PR dotnet#34850  was closed due to some conflicts issue 


### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes dotnet#34771 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [ ] Android
- [ ] Windows
- [x] iOS
- [ ] Mac


| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/e2634737-0c08-4f4b-a93e-51a2ec03a7e5"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/4e75a218-91c2-4951-b4fb-241ec2de2aac"
width="300" height="600"> |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-controls-shell Shell Navigation, Routes, Tabs, Flyout community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration platform/ios s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-gate-failed AI could not verify tests catch the bug s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) version/iOS-26

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS 26] BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate test fails with TimeoutException

7 participants