[iOS] Respect InputTransparent when updating UserInteractionEnabled - #36305
Conversation
Respect InputTransparent when updating UserInteractionEnabled for non-UIControl iOS views so parent IsEnabled toggles do not make transparent layouts block touches. Keep disabled non-UIControl views from receiving interactions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36305Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36305" |
There was a problem hiding this comment.
Pull request overview
Updates iOS platform view mapping so UserInteractionEnabled for non-UIControl views stays consistent with both IsEnabled and InputTransparent, preventing InputTransparent="True" layouts/views from becoming touch-blocking after IsEnabled toggles.
Changes:
- iOS:
UpdateIsEnabledfor non-UIControlviews now setsUserInteractionEnabled = IsEnabled && !InputTransparent. - iOS:
UpdateInputTransparentfor non-UIControlviews now also incorporatesIsEnabledto avoid mapper-order inconsistencies. - Adds an iOS-specific unit test file intended to cover
UpdateIsEnabled/UpdateInputTransparentcombinations forUIViewandLayoutView.
Show a summary per file
| File | Description |
|---|---|
| src/Core/src/Platform/iOS/ViewExtensions.cs | Adjusts iOS interaction enablement logic for non-UIControl views to respect both IsEnabled and InputTransparent, including mapper-order consistency. |
| src/Core/tests/UnitTests/ViewExtensionsIOSTests.cs | Adds tests for the new iOS interaction behavior (note: currently gated by #if IOS). |
Copilot's findings
- Files reviewed: 2/2 changed files
- Comments generated: 1
| #if IOS | ||
| using Microsoft.Maui.Handlers; | ||
| using Microsoft.Maui.Platform; | ||
| using UIKit; | ||
| #endif |
This comment has been minimized.
This comment has been minimized.
|
Sure, I can have a look. |
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 2 findings
See inline comments for details.
| { | ||
| // Non-UIControl views (like UICollectionView) only get interaction disable | ||
| platformView.UserInteractionEnabled = view.IsEnabled; | ||
| platformView.UserInteractionEnabled = view.IsEnabled && !view.InputTransparent; |
There was a problem hiding this comment.
🔍 AI-Generated Review (multi-model)
[major] Handler Mapper and Property Patterns — This makes wrapper UserInteractionEnabled depend on IsEnabled, but ViewHandler.MapIsEnabled only remaps PlatformView, while MapInputTransparent remaps both the iOS WrapperView container and PlatformView. Concrete failing sequence: a wrapped view with InputTransparent=false is disabled, MapInputTransparent sets the wrapper non-interactive (IsEnabled && !InputTransparent); when the view is later re-enabled, MapIsEnabled updates only the platform view, leaving the wrapper stale and hit-testing still blocked. Please synchronize the iOS/MacCatalyst container whenever IsEnabled changes (and when a container is created), e.g. by centralizing wrapper interaction mapping and calling it from MapIsEnabled, MapInputTransparent, and MapContainerView.
| @@ -0,0 +1,91 @@ | |||
| using Xunit; | |||
|
|
|||
| #if IOS | |||
There was a problem hiding this comment.
🔍 AI-Generated Review (multi-model)
[major] Regression Prevention and Test Coverage — These tests are compiled only when the IOS symbol is defined, but Core.UnitTests is built as the shared net10.0 unit-test assembly in the saved gate logs, so the filter matched zero tests and this file provides no effective regression coverage. Move this coverage to the iOS Core device-test infrastructure or otherwise ensure the test project targets an iOS TFM so the regression actually runs.
|
@jfversluis I now tested this with GnollHack directly, and it does work, that is, (1) with the MainGrid.IsEnabled commands being back in to FadeToBlack and FadeFromBlack and (2) using the build artifacts from this pull request (GnollHack says the version of the MAUI is then 10.0.90). So I strongly believe the issue has been now fixed. I think @MauiBot might have had some additional suggestions, though. |
Synchronize container hit testing when IsEnabled changes or a container is created. Move iOS interaction coverage from shared unit tests into Core device tests so the iOS target compiles it. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
@janne-hmp thank you for verifying the first artifact build. I pushed a follow-up commit to address the automated review feedback: wrapper/container hit testing is now synchronized when Because this changes the related iOS hit-testing mapper path and will produce new artifacts, could you please retest the latest artifacts once the new build is available and confirm the GnollHack/#36059 flow still works? |
|
@jfversluis Sure, I can check the situation with the new artifacts too when they are available. |
|
@jfversluis I tested this again with the new artifacts ending .56 (and made sure to clear the nuget cache), and the fix still works when I enable MainGrid.IsEnabled statements. So it looks like that the issue has been fixed, and I believe @MauiBot should be satisfied now, too. |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
This comment has been minimized.
This comment has been minimized.
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@jfversluis — new AI review results are available based on this last commit:
0eba45a. To request a fresh review after new comments or commits, comment/review rerun.
🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix
Gate Result: ✅ PASSED
Platform: IOS · Base: main · Merge base: 39af9158
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent) Category=View |
✅ FAIL — 358s | ✅ PASS — 224s |
🔴 Without fix — 📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent): FAIL ✅ · 358s
(truncated to last 15,000 chars)
26-07-03 02:29:01.082725-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843130] at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843190] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843230] 2026-07-03 02:29:01.082829-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843270] 2026-07-03 02:29:01.082910-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843310] 2026-07-03 02:29:01.082988-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843340] 2026-07-03 02:29:01.083103-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843360] 2026-07-03 02:29:01.083207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent Test name: ContainerUserInteractionTracksIsEnabledAndInputTransparent(inputTransparent: False, expectedWhenEnabled: True) Test case: ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843410] Assembly: [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843530] Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843570] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843600] 2026-07-03 02:29:01.083285-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Actual: True Exception stack traces: at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass10_0.<ContainerUserInteractionTracksIsEnabledAndInputTransparent>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843640] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843670] 2026-07-03 02:29:01.083491-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843710] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843790] 2026-07-03 02:29:01.083622-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843830] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843870] Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843900] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843920] value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0847470] 2026-07-03 02:29:01.084530-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0894730] 2026-07-03 02:29:01.089223-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToLabel
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0953390] 2026-07-03 02:29:01.095006-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToLabel
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0977390] 2026-07-03 02:29:01.097503-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToImage
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0987590] 2026-07-03 02:29:01.098523-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToImage
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0998130] 2026-07-03 02:29:01.099602-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] NonUIControlDisablesUserInteractionWhenIsEnabledFalse
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3441920] 2026-07-03 02:29:01.343713-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Semantic Heading is set correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3508120] 2026-07-03 02:29:01.350327-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3556150] 2026-07-03 02:29:01.355285-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3579960] 2026-07-03 02:29:01.357647-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3585890] 2026-07-03 02:29:01.358247-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [IGNORED] View Renders To Image
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3614700] 2026-07-03 02:29:01.360622-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] DisconnectHandlerDoesntCrash
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3649400] 2026-07-03 02:29:01.364616-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Subsequent PlatformArrange triggers MapFrame
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3680920] 2026-07-03 02:29:01.367207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToButton
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3693800] 2026-07-03 02:29:01.368938-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ToolTipTextAppliedToButton
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6542220] 2026-07-03 02:29:01.653909-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] ContainerView Adds And Removes
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6615260] 2026-07-03 02:29:01.661262-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6624630] 2026-07-03 02:29:01.662272-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6638890] 2026-07-03 02:29:01.663487-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6709030] 2026-07-03 02:29:01.670649-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6713830] 2026-07-03 02:29:01.671213-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6718310] 2026-07-03 02:29:01.671671-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6724150] 2026-07-03 02:29:01.672170-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6744150] 2026-07-03 02:29:01.674164-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6749370] 2026-07-03 02:29:01.674747-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6764260] 2026-07-03 02:29:01.676207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6773310] 2026-07-03 02:29:01.677151-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6820050] 2026-07-03 02:29:01.681770-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] [PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6832180] 2026-07-03 02:29:01.682940-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Microsoft.Maui.DeviceTests.ViewHandlerTests 1.1910215 ms
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6853790] 2026-07-03 02:29:01.685151-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Failed tests:
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6855060] 2026-07-03 02:29:01.685282-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] 1) [FAIL] NonUIControlKeepsInputTransparentAfterIsEnabledToggles Test name: NonUIControlKeepsInputTransparentAfterIsEnabledToggles
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6855410] Assembly: [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856570] 2026-07-03 02:29:01.685491-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856790] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856840] Actual: True Exception stack traces: at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass9_0.<NonUIControlKeepsInputTransparentAfterIsEnabledToggles>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6857730] 2026-07-03 02:29:01.685616-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858430] 2026-07-03 02:29:01.685702-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858520] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858570] at Microsoft.Maui.DeviceTests.ViewHandlerTests.NonUIControlKeepsInputTransparentAfterIsEnabledToggles()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858610] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858660] Execution time: 0.0049635
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6859320] 2026-07-03 02:29:01.685762-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6859500] value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6860870] 2026-07-03 02:29:01.685857-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] 2) [FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent Test name: ContainerUserInteractionTracksIsEnabledAndInputTransparent(inputTransparent: False, expectedWhenEnabled: True) Test case: ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861380] Assembly: [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861490] Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861570] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861900] 2026-07-03 02:29:01.685999-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Actual: True Exception stack traces: at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass10_0.<ContainerUserInteractionTracksIsEnabledAndInputTransparent>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862600] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862740] 2026-07-03 02:29:01.686106-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862810] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864310] 2026-07-03 02:29:01.686204-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864700] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864830] Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864910] Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864980] value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6871110] 2026-07-03 02:29:01.686963-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Tests run: 69 Passed: 66 Inconclusive: 0 Failed: 2 Ignored: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6932740] 2026-07-03 02:29:01.692936-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6935340] 2026-07-03 02:29:01.693197-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Tests run: 1153 Passed: 66 Inconclusive: 0 Failed: 2 Ignored: 1085
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.core.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.core.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "K206DNJGQ1-1",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-56B15D00-C97A-4625-B7E5-20814CAA4AC9.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260703_022826.log",
"type": "devicelist"
},
{
"name": "test-ios-simulator-64_26.0-20260703_022833.log",
"type": "testlog"
},
{
"name": "iPhone 11 Pro.log",
"type": "systemlog"
},
{
"name": "Microsoft.Maui.Core.DeviceTests.log",
"type": "systemlog"
},
{
"name": "com.microsoft.maui.core.devicetests.log",
"type": "applicationlog"
},
{
"name": "xunit-test-ios-simulator-64_26.0-20260703_022833.xml",
"type": "xmllog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 1 (TESTS_FAILED)
Passed: 0
Failed: 0
Tests completed with exit code: 1
🟢 With fix — 📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent): PASS ✅ · 224s
(truncated to last 15,000 chars)
pplication/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : monoeg_g_log
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222280] 0x10c37a848 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222330] 0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222360] 0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222400] 0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232000] 0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232250] 0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232330] 0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232530] 0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232590] 0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232630] 0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232670] 0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232780] 0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232980] 0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233100] 0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233150] 0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233200] 0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233260] 0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234210] 0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234270] 0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234340] 0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234410] 0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234450] 0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234490] 0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235280] 0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235470] 0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235550] 0x10c37efac - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_aot_get_method
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235640] 0x10c303f3c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_compile_method_with_opt
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235730] 0x10c301cac - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_runtime_invoke
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1238660] 0x10c4c2910 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_runtime_invoke_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1238940] 0x10c475818 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : create_exception_two_strings
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1239010] 0x10c47559c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_exception_from_name_two_strings_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1239840] 0x10c44f96c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_runtime_init_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240050] 0x10c30163c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mini_init
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240110] 0x10c358d1c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_init
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240150] 0x10bfc1014 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_bridge_initialize
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240250] 0x10bfc21e8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_main
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2029480] 0x106e9adb0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/Microsoft.Maui.Core.DeviceTests : main
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2029930] 0x10bd293d0 - Unknown
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030020] 0x10bac7da4 - Unknown
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030080]
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030130] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030180] Basic Fault Address Reporting
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030230] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030280] Memory around native instruction pointer (0x10bec488c):0x10bec487c c0 03 5f d6 c0 03 5f d6 10 29 80 d2 01 10 00 d4 .._..._..)......
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030330] 0x10bec488c e3 00 00 54 fd 7b bf a9 fd 03 00 91 16 e3 ff 97 ...T.{..........
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030520] 0x10bec489c bf 03 00 91 fd 7b c1 a8 c0 03 5f d6 c0 03 5f d6 .....{...._..._.
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031160] 0x10bec48ac 70 0a 80 d2 01 10 00 d4 e3 00 00 54 fd 7b bf a9 p..........T.{..
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031250]
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031290] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031330] Managed Stacktrace:
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031360] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031400] at <unknown> <0xffffffff>
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031430] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.core.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.core.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "K206DNJGQ1-1",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "apple",
"device": "iPhone 11 Pro",
"deviceOsVersion": "26.0",
"files": [
{
"name": "test-ios-simulator-64_26.0-56B15D00-C97A-4625-B7E5-20814CAA4AC9.log",
"type": "executionlog"
},
{
"name": "list-ios-simulator-64_26.0-20260703_023209.log",
"type": "devicelist"
},
{
"name": "iPhone 11 Pro.log",
"type": "systemlog"
},
{
"name": "Microsoft.Maui.Core.DeviceTests.log",
"type": "systemlog"
},
{
"name": "com.microsoft.maui.core.devicetests.log",
"type": "applicationlog"
}
]
}
<<XHARNESS_RESULT_END>>
XHarness exit code: 0
Passed: 0
Failed: 0
Tests completed successfully
📁 Fix files reverted (2 files)
src/Core/src/Handlers/View/ViewHandler.cssrc/Core/src/Platform/iOS/ViewExtensions.cs
📱 UI Tests — ViewBaseTests
Detected UI test categories: ViewBaseTests
❌ Deep UI tests — 13 passed, 99 failed across 1 category on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
ViewBaseTests |
13/112 (99 ❌) | 198 diff PNGs |
❌ ViewBaseTests — 99 failed tests
Image_ClipWithGeometryGroup
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithGeometryGroup() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 335
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.Run
...
Border_ClipWithStrokeColorBlue
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeColorBlue() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 71
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.R
...
DarkTheme_CheckBox_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_CheckBox_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 67
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Image_ClipWithLineSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithLineSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 351
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.R
...
FirstCustomPageWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 216
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at
...
VisualTransform_ScaleXWithAnchorYAndRotationY
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_ScaleXWithAnchorYAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_ScaleXWithAnchorYAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the
...
VerifyBackgroundColorCleared
System.InvalidOperationException :
Snapshot different than baseline: VerifyBackgroundColorCleared.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyBackgroundColorCleared.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachmen
...
LightTheme_Switch_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.LightTheme_Switch_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 185
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
DarkTheme_SearchBar_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_SearchBar_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 266
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Sys
...
Image_ClipWithRotation
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 811
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.RuntimeM
...
VisualTransform_IsVisible
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or d
...
DarkTheme_EditorAndPlaceholderColor_VerifyVisualState
System.InvalidOperationException :
Snapshot different than baseline: DarkTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: DarkTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a a bug),
...
DefaultContentWithFlowDirection
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithFlowDirection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 172
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Sys
...
VisualTransform_Rotation
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_Rotation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_Rotation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
VisualTransform_ScaleYWithAnchorXAndRotationY
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_ScaleYWithAnchorXAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_ScaleYWithAnchorXAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the
...
VisualTransform_RotationXWithScaleX
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See
...
Image_ClipWithEllipseGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithEllipseGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 303
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.R
...
Border_ClipWithStrokeThickness
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeThickness() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 52
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.R
...
DefaultContentWithWidthRequest
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithWidthRequest() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 132
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Syst
...
Button_ClipWithImageSource
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithImageSource() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 223
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.Runt
...
Button_ClipWithScale
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithScale() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 892
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.RuntimeMet
...
Image_ClipWithPolyQuadraticBezierSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithPolyQuadraticBezierSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 447
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Syst
...
SecondCustomPageWithBackgroundColorChanged
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.SecondCustomPageWithBackgroundColorChanged() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 304
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args
...
VerifyBackgroundColorSet
System.InvalidOperationException :
Snapshot different than baseline: VerifyBackgroundColorSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyBackgroundColorSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
FirstCustomPageWithFlowDirection
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithFlowDirection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 245
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at Sy
...
DefaultContentWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 146
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Ref
...
VisualTransform_Scale
System.InvalidOperationException :
Snapshot different than baseline: VisualTransform_Scale.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VisualTransform_Scale.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download
...
Image_ClipWithQuadraticBezierSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithQuadraticBezierSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 431
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.R
...
DefaultContentWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 106
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at S
...
DarkTheme_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 40
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
(+69 more — see TRX in artifact)
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)
📋 Pre-Flight — Context & Validation
Issue: #36059 - [iOS] SKCanvasView and SKGLView become nonresponsive to taps and clicks after upgrade on .NET MAUI 10.0.60 (while toggling IsEnabled of parent Grid)
PR: #36305 - [iOS] Respect InputTransparent when updating UserInteractionEnabled
Platforms Affected: iOS, MacCatalyst (code paths); reported repro on iOS
Files Changed: 2 implementation, 1 test
Key Findings
- Issue repro toggles a parent
Grid.IsEnabledfalse/true and leaves SKCanvasView/SKGLView nonresponsive on iOS; issue comments identify #31403/non-UIControlUserInteractionEnabledbehavior as the likely regression. - PR changes iOS
UIView.UpdateIsEnabledandUpdateInputTransparentso non-UIControlhit testing respects bothIsEnabledandInputTransparent. - PR also synchronizes iOS/MacCatalyst
WrapperViewcontainers from baseViewHandlermapper paths and adds Core iOS device tests for non-UIControland container behavior. ghis unauthenticated in this environment, so PR comments/checks were gathered through local state and unauthenticated public GitHub API where available.
Code Review Summary
Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 0 | Suggestions: 1
Key code review findings:
- ✗
src/Core/src/Handlers/View/ViewHandler.cs:340-343, 629-632— container synchronization still misses handlers that override iOSIsEnabledmappings, andWrapperView.UpdateInputTransparent(handler, view)can ignoreIsEnabledfor non-EditorITextInputcases. - ℹ
src/Core/tests/DeviceTests/Handlers/View/ViewHandlerTests.iOS.cs:84— missing final newline.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #36305 | Combine IsEnabled and InputTransparent in iOS non-UIControl paths and call container sync from base view mapper paths. |
✅ PASSED (Gate) | ViewHandler.cs, ViewExtensions.cs, ViewHandlerTests.iOS.cs |
Original PR; gate result was provided as already passed. |
🔬 Code Review — Deep Analysis
Code Review — PR #36305
Independent Assessment
What this changes: iOS/MacCatalyst UserInteractionEnabled now combines IsEnabled and InputTransparent for non-UIControl views, and attempts to keep WrapperView containers synchronized when IsEnabled, InputTransparent, or container creation changes.
Inferred motivation: Fix stale hit-testing after toggling IsEnabled, especially for wrapped non-UIControl views such as SKCanvasView/SKGLView scenarios.
Reconciliation with PR Narrative
Author claims: Fixes #36059; preserves #31403/#19771; adds iOS Core device-test coverage.
Agreement/disagreement: The general root cause matches the code, and prior test-placement feedback was addressed by moving coverage to device tests. However, the container sync is incomplete for iOS handlers overriding IsEnabled and for ITextInput wrapper updates.
Prior Review Reconciliation
| Prior ❌ Error Finding | Source | Status | Evidence |
|---|---|---|---|
Wrapper not synchronized when IsEnabled changes |
MauiBot inline [major] |
✅ Partially fixed / ❌ Still incomplete | Base ViewHandler.MapIsEnabled now calls container sync, but iOS handlers such as SearchBarHandler/EditorHandler override IsEnabled and bypass it. |
| iOS unit tests did not run | MauiBot inline [major] |
✅ Fixed | The old unit-test file is gone; current coverage is in Core.DeviceTests iOS file. |
Blast Radius Assessment
- Runs for all instances: No; iOS/MacCatalyst handler/platform paths only.
- Startup impact: Low; mapper-time property updates.
- Static/shared state: No.
- Handler/platform risk: Medium; touch/hit-testing plumbing affects wrapped controls.
CI Status
- Required-check result:
gh pr checks --requiredunavailable becauseghis unauthenticated. - Public check-runs:
maui-prpassed;maui-pr-uitestsfailed;maui-pr-devicetestsfailed. - Classification: undetermined; public AzDO timelines show Windows UI/device failures, not clearly PR-caused.
- Action taken: invoked
azdo-build-investigator;ci-analysisskill unavailable; confidence capped low.
Findings
❌ Error — Container synchronization still misses real handlers/text inputs
src/Core/src/Handlers/View/ViewHandler.cs:340-343, 629-632
The new base MapIsEnabled call only helps handlers that use ViewHandler.MapIsEnabled. iOS handlers such as SearchBarHandler and EditorHandler override IsEnabled, so a clipped/shadowed SearchBar/Editor container can still remain stale when IsEnabled changes.
Also, the helper delegates to wrapper.UpdateInputTransparent(handler, view). For ITextInput non-Editor views, that path ignores view.IsEnabled, so a clipped Entry with IsEnabled=false, InputTransparent=false, IsReadOnly=false leaves the wrapper interactive.
The wrapper should compute container hit-testing independently, e.g. view.IsEnabled && !view.InputTransparent, and iOS IsEnabled overrides need equivalent container sync.
💡 Suggestion — Missing final newline
src/Core/tests/DeviceTests/Handlers/View/ViewHandlerTests.iOS.cs:84
The file ends without a newline.
Failure-Mode Probing
- Clipped
StubBase: works; new tests cover this path. - Clipped
Entry, disabled: wrapper remainsUserInteractionEnabled=trueviaITextInputbranch. - Clipped
SearchBar, disabled: custom mapper bypasses base container sync. - Handler reconnect/container creation: base path initializes wrappers, but only for handlers reaching the base mapper.
Verdict: NEEDS_CHANGES
Confidence: low
Summary: The intended fix is directionally correct, but it does not cover important iOS wrapped-control paths. CI is also red/partially unavailable, so this cannot be considered merge-ready.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix | Centralize iOS effective hit-test synchronization so wrappers use view.IsEnabled && !view.InputTransparent, and update handler-specific iOS paths that bypass base ViewHandler.MapIsEnabled (SearchBar, Editor, CollectionView). |
✅ PASS | 5 files | Addresses the pre-flight code-review error around stale wrappers for overridden handler mappings and ITextInput wrapper behavior. |
| PR | PR #36305 | Combine IsEnabled and InputTransparent in iOS non-UIControl paths and call container sync from base view mapper paths. |
✅ PASSED (Gate) | 3 files | Original PR; simpler and already gate-verified, but code review found incomplete wrapper synchronization. |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| gpt-5.5 / maui-expert-reviewer | 1 | Yes | Proposed moving wrapper synchronization into iOS platform hit-test helpers so handler-specific IsEnabled overrides also synchronize containers. |
Exhausted: No — stopped after candidate #1 because it passed the iOS regression test run and is demonstrably more complete than the PR fix for the uncovered wrapper/handler failure mode.
Selected Fix: Candidate #1 — It preserves the PR's core non-UIControl behavior while covering wrapper synchronization gaps for iOS handlers that bypass base mapper call order. It is broader than the PR and should be paired with targeted text-input regression tests before adoption.
🏁 Report — Final Recommendation
Comparative Report — PR #36305
Candidates compared
| Rank | Candidate | Regression result | Assessment |
|---|---|---|---|
| 1 | pr-plus-reviewer |
✅ PASS by equivalence to STEP 5a try-fix-1; sandbox build succeeded |
Best candidate. Preserves the PR's base non-UIControl fix and applies expert feedback so wrapper hit testing also stays synchronized for ITextInput and handler-specific iOS mapper paths. |
| 2 | try-fix-1 |
✅ PASS — iOS View device tests passed (68 passed, 0 failed) |
Technically equivalent to pr-plus-reviewer and demonstrably fixes the same gaps. Ranked below only because pr-plus-reviewer represents the PR fix plus accepted expert feedback, so it remains the PR-lineage candidate. |
| 3 | pr |
✅ Gate passed | Directionally correct and regression-gate verified, but expert review found unresolved correctness gaps: stale wrappers for iOS handlers that override MapIsEnabled, and non-Editor ITextInput wrapper paths still ignoring IsEnabled. |
No STEP 5a candidates failed regression tests. If any had failed, they would be ranked below all passing candidates.
Winning candidate
Winner: pr-plus-reviewer
The raw PR fix should not win because it leaves important iOS/Mac Catalyst wrapped-control paths inconsistent. try-fix-1 and pr-plus-reviewer are effectively the same fix; choosing pr-plus-reviewer records that the PR can be made mergeable by applying the expert reviewer's actionable feedback rather than replacing it with an unrelated alternative.
Recommended action
Update PR #36305 with the pr-plus-reviewer patch before merge. The patch should be paired with targeted follow-up coverage for wrapped ITextInput and iOS handlers with custom MapIsEnabled implementations if time allows, but the candidate is still the strongest available fix because it addresses the confirmed correctness gaps and keeps the original regression passing.
🧭 Next Steps — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…otnet#36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from dotnet#36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes dotnet#36059 Keeps the behavior fixed by dotnet#31403 / dotnet#19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… ScrollView interaction state after IsEnabled toggles (#36628) <!-- 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 Details - On iOS and macOS, four tests — CollectionViewScrollsWhenRefreshViewDisabled, ScrollViewInitiallyNotEnabledThenEnabled, ProgressSpinnerWorksWhenReEnabled, and VerifyCollectionViewIsEnableState — are failing in candidate PR #36411 due to PR #36305. ### Root Cause - PR #36305 updated ViewExtensions.UpdateIsEnabled to compute UserInteractionEnabled using both IsEnabled and InputTransparent for non-UIControl views. However, because CollectionView, RefreshView, and ScrollView override MapIsEnabled without invoking the shared implementation, they never adopted this new logic, causing inconsistent UserInteractionEnabled behavior across enable/disable state changes and resulting in failures in CollectionViewScrollsWhenRefreshViewDisabled, ProgressSpinnerWorksWhenReEnabled, VerifyCollectionViewIsEnableState, and ScrollViewInitiallyNotEnabledThenEnabled. ### Description of Change - Introduced a new UpdateInteractionState extension method in ViewExtensions.cs that centralizes the logic for setting UserInteractionEnabled based on both IsEnabled and InputTransparent, and updated both UpdateIsEnabled and UpdateInputTransparent to use this method. - Updated MapIsEnabled methods in handlers for ItemsViewHandler, ItemsViewHandler2, RefreshViewHandler, and ScrollViewHandler to call the base ViewHandler.MapIsEnabled, ensuring interaction state is always recomputed. ### Issues Fixed Fixes #36501 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | TestCase | Before | After | |----------|----------|----------| | CollectionViewScrollsWhenRefreshViewDisabled | <img src="https://github.com/user-attachments/assets/91d4a461-e7c8-4c5c-ae67-578e761fc2f8"> | <img src="https://github.com/user-attachments/assets/758235b2-2a60-4352-ba6d-f6303be4a451"> | | ScrollViewInitiallyNotEnabledThenEnabled | <img src="https://github.com/user-attachments/assets/5fafbe0c-3fb5-41e2-9ae0-2250003c099f"> | <img src="https://github.com/user-attachments/assets/29f70482-e7dc-4255-b9fe-1485d3a725c3"> | | ProgressSpinnerWorksWhenReEnabled | <img src="https://github.com/user-attachments/assets/0dee44b2-09b3-418e-bff9-ec5d3bb11f7d"> | <img src="https://github.com/user-attachments/assets/cdf9fc11-27fd-48ec-b91d-8b56e6dc83e0"> | |VerifyCollectionViewIsEnableState | <img src="https://github.com/user-attachments/assets/a5df9338-3fc8-4d47-8c32-a664e89b6471"> | <img src="https://github.com/user-attachments/assets/17215ea8-a215-4e08-b68c-ef251d02b995"> |
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…36305) <!-- 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! ### Description of Change Updates the iOS `ViewExtensions.UpdateIsEnabled` path for non-`UIControl` views to respect `InputTransparent` when setting `UserInteractionEnabled`. This prevents an `InputTransparent="True"` layout from becoming touch-blocking after a parent `IsEnabled` toggle, while preserving the previous fix that disabled non-`UIControl` views should not receive interactions. Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when `IsEnabled` changes or when a container is created, so `IsEnabled` and `InputTransparent` remain consistent regardless of mapper order. @janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent `Grid.IsEnabled`? ### Issues Fixed Fixes #36059 Keeps the behavior fixed by #31403 / #19771. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore` - Added iOS Core device-test coverage for `IsEnabled`, `InputTransparent`, and wrapper/container hit-testing combinations. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description of Change
Updates the iOS
ViewExtensions.UpdateIsEnabledpath for non-UIControlviews to respectInputTransparentwhen settingUserInteractionEnabled. This prevents anInputTransparent="True"layout from becoming touch-blocking after a parentIsEnabledtoggle, while preserving the previous fix that disabled non-UIControlviews should not receive interactions.Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when
IsEnabledchanges or when a container is created, soIsEnabledandInputTransparentremain consistent regardless of mapper order.@janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent
Grid.IsEnabled?Issues Fixed
Fixes #36059
Keeps the behavior fixed by #31403 / #19771.
Validation
dotnet build Microsoft.Maui.BuildTasks.slnfdotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restoreIsEnabled,InputTransparent, and wrapper/container hit-testing combinations.