Repository navigation
[Android] Fix blank gap when HasNavigationBar=false with SafeAreaEdges=None - #36072
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36072Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36072" |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
Validating /review tests on open PR #36072 surfaced a false-positive deterministic regression: the Android SDK 'platform-tools;35.0.2' provisioning flake ('Failed to find package') was labeled regressed-vs-base, inflating the regression count 9->7 and over-claiming PR causation on a purely environmental failure. Root cause: legRegressedVsBase latched across occurrences. The same failure sprayed onto two legs of the PR build -- one flaky on base (failed attempt 1, passed on retry => inconclusive-on-base) and one cleanly green on base. The clean-green leg latched legRegressed=true while the inconclusive-conflict signal from the other leg was dropped. Two layered guards, both FALSE-RED reductions only (a demoted failure falls to 'indeterminate'/NHI and can never become a false green): 1. Provisioning/infra signature guard: failures matching Android SDK package-fetch / avdmanager / disk-full signatures are environmental and nondeterministic, so they never set legRegressed. 2. Cross-leg conflict veto: if a failure regressed cleanly in one leg but was flaky (inconclusive) on base in another leg, suppress the clean-regression claim. Verified on #36072: 9->7 regressions (2 platform-tools demoted to indeterminate), verdict correctly stays 'Not ready' on the 7 genuine green-on-base/red-on-PR UI-test legs. Harness 167->178 assertions, green. SKILL.md attribution contract updated (inconclusive-on-base + the computed infra/flaky exclusions). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…es (demote+enrich only) The deterministic leg diff compares each PR leg to the ONE most recent completed base build, so a test that is flaky/regressed on the base BRANCH but happened to be green on that single build shows up as a false 'regressed-vs-base'. This is the single-base-build limitation called out when validating /review tests on open PRs. The repo already maintains a richer signal: the open '[ci-scan]' issues produced by the CI Failure Scanner (ci-status-* agentic workflow), which track recurring flakes, regressions, and build breaks on the main / net11.0 base branches across MANY builds, with explicit branch, affected legs, occurrence counts, and error signatures. The gatherer did not consult them. Wire ci-scan in as a DEMOTE + ENRICH signal only (never dismiss-to-green): - Get-CiScanIssues parses each open ci-scan issue into a matcher: branch family, class (recurring/regression/build-break), the set of test-name tokens it documents, affected-leg tokens, occurrence text, and a legScoped flag (whole-leg instability vs a single named test). - Test-CiScanMatch matches a failure by exact leaf test-name (precise) or, for legScoped issues only (OneTimeSetUp/mass/env/build-break), by affected-leg overlap. Branch family must match -- a main PR is never demoted by a net11.0 issue, and vice versa. - When the leg diff computed a clean single-base 'regressed-vs-base' AND ci-scan documents that exact test/leg failing on the base branch, the regression is demoted to 'indeterminate' (NHI) with ciScanDemoted=true. This is a false-RED reduction ONLY: a demoted failure still forbids a green verdict (ceiling stays >= NHI), so a ci-scan hit -- an LLM-generated, possibly-stale hint -- can never turn a red check green; it can only move an over-confident 'Not ready' down to 'needs a human'. The legScoped gate stops a single-test issue's incidental leg from over-demoting unrelated tests on a busy leg. Validated live on #36072: 4 Android API-30 regressions on the OneTimeSetUp- flaky leg (documented by #35958, 2+/10 builds on main) demoted to NHI; the 3 genuine off-leg regressions (DragAndDrop/Alerts/AcceptedOperationNone...) preserved; verdict correctly stays 'Not ready'. Unit harness: 23 matcher assertions (branch gate, exact-token, legScoped) + 13 in the main harness (now 191), all green. SKILL.md contract updated. Gatherer + SKILL.md are referenced by path (not inlined in the lock), so no workflow recompile. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run maui-pr-uitests , maui-pr-devicetests |
|
Azure Pipelines successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
Fixes an Android edge-to-edge inset regression where hiding the navigation bar (HasNavigationBar=false / Shell.NavBarIsVisible=false) could leave stale AppBarLayout padding, causing the top system inset to be incorrectly consumed and resulting in a blank gap when SafeAreaEdges=None.
Changes:
- Clear stale
AppBarLayoutpadding when the Android toolbar is hidden soMauiWindowInsetListenerno longer treats the app bar as “having content”. - Add Android UI test coverage for the NavigationPage push scenario tied to issue #34472.
- Add Android device tests (Shell + NavigationPage) and shared helpers to validate inset consumption behavior with synthetic top insets.
Reviewed changes
Copilot reviewed 6 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs | Clears AppBarLayout padding when hiding the toolbar to prevent top inset being consumed by stale padding. |
| src/Controls/tests/DeviceTests/ControlsHandlerTestBase.Android.cs | Adds reusable helpers to create synthetic insets and capture applied insets during device tests. |
| src/Controls/tests/DeviceTests/Elements/NavigationPage/NavigationPageTests.Android.cs | Adds a device regression test asserting app bar padding clears and top insets pass through when pushing a page with nav bar hidden. |
| src/Controls/tests/DeviceTests/Elements/Shell/ShellTests.Android.cs | Adds a device regression test asserting app bar padding clears and top insets pass through when Shell nav bar is hidden. |
| src/Controls/tests/TestCases.HostApp/Issues/Issue34472.cs | Adds a HostApp repro page for the NavigationPage SafeAreaEdges regression on Android. |
| src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue34472.cs | Adds an Android UI test validating consistent top positioning between pushed vs. main-page scenarios. |
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@praveenkumarkarunanithi — new AI review results are available based on this last commit:
15124a4. 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: ANDROID · Base: main · Merge base: 89a4e02d
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
📱 ControlsHandlerTestBase ControlsHandlerTestBase |
✅ FAIL — 2142s | ✅ PASS — 968s |
📱 NavigationPageTests (PushingToPageWithoutNavigationBarClearsAppBarInsetPadding) Category=NavigationPage |
✅ FAIL — 266s | ✅ PASS — 255s |
📱 ShellTests (HiddenShellNavigationBarClearsAppBarInsetPadding) Category=Shell |
✅ FAIL — 306s | ✅ PASS — 301s |
🖥️ Issue34472 Issue34472 |
✅ FAIL — 596s | ✅ PASS — 575s |
🔴 Without fix — 📱 ControlsHandlerTestBase: FAIL ✅ · 2142s
(truncated to last 15,000 chars)
[121/133] System.Threading.Thread.dll -> System.Threading.Thread.dll.so
[122/133] System.Text.Json.dll -> System.Text.Json.dll.so
[123/133] System.Threading.ThreadPool.dll -> System.Threading.ThreadPool.dll.so
[39/133] Xamarin.AndroidX.CursorAdapter.dll -> Xamarin.AndroidX.CursorAdapter.dll.so
[124/133] System.Threading.dll -> System.Threading.dll.so
[125/133] System.Xml.Linq.dll -> System.Xml.Linq.dll.so
[126/133] System.Xml.ReaderWriter.dll -> System.Xml.ReaderWriter.dll.so
[40/133] Xamarin.AndroidX.CustomView.dll -> Xamarin.AndroidX.CustomView.dll.so
[127/133] System.dll -> System.dll.so
[128/133] System.Xml.XDocument.dll -> System.Xml.XDocument.dll.so
[41/133] Xamarin.AndroidX.DrawerLayout.dll -> Xamarin.AndroidX.DrawerLayout.dll.so
[129/133] netstandard.dll -> netstandard.dll.so
[130/133] Mono.Android.Runtime.dll -> Mono.Android.Runtime.dll.so
[42/133] Xamarin.AndroidX.Fragment.dll -> Xamarin.AndroidX.Fragment.dll.so
[131/133] Java.Interop.dll -> Java.Interop.dll.so
[43/133] Xamarin.AndroidX.Lifecycle.Common.Jvm.dll -> Xamarin.AndroidX.Lifecycle.Common.Jvm.dll.so
[44/133] Xamarin.AndroidX.Lifecycle.LiveData.Core.dll -> Xamarin.AndroidX.Lifecycle.LiveData.Core.dll.so
[45/133] Xamarin.AndroidX.Lifecycle.ViewModel.Android.dll -> Xamarin.AndroidX.Lifecycle.ViewModel.Android.dll.so
[46/133] Xamarin.AndroidX.Lifecycle.ViewModelSavedState.Android.dll -> Xamarin.AndroidX.Lifecycle.ViewModelSavedState.Android.dll.so
[47/133] Xamarin.AndroidX.Loader.dll -> Xamarin.AndroidX.Loader.dll.so
[48/133] Xamarin.AndroidX.Navigation.Common.Android.dll -> Xamarin.AndroidX.Navigation.Common.Android.dll.so
[132/133] Mono.Android.dll -> Mono.Android.dll.so
[49/133] Xamarin.AndroidX.Navigation.Fragment.dll -> Xamarin.AndroidX.Navigation.Fragment.dll.so
[50/133] Xamarin.AndroidX.Navigation.Runtime.Android.dll -> Xamarin.AndroidX.Navigation.Runtime.Android.dll.so
[51/133] Xamarin.AndroidX.Navigation.UI.dll -> Xamarin.AndroidX.Navigation.UI.dll.so
[52/133] Xamarin.AndroidX.RecyclerView.dll -> Xamarin.AndroidX.RecyclerView.dll.so
[53/133] Xamarin.AndroidX.SavedState.SavedState.Android.dll -> Xamarin.AndroidX.SavedState.SavedState.Android.dll.so
[54/133] Xamarin.AndroidX.SwipeRefreshLayout.dll -> Xamarin.AndroidX.SwipeRefreshLayout.dll.so
[55/133] Xamarin.AndroidX.ViewPager.dll -> Xamarin.AndroidX.ViewPager.dll.so
[56/133] Xamarin.AndroidX.ViewPager2.dll -> Xamarin.AndroidX.ViewPager2.dll.so
[57/133] Xamarin.Google.Android.Material.dll -> Xamarin.Google.Android.Material.dll.so
[58/133] Xamarin.GooglePlayServices.Base.dll -> Xamarin.GooglePlayServices.Base.dll.so
[59/133] Xamarin.GooglePlayServices.Basement.dll -> Xamarin.GooglePlayServices.Basement.dll.so
[60/133] Xamarin.GooglePlayServices.Maps.dll -> Xamarin.GooglePlayServices.Maps.dll.so
[61/133] Xamarin.GooglePlayServices.Tasks.dll -> Xamarin.GooglePlayServices.Tasks.dll.so
[62/133] Xamarin.Kotlin.StdLib.dll -> Xamarin.Kotlin.StdLib.dll.so
[63/133] Xamarin.KotlinX.Coroutines.Core.Jvm.dll -> Xamarin.KotlinX.Coroutines.Core.Jvm.dll.so
[64/133] Xamarin.KotlinX.Serialization.Core.Jvm.dll -> Xamarin.KotlinX.Serialization.Core.Jvm.dll.so
[133/133] System.Private.CoreLib.dll -> System.Private.CoreLib.dll.so
[65/133] xunit.abstractions.dll -> xunit.abstractions.dll.so
[66/133] xunit.assert.dll -> xunit.assert.dll.so
[67/133] xunit.core.dll -> xunit.core.dll.so
[68/133] xunit.execution.dotnet.dll -> xunit.execution.dotnet.dll.so
[69/133] xunit.runner.utility.netcoreapp10.dll -> xunit.runner.utility.netcoreapp10.dll.so
[70/133] System.Collections.Concurrent.dll -> System.Collections.Concurrent.dll.so
[71/133] System.Collections.Immutable.dll -> System.Collections.Immutable.dll.so
[72/133] System.Collections.NonGeneric.dll -> System.Collections.NonGeneric.dll.so
[73/133] System.Collections.Specialized.dll -> System.Collections.Specialized.dll.so
[74/133] System.Collections.dll -> System.Collections.dll.so
[75/133] System.ComponentModel.Primitives.dll -> System.ComponentModel.Primitives.dll.so
[76/133] System.ComponentModel.TypeConverter.dll -> System.ComponentModel.TypeConverter.dll.so
[77/133] System.ComponentModel.dll -> System.ComponentModel.dll.so
[78/133] System.Console.dll -> System.Console.dll.so
[79/133] System.Diagnostics.Debug.dll -> System.Diagnostics.Debug.dll.so
[80/133] System.Diagnostics.DiagnosticSource.dll -> System.Diagnostics.DiagnosticSource.dll.so
[81/133] System.Diagnostics.Process.dll -> System.Diagnostics.Process.dll.so
[82/133] System.Diagnostics.Tools.dll -> System.Diagnostics.Tools.dll.so
[83/133] System.Diagnostics.TraceSource.dll -> System.Diagnostics.TraceSource.dll.so
[84/133] System.Diagnostics.Tracing.dll -> System.Diagnostics.Tracing.dll.so
[85/133] System.Drawing.Primitives.dll -> System.Drawing.Primitives.dll.so
[86/133] System.Drawing.dll -> System.Drawing.dll.so
[87/133] System.Formats.Asn1.dll -> System.Formats.Asn1.dll.so
[88/133] System.Globalization.dll -> System.Globalization.dll.so
[89/133] System.IO.Compression.Brotli.dll -> System.IO.Compression.Brotli.dll.so
[90/133] System.IO.Compression.dll -> System.IO.Compression.dll.so
[91/133] System.IO.FileSystem.dll -> System.IO.FileSystem.dll.so
[92/133] System.IO.Pipelines.dll -> System.IO.Pipelines.dll.so
[93/133] System.IO.dll -> System.IO.dll.so
[94/133] System.Linq.Expressions.dll -> System.Linq.Expressions.dll.so
[95/133] System.Linq.dll -> System.Linq.dll.so
[96/133] System.Memory.dll -> System.Memory.dll.so
[97/133] System.Net.Http.dll -> System.Net.Http.dll.so
[98/133] System.Net.NameResolution.dll -> System.Net.NameResolution.dll.so
[99/133] System.Net.Primitives.dll -> System.Net.Primitives.dll.so
[100/133] System.Net.Requests.dll -> System.Net.Requests.dll.so
[101/133] System.Net.Sockets.dll -> System.Net.Sockets.dll.so
[102/133] System.Numerics.Vectors.dll -> System.Numerics.Vectors.dll.so
[103/133] System.ObjectModel.dll -> System.ObjectModel.dll.so
[104/133] System.Private.Uri.dll -> System.Private.Uri.dll.so
[105/133] System.Private.Xml.Linq.dll -> System.Private.Xml.Linq.dll.so
[106/133] System.Private.Xml.dll -> System.Private.Xml.dll.so
[107/133] System.Reflection.Extensions.dll -> System.Reflection.Extensions.dll.so
[108/133] System.Reflection.TypeExtensions.dll -> System.Reflection.TypeExtensions.dll.so
[109/133] System.Reflection.dll -> System.Reflection.dll.so
[110/133] System.Runtime.Extensions.dll -> System.Runtime.Extensions.dll.so
[111/133] System.Runtime.InteropServices.RuntimeInformation.dll -> System.Runtime.InteropServices.RuntimeInformation.dll.so
[112/133] System.Runtime.InteropServices.dll -> System.Runtime.InteropServices.dll.so
[113/133] System.Runtime.Loader.dll -> System.Runtime.Loader.dll.so
[114/133] System.Runtime.Numerics.dll -> System.Runtime.Numerics.dll.so
[115/133] System.Runtime.dll -> System.Runtime.dll.so
[116/133] System.Security.Cryptography.dll -> System.Security.Cryptography.dll.so
[117/133] System.Text.Encoding.dll -> System.Text.Encoding.dll.so
[118/133] System.Text.Encodings.Web.dll -> System.Text.Encodings.Web.dll.so
[119/133] System.Text.Json.dll -> System.Text.Json.dll.so
[120/133] System.Text.RegularExpressions.dll -> System.Text.RegularExpressions.dll.so
[121/133] System.Threading.Tasks.dll -> System.Threading.Tasks.dll.so
[122/133] System.Threading.Thread.dll -> System.Threading.Thread.dll.so
[123/133] System.Threading.ThreadPool.dll -> System.Threading.ThreadPool.dll.so
[124/133] System.Threading.dll -> System.Threading.dll.so
[125/133] System.Xml.Linq.dll -> System.Xml.Linq.dll.so
[126/133] System.Xml.ReaderWriter.dll -> System.Xml.ReaderWriter.dll.so
[127/133] System.Xml.XDocument.dll -> System.Xml.XDocument.dll.so
[128/133] System.dll -> System.dll.so
[129/133] netstandard.dll -> netstandard.dll.so
[130/133] Java.Interop.dll -> Java.Interop.dll.so
[131/133] Mono.Android.Runtime.dll -> Mono.Android.Runtime.dll.so
[132/133] Mono.Android.dll -> Mono.Android.dll.so
[133/133] System.Private.CoreLib.dll -> System.Private.CoreLib.dll.so
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:11:04.90
[11.0.0-prerelease.26230.4+92962e5c46ac08a66ded4c5696209cc60f1a232f] XHarness command issued: android test --app /home/vsts/work/1/s/artifacts/bin/Controls.DeviceTests/Release/net10.0-android/com.microsoft.maui.controls.devicetests-Signed.apk --package-name com.microsoft.maui.controls.devicetests --device-id emulator-5554 -o artifacts/log --timeout 01:00:00 -v --arg TestFilter=ControlsHandlerTestBase
�[40m�[37mdbug�[39m�[22m�[49m: ADBRunner using ADB.exe supplied from /home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/tools/net10.0/any/../../../runtimes/any/native/adb/linux/adb
�[40m�[37mdbug�[39m�[22m�[49m: Full resolved path:'/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb'
�[40m�[32minfo�[39m�[22m�[49m: Will attempt to find device supporting architectures: 'arm64-v8a', 'x86_64'
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb start-server'
�[40m�[37mdbug�[39m�[22m�[49m:
�[40m�[32minfo�[39m�[22m�[49m: Finding attached devices/emulators...
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb devices -l'
�[40m�[37mdbug�[39m�[22m�[49m: Found 1 possible devices
�[40m�[37mdbug�[39m�[22m�[49m: Evaluating output line for device serial: emulator-5554 device product:sdk_gphone_x86_64 model:sdk_gphone_x86_64 device:generic_x86_64_arm64 transport_id:2
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 shell getprop ro.product.cpu.abilist'
�[40m�[37mdbug�[39m�[22m�[49m: Found 1 possible devices. Using 'emulator-5554'
�[40m�[32minfo�[39m�[22m�[49m: Active Android device set to serial 'emulator-5554'
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 -s emulator-5554 shell getprop ro.product.cpu.abi'
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 -s emulator-5554 shell getprop ro.build.version.sdk'
�[40m�[32minfo�[39m�[22m�[49m: Waiting for device to be available (max 5 minutes)
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 wait-for-device'
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 -s emulator-5554 shell getprop sys.boot_completed'
�[40m�[37mdbug�[39m�[22m�[49m: sys.boot_completed = '1'
�[40m�[37mdbug�[39m�[22m�[49m: Waited 0 seconds for device boot completion
�[40m�[37mdbug�[39m�[22m�[49m: Working with emulator-5554 (API 30)
�[40m�[37mdbug�[39m�[22m�[49m: Check current adb install and/or package verification settings
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 shell settings get global verifier_verify_adb_installs'
�[40m�[37mdbug�[39m�[22m�[49m: verifier_verify_adb_installs = 0
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 shell settings get global package_verifier_enable'
�[40m�[37mdbug�[39m�[22m�[49m: package_verifier_enable =
�[40m�[1m�[33mwarn�[39m�[22m�[49m: Installing debug apks on a device might be rejected with INSTALL_FAILED_VERIFICATION_FAILURE. Make sure to set 'package_verifier_enable' to '0'
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[41m�[30mfail�[39m�[22m�[49m: Waiting for command timed out: execution may be compromised
�[41m�[30mfail�[39m�[22m�[49m: Error: Exit code: -2
Std out:
�[40m�[32minfo�[39m�[22m�[49m: Attempting to install /home/vsts/work/1/s/artifacts/bin/Controls.DeviceTests/Release/net10.0-android/com.microsoft.maui.controls.devicetests-Signed.apk
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 install /home/vsts/work/1/s/artifacts/bin/Controls.DeviceTests/Release/net10.0-android/com.microsoft.maui.controls.devicetests-Signed.apk'
�[41m�[30mfail�[39m�[22m�[49m: Error:
Exit code: 1
Std out:
Serving...
Performing Incremental Install
cmd: Failure calling service package: Broken pipe (32)
Performing Streamed Install
Std err:
All files should be loaded. Notifying the device.
adb: failed to install /home/vsts/work/1/s/artifacts/bin/Controls.DeviceTests/Release/net10.0-android/com.microsoft.maui.controls.devicetests-Signed.apk: cmd: Can't find service: package
�[41m�[1m�[37mcrit�[39m�[22m�[49m: Install failure: Test command cannot continue
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[41m�[30mfail�[39m�[22m�[49m: Error: Exit code: 20
Std out:
Std err:
cmd: Can't find service: package
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[41m�[30mfail�[39m�[22m�[49m: Error: Exit code: 20
Std out:
Std err:
cmd: Can't find service: package
XHarness exit code: 78 (PACKAGE_INSTALLATION_FAILURE)
Tests completed with exit code: 78
🟢 With fix — 📱 ControlsHandlerTestBase: PASS ✅ · 968s
(truncated to last 15,000 chars)
ASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.059 14066 17562 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.181 14066 17567 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.306 14066 17572 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.414 14066 17577 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.655 14066 17582 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.830 14066 17587 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:55.948 14066 17592 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:56.088 14066 17597 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:56.218 14066 17602 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:56.332 14066 17607 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:56.543 14066 17612 I DOTNET : [PASS] ViewWithMarginSetsFrameAndDesiredSizeCorrectly
07-05 21:30:56.713 14066 17617 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:56.863 14066 17622 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.029 14066 17627 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.179 14066 17632 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.412 14066 17637 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.596 14066 17642 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.813 14066 17647 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:57.997 14066 17652 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:58.180 14066 17657 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:58.364 14066 17662 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:58.530 14066 17667 I DOTNET : [PASS] ArrangesContentWithoutOverlapAndWithProperSize
07-05 21:30:58.530 14066 17667 I DOTNET : Microsoft.Maui.DeviceTests.ViewTests 6.6376029 ms
07-05 21:30:58.530 14066 17667 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.HybridWebViewTests_Initialization
07-05 21:30:59.199 14066 17673 I DOTNET : [PASS] CanSetUserAgentUsingProperties
07-05 21:30:59.895 14066 17679 I DOTNET : [PASS] CanSetUserAgentUsingInitializingEvent
07-05 21:31:00.634 14066 17686 I DOTNET : [PASS] InitializedEventIsRaised
07-05 21:31:01.280 14066 17693 I DOTNET : [PASS] InitializingEventIsRaised
07-05 21:31:01.971 14066 17700 I DOTNET : [PASS] InitializingEventIsRaisedAndPropertiesSetAreApplied
07-05 21:31:01.972 14066 17700 I DOTNET : Microsoft.Maui.DeviceTests.HybridWebViewTests_Initialization 3.4381622 ms
07-05 21:31:01.972 14066 17700 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.VisualElementRendererTests
07-05 21:31:02.083 14066 17700 I DOTNET : [PASS] CompatibilityRendererWorksWithNoInnerContrlSpecified
07-05 21:31:02.083 14066 17700 I DOTNET : Microsoft.Maui.DeviceTests.VisualElementRendererTests 0.0042772 ms
07-05 21:31:02.083 14066 17700 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.HybridWebViewTests_InvokeDotNet
07-05 21:31:02.718 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:02.718 14066 14086 I DOTNET : InvokeDotNet endpoint missing or invalid request header
07-05 21:31:03.226 14066 17706 I DOTNET : [PASS] GetRequestsAreBlocked
07-05 21:31:03.913 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:03.913 14066 14086 I DOTNET : InvokeDotNet endpoint missing or invalid request header
07-05 21:31:04.211 14066 17712 I DOTNET : [PASS] InvalidTokenHeaderIsBlocked
07-05 21:31:04.211 14066 17712 I DOTNET : [IGNORED] IframeRequestIsBlocked
07-05 21:31:04.849 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:04.849 14066 14086 I DOTNET : InvokeDotNet request missing X-Maui-Request-Body header
07-05 21:31:05.149 14066 17718 I DOTNET : [PASS] EmptyBodyIsBlocked
07-05 21:31:05.792 14066 14086 I DOTNET : fail: Microsoft.Maui.Handlers.HybridWebViewHandler[0]
07-05 21:31:05.792 14066 14086 I DOTNET : An error occurred while invoking a .NET method from JavaScript: The invoke data did not provide a method name.
07-05 21:31:05.792 14066 14086 I DOTNET : System.InvalidOperationException: The invoke data did not provide a method name.
07-05 21:31:05.792 14066 14086 I DOTNET : at Microsoft.Maui.HybridWebViewHelper.ProcessInvokeDotNetAsync(Object invokeTarget, Type invokeTargetType, ILogger logger, Stream streamBody, String stringBody)
07-05 21:31:06.302 14066 17724 I DOTNET : [PASS] ValidRequestIsNotBlocked
07-05 21:31:06.990 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:06.990 14066 14086 I DOTNET : InvokeDotNet endpoint only accepts POST requests. Received: GET
07-05 21:31:07.501 14066 17730 I DOTNET : [PASS] GetRequestWithHeaderIsBlocked
07-05 21:31:08.175 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:08.175 14066 14086 I DOTNET : InvokeDotNet endpoint missing or invalid request header
07-05 21:31:08.434 14066 17736 I DOTNET : [PASS] MissingTokenHeaderIsBlocked
07-05 21:31:09.109 14066 14086 I DOTNET : fail: Microsoft.Maui.Platform.MauiHybridWebViewClient[0]
07-05 21:31:09.109 14066 14086 I DOTNET : InvokeDotNet request missing X-Maui-Request-Body header
07-05 21:31:09.366 14066 17742 I DOTNET : [PASS] MissingBodyHeaderIsBlocked
07-05 21:31:09.366 14066 17742 I DOTNET : Microsoft.Maui.DeviceTests.HybridWebViewTests_InvokeDotNet 7.2786471 ms
07-05 21:31:09.366 14066 17742 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.DispatchingTests
07-05 21:31:09.897 14066 17747 I DOTNET : [PASS] DispatchFromBackgroundThread
07-05 21:31:09.897 14066 17747 I DOTNET : Microsoft.Maui.DeviceTests.DispatchingTests 0.5301764 ms
07-05 21:31:09.897 14066 17747 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.HybridWebViewTests_ContentRootResolution
07-05 21:31:10.578 14066 17753 I DOTNET : [PASS] RootedPath_DoesNotResolve
07-05 21:31:11.239 14066 17759 I DOTNET : [PASS] RootedPath_DoesNotResolve
07-05 21:31:11.899 14066 17765 I DOTNET : [PASS] RootedPath_DoesNotResolve
07-05 21:31:12.594 14066 17771 I DOTNET : [PASS] RelativePaths_ResolveToContent
07-05 21:31:13.282 14066 17778 I DOTNET : [PASS] RelativePaths_ResolveToContent
07-05 21:31:13.970 14066 17784 I DOTNET : [PASS] RelativePaths_ResolveToContent
07-05 21:31:14.655 14066 17790 I DOTNET : [PASS] EncodedSeparators_DoNotAffectResolution
07-05 21:31:15.389 14066 17796 I DOTNET : [PASS] EncodedSeparators_DoNotAffectResolution
07-05 21:31:16.030 14066 17802 I DOTNET : [PASS] KnownFile_ReturnsExpectedContent
07-05 21:31:16.722 14066 17808 I DOTNET : [PASS] DotDotSegments_DoNotResolveAboveRoot
07-05 21:31:17.401 14066 17814 I DOTNET : [PASS] DotDotSegments_DoNotResolveAboveRoot
07-05 21:31:17.872 14066 17820 I DOTNET : [PASS] DotDotSegments_DoNotResolveAboveRoot
07-05 21:31:17.872 14066 17820 I DOTNET : Microsoft.Maui.DeviceTests.HybridWebViewTests_ContentRootResolution 7.9674260 ms
07-05 21:31:17.872 14066 17820 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.RefreshViewTests
07-05 21:31:17.997 14066 17826 I DOTNET : [PASS] Setting the content of RefreshView removes previous platform view from visual tree
07-05 21:31:17.998 14066 17826 I DOTNET : [PASS] IsRefreshEnabled can be set to false
07-05 21:31:17.999 14066 17826 I DOTNET : [PASS] Setting IsRefreshEnabled to false while refreshing stops refresh
07-05 21:31:17.999 14066 17826 I DOTNET : [PASS] IsRefreshEnabled defaults to true
07-05 21:31:17.999 14066 17826 I DOTNET : [PASS] IsEnabled prevents IsRefreshing from being set to true
07-05 21:31:18.000 14066 17826 I DOTNET : [PASS] Setting IsEnabled to false while refreshing stops refresh
07-05 21:31:18.000 14066 17826 I DOTNET : [PASS] IsRefreshEnabled prevents IsRefreshing from being set to true
07-05 21:31:18.000 14066 17826 I DOTNET : [PASS] IsRefreshing can be set to false when IsRefreshEnabled is false
07-05 21:31:18.000 14066 17826 I DOTNET : Microsoft.Maui.DeviceTests.RefreshViewTests 0.1256735 ms
07-05 21:31:18.000 14066 17826 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.FrameTests
07-05 21:31:18.197 14066 17832 I DOTNET : [PASS] Frame Respects minimum height/width
07-05 21:31:18.339 14066 17838 I DOTNET : [PASS] FrameIncludesPadding
07-05 21:31:19.506 14066 17853 I DOTNET : [PASS] FrameContentAccountsForBorderThickness
07-05 21:31:19.651 14066 17858 I DOTNET : [PASS] Update Frame Content Test
07-05 21:31:19.655 14066 17858 I DOTNET : [PASS] Frame BorderColor Initializes Correctly
07-05 21:31:19.727 14066 17863 I DOTNET : [PASS] Frame BorderColor Initializes Correctly
07-05 21:31:19.735 14066 17863 I DOTNET : [PASS] Frame BorderColor Initializes Correctly
07-05 21:31:20.194 14066 17869 I DOTNET : [PASS] FrameIncludesBorderThickness
07-05 21:31:20.319 14066 17875 I DOTNET : [PASS] Frame With Entry Measures
07-05 21:31:20.464 14066 17881 I DOTNET : [PASS] FrameDoesNotInterpretConstraintsAsMinimums
07-05 21:31:20.488 14066 17886 I DOTNET : [PASS] Frame BackgroundColor Initializes Correctly
07-05 21:31:20.512 14066 17891 I DOTNET : [PASS] Frame BackgroundColor Initializes Correctly
07-05 21:31:20.523 14066 17891 I DOTNET : [PASS] Frame BackgroundColor Initializes Correctly
07-05 21:31:21.044 14066 17896 I DOTNET : [PASS] Basic Frame Test
07-05 21:31:21.263 14066 17902 I DOTNET : [PASS] FramesWithinFrames
07-05 21:31:21.378 14066 17908 I DOTNET : [PASS] FramesWithinFrames
07-05 21:31:21.495 14066 17914 I DOTNET : [PASS] FramesWithinFrames
07-05 21:31:21.613 14066 17920 I DOTNET : [PASS] FramesWithinFrames
07-05 21:31:21.613 14066 17920 I DOTNET : Microsoft.Maui.DeviceTests.FrameTests 3.4962644 ms
07-05 21:31:21.613 14066 17920 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.SwipeViewTests
07-05 21:31:21.738 14066 17925 I DOTNET : [PASS] SwipeItem Size Initializes Correctly
07-05 21:31:21.750 14066 17931 I DOTNET : [PASS] ScaleXConsistent
07-05 21:31:21.752 14066 17931 I DOTNET : [PASS] RotationXConsistent
07-05 21:31:21.755 14066 17931 I DOTNET : [PASS] VerifySwipeViewIsEnabledProperty
07-05 21:31:21.765 14066 17931 I DOTNET : [PASS] VerifySwipeViewOpacityProperty
07-05 21:31:21.768 14066 17931 I DOTNET : [PASS] ScaleConsistent
07-05 21:31:21.770 14066 17931 I DOTNET : [PASS] RotationConsistent
07-05 21:31:21.772 14066 17931 I DOTNET : [PASS] VerifySwipeViewIsVisibleProperty
07-05 21:31:21.775 14066 17931 I DOTNET : [PASS] ScaleYConsistent
07-05 21:31:26.528 14066 17936 I DOTNET : [PASS] Items Do Not Leak
07-05 21:31:26.531 14066 17936 I DOTNET : [PASS] RotationYConsistent
07-05 21:31:26.533 14066 17936 I DOTNET : [PASS] SwipeViewTranslationConsistent
07-05 21:31:26.643 14066 17941 I DOTNET : [PASS] SwipeView LogicalChildren Works Correctly
07-05 21:31:26.643 14066 17941 I DOTNET : Microsoft.Maui.DeviceTests.SwipeViewTests 5.0255895 ms
07-05 21:31:26.643 14066 17941 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.Memory.WindowOverlayTests
07-05 21:31:28.348 14066 17946 I DOTNET : [PASS] Does Not Leak
07-05 21:31:28.348 14066 17946 I DOTNET : Microsoft.Maui.DeviceTests.Memory.WindowOverlayTests 1.7040636 ms
07-05 21:31:28.348 14066 17946 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.ImageTests
07-05 21:31:28.351 14066 17946 I DOTNET : [PASS] ScaleXConsistent
07-05 21:31:28.352 14066 17946 I DOTNET : [PASS] RotationConsistent
07-05 21:31:28.353 14066 17946 I DOTNET : [PASS] ScaleYConsistent
07-05 21:31:29.466 14066 17954 I DOTNET : [PASS] ImageSetFromStreamRenders
07-05 21:31:29.480 14066 17960 I DOTNET : [PASS] RotationYConsistent
07-05 21:31:29.595 14066 17965 I DOTNET : [PASS] ImageBackgroundColorConsistent
07-05 21:31:29.633 14066 17970 I DOTNET : [PASS] CachingDisabledForImagesLoadViaInputStreams
07-05 21:31:29.636 14066 17970 I DOTNET : [PASS] ScaleConsistent
07-05 21:31:29.767 14066 17975 I DOTNET : [PASS] ImageWithUndefinedSizeAndWithBackgroundSetRenders
07-05 21:31:29.808 14066 17975 I DOTNET : [PASS] VerifyImageOpacityProperty
07-05 21:31:29.811 14066 17975 I DOTNET : [PASS] RotationXConsistent
07-05 21:31:29.811 14066 17975 I DOTNET : Microsoft.Maui.DeviceTests.ImageTests 1.4552145 ms
07-05 21:31:29.852 14066 16557 I DOTNET : Xml file was written to the provided writer.
07-05 21:31:29.852 14066 16557 I DOTNET : Tests run: 968 Passed: 954 Inconclusive: 0 Failed: 0 Ignored: 0
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervm5lfqw",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "android",
"instrumentationExitCode": 0,
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "testResults.xml",
"type": "test-results"
},
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
}
]
}
<<XHARNESS_RESULT_END>>
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[40m�[32minfo�[39m�[22m�[49m: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 0
Tests completed successfully
🔴 Without fix — 📱 NavigationPageTests (PushingToPageWithoutNavigationBarClearsAppBarInsetPadding): FAIL ✅ · 266s
(truncated to last 15,000 chars)
t.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.NavigationPageTests.PushingToPageWithoutNavigationBarClearsAppBarInsetPadding()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : Execution time: 2.8042977
07-05 21:00:09.154 10468 10582 I DOTNET : Test trait name: Category
07-05 21:00:09.154 10468 10582 I DOTNET : value: NavigationPage
07-05 21:00:09.154 10468 10582 I DOTNET : value: NavigationPage
07-05 21:00:09.154 10468 10582 I DOTNET : [FAIL] NavigationPage push to hidden navigation bar clears app bar inset padding
07-05 21:00:09.154 10468 10582 I DOTNET : [FAIL] NavigationPage push to hidden navigation bar clears app bar inset padding Test name: NavigationPage push to hidden navigation bar clears app bar inset padding
07-05 21:00:09.154 10468 10582 I DOTNET : Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
07-05 21:00:09.154 10468 10582 I DOTNET : Exception messages: Navigating to a page with the navigation bar hidden did not trigger an inset redispatch that cleared the AppBar top padding. Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.NavigationPageTests.<>c__DisplayClass2_0.<<PushingToPageWithoutNavigationBarClearsAppBarInsetPadding>b__0>d.MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : at Microsoft.Maui.DeviceTests.NavigationPageTests.PushingToPageWithoutNavigationBarClearsAppBarInsetPadding()
07-05 21:00:09.154 10468 10582 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:09.154 10468 10582 I DOTNET : Execution time: 2.8042977
07-05 21:00:09.154 10468 10582 I DOTNET : Test trait name: Category
07-05 21:00:09.154 10468 10582 I DOTNET : value: NavigationPage
07-05 21:00:09.154 10468 10582 I DOTNET : value: NavigationPage
07-05 21:00:09.154 10468 10582 I DOTNET :
07-05 21:00:09.364 10468 10587 I DOTNET : [PASS] Insert Page Before Root Page and then PopToRoot
07-05 21:00:09.367 10468 10587 I DOTNET : [IGNORED] Does Not Leak
07-05 21:00:09.570 10468 10592 I DOTNET : [PASS] PushedPageFiresNavigatedEventOnInitialLoad
07-05 21:00:10.499 10468 10597 I DOTNET : [PASS] Pushing And Popping Doesnt Fire BackButtonVisible Toolbar Events
07-05 21:00:10.906 10468 10602 I DOTNET : [PASS] Set Has Back Button
07-05 21:00:11.179 10468 10607 I DOTNET : [PASS] Set Has Navigation Bar
07-05 21:00:12.555 10468 10612 I DOTNET : [PASS] Can Reuse Pages
07-05 21:00:12.556 10468 10612 I DOTNET : Microsoft.Maui.DeviceTests.NavigationPageTests 17.3182601 ms
07-05 21:00:12.610 10468 10497 I DOTNET : Failed tests:
07-05 21:00:12.614 10468 10497 I DOTNET : 1) [FAIL] NavigationPage push to hidden navigation bar clears app bar inset padding Test name: NavigationPage push to hidden navigation bar clears app bar inset padding
07-05 21:00:12.614 10468 10497 I DOTNET : Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
07-05 21:00:12.614 10468 10497 I DOTNET : Exception messages: Navigating to a page with the navigation bar hidden did not trigger an inset redispatch that cleared the AppBar top padding. Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.NavigationPageTests.<>c__DisplayClass2_0.<<PushingToPageWithoutNavigationBarClearsAppBarInsetPadding>b__0>d.MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.DeviceTests.Stubs.WindowHandlerStub, Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : at Microsoft.Maui.DeviceTests.NavigationPageTests.PushingToPageWithoutNavigationBarClearsAppBarInsetPadding()
07-05 21:00:12.614 10468 10497 I DOTNET : --- End of stack trace from previous location ---
07-05 21:00:12.614 10468 10497 I DOTNET : Execution time: 2.8042977
07-05 21:00:12.614 10468 10497 I DOTNET : Test trait name: Category
07-05 21:00:12.614 10468 10497 I DOTNET : value: NavigationPage
07-05 21:00:12.614 10468 10497 I DOTNET : value: NavigationPage
07-05 21:00:12.614 10468 10497 I DOTNET :
07-05 21:00:12.642 10468 10497 I DOTNET : Xml file was written to the provided writer.
07-05 21:00:12.643 10468 10497 I DOTNET : Tests run: 572 Passed: 20 Inconclusive: 0 Failed: 1 Ignored: 550
�[41m�[30mfail�[39m�[22m�[49m: Non-success instrumentation exit code: 1, expected: 0
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervm5lfqw",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "android",
"instrumentationExitCode": 1,
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "testResults.xml",
"type": "test-results"
},
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
}
]
}
<<XHARNESS_RESULT_END>>
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[40m�[32minfo�[39m�[22m�[49m: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 1 (TESTS_FAILED)
Tests completed with exit code: 1
🟢 With fix — 📱 NavigationPageTests (PushingToPageWithoutNavigationBarClearsAppBarInsetPadding): PASS ✅ · 255s
(truncated to last 15,000 chars)
Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'HybridWebView'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Image'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Label'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Layout'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Lifecycle'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ListView'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Map'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'MenuFlyout'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Mapper'): [Memory] Handler Does Not Leak
07-05 21:35:28.584 18452 18479 I DOTNET : [FILTER] Excluded test (filtered by Trait; 'Category':'Memory'): [Memory] Handler Does Not Leak
07-05 21:35:28.587 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Window'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:35:28.593 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'WindowOverlay'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:35:28.593 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Xaml'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Accessibility'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Application'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Behavior'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Border'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'BoxView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Button'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CarouselView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CheckBox'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CollectionView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Compatibility'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ContentView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'DatePicker'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Dispatcher'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Editor'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Element'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Entry'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'FlexLayout'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'FlyoutPage'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Frame'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Gesture'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'HybridWebView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Image'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Label'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Layout'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Lifecycle'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ListView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Map'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'MenuFlyout'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Mapper'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Excluded test (filtered by Trait; 'Category':'Memory'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Modal'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Page'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Path'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Picker'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'RadioButton'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'RefreshView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ScrollView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'SearchBar'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Shape'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Shell'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Slider'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'SwipeView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TabbedPage'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TextInput'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Toolbar'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TemplatedView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'View'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'VisualElement'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'VisualElementTree'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'WebView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Window'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'WindowOverlay'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.594 18452 18479 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Xaml'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:35:28.610 18452 18479 I DOTNET : [Test environment: 64-bit .NET .NET 10.0 [collection-per-class, non-parallel]]
07-05 21:35:28.610 18452 18479 I DOTNET : [Test framework: xUnit.net 2.9.0.0]
07-05 21:35:28.622 18452 18479 I DOTNET : Serialize test because it has to add itself to the main window
07-05 21:35:30.170 18452 18491 I DOTNET : [PASS] Swapping Navigation Toggles BackButton Correctly
07-05 21:35:30.463 18452 18496 I DOTNET : [PASS] InitialPageFiresNavigatedEvent
07-05 21:35:33.046 18452 18502 I DOTNET : [PASS] Child Pages Do Not Leak
07-05 21:35:33.231 18452 18507 I DOTNET : [PASS] NavigationBar Removes When MainPage Set To ContentPage
07-05 21:35:34.177 18452 18512 I DOTNET : [PASS] PoppingNavigationPageDoesntCrash
07-05 21:35:35.155 18452 18518 I DOTNET : [PASS] StackNavigationManager Clears References On Disconnect (Issue 33918)
07-05 21:35:36.674 18452 18523 I DOTNET : [PASS] Pushing a Tabbed Page Doesn't Throw Exception
07-05 21:35:36.898 18452 18528 I DOTNET : [PASS] Insert Page Before RootPage ShowsBackButton
07-05 21:35:37.469 18452 18533 I DOTNET : [PASS] SettingTitleIconImageSourceDoesntCrash
07-05 21:35:38.039 18452 18538 I DOTNET : [PASS] Remove Root Page Hides Back Button
07-05 21:35:38.941 18452 18543 I DOTNET : [PASS] PopLifeCycle
07-05 21:35:39.838 18452 18550 I DOTNET : [PASS] Back Button Visibility Changes with push/pop
07-05 21:35:40.553 18452 18556 I DOTNET : [PASS] NavigationPage push to hidden navigation bar clears app bar inset padding
07-05 21:35:40.795 18452 18561 I DOTNET : [PASS] Insert Page Before Root Page and then PopToRoot
07-05 21:35:40.798 18452 18561 I DOTNET : [IGNORED] Does Not Leak
07-05 21:35:41.033 18452 18566 I DOTNET : [PASS] PushedPageFiresNavigatedEventOnInitialLoad
07-05 21:35:41.903 18452 18571 I DOTNET : [PASS] Pushing And Popping Doesnt Fire BackButtonVisible Toolbar Events
07-05 21:35:42.393 18452 18576 I DOTNET : [PASS] Set Has Back Button
07-05 21:35:42.599 18452 18581 I DOTNET : [PASS] Set Has Navigation Bar
07-05 21:35:43.994 18452 18586 I DOTNET : [PASS] Can Reuse Pages
07-05 21:35:44.003 18452 18586 I DOTNET : Microsoft.Maui.DeviceTests.NavigationPageTests 15.2171906 ms
07-05 21:35:44.011 18452 18586 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.AlertDialogTests
07-05 21:35:44.039 18452 18592 I DOTNET : [PASS] AlertDialogButtonColorDarkTheme
07-05 21:35:44.249 18452 18592 I DOTNET : [PASS] AlertDialogButtonColorLightTheme
07-05 21:35:44.250 18452 18592 I DOTNET : Microsoft.Maui.DeviceTests.AlertDialogTests 0.2102049 ms
07-05 21:35:44.348 18452 18479 I DOTNET : Xml file was written to the provided writer.
07-05 21:35:44.349 18452 18479 I DOTNET : Tests run: 572 Passed: 21 Inconclusive: 0 Failed: 0 Ignored: 550
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervm5lfqw",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "android",
"instrumentationExitCode": 0,
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "testResults.xml",
"type": "test-results"
},
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
}
]
}
<<XHARNESS_RESULT_END>>
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[40m�[32minfo�[39m�[22m�[49m: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 0
Tests completed successfully
🔴 Without fix — 📱 ShellTests (HiddenShellNavigationBarClearsAppBarInsetPadding): FAIL ✅ · 306s
(truncated to last 15,000 chars)
594 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ShellTests.HiddenShellNavigationBarClearsAppBarInsetPadding()
07-05 21:04:49.594 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.594 11056 11369 I DOTNET : Execution time: 2.5715023
07-05 21:04:49.594 11056 11369 I DOTNET : Test trait name: Category
07-05 21:04:49.594 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.594 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET : [FAIL] Hidden Shell navigation bar clears app bar inset padding
07-05 21:04:49.597 11056 11369 I DOTNET : [FAIL] Hidden Shell navigation bar clears app bar inset padding Test name: Hidden Shell navigation bar clears app bar inset padding
07-05 21:04:49.597 11056 11369 I DOTNET : Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
07-05 21:04:49.597 11056 11369 I DOTNET : Exception messages: Shell.NavBarIsVisible did not trigger an inset redispatch that cleared the AppBar top padding. Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ShellTests.<>c__DisplayClass17_0.<<HiddenShellNavigationBarClearsAppBarInsetPadding>b__0>d.MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : at Microsoft.Maui.DeviceTests.ShellTests.HiddenShellNavigationBarClearsAppBarInsetPadding()
07-05 21:04:49.597 11056 11369 I DOTNET : --- End of stack trace from previous location ---
07-05 21:04:49.597 11056 11369 I DOTNET : Execution time: 2.5715023
07-05 21:04:49.597 11056 11369 I DOTNET : Test trait name: Category
07-05 21:04:49.597 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET : value: Shell
07-05 21:04:49.597 11056 11369 I DOTNET :
07-05 21:04:51.795 11056 11378 I DOTNET : [PASS] HideSoftInputOnTapped Doesn't Crash If Entry Is Still Focused After Window Is Null
07-05 21:04:55.646 11056 11387 I DOTNET : [PASS] Pages Do Not Leak
07-05 21:04:56.011 11056 11392 I DOTNET : [PASS] FlyoutHeaderRendersCorrectSizeWithFlyoutContentSet
07-05 21:04:56.469 11056 11397 I DOTNET : [PASS] Shell add then remove items from selected item
07-05 21:05:00.762 11056 11403 I DOTNET : [PASS] Shell TabBar Foreground Initializes Correctly
07-05 21:05:05.044 11056 11409 I DOTNET : [PASS] Shell TabBar Foreground Initializes Correctly
07-05 21:05:06.050 11056 11417 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:05:06.996 11056 11423 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:05:07.902 11056 11429 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:05:08.849 11056 11435 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:05:09.181 11056 11440 I DOTNET : [PASS] CanHideNavBarShadow
07-05 21:05:09.512 11056 11445 I DOTNET : [PASS] CanHideNavBarShadow
07-05 21:05:13.797 11056 11453 I DOTNET : [PASS] Shell TabBar Title Color Initializes Correctly
07-05 21:05:18.099 11056 11459 I DOTNET : [PASS] Shell TabBar Title Color Initializes Correctly
07-05 21:05:18.394 11056 11464 I DOTNET : [PASS] FlyoutItems Render When FlyoutBehavior Starts As Locked
07-05 21:05:19.063 11056 11469 I DOTNET : [PASS] TitleView Updates to Currently Visible Page
07-05 21:05:19.822 11056 11474 I DOTNET : [PASS] SwappingOutAndroidContextDoesntCrash
07-05 21:05:21.648 11056 11479 I DOTNET : [PASS] Pushing the Same Page Disconnects Previous Toolbar Items
07-05 21:05:21.649 11056 11479 I DOTNET : Microsoft.Maui.DeviceTests.ShellTests 82.7144645 ms
07-05 21:05:21.711 11056 11077 I DOTNET : Failed tests:
07-05 21:05:21.712 11056 11077 I DOTNET : 1) [FAIL] Hidden Shell navigation bar clears app bar inset padding Test name: Hidden Shell navigation bar clears app bar inset padding
07-05 21:05:21.712 11056 11077 I DOTNET : Assembly: [Microsoft.Maui.Controls.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
07-05 21:05:21.712 11056 11077 I DOTNET : Exception messages: Shell.NavBarIsVisible did not trigger an inset redispatch that cleared the AppBar top padding. Exception stack traces: at Microsoft.Maui.DeviceTests.AssertHelpers.AssertEventually(Func`1 assertion, Int32 timeout, Int32 interval, String message)
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ShellTests.<>c__DisplayClass17_0.<<HiddenShellNavigationBarClearsAppBarInsetPadding>b__0>d.MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_1`1.<<CreateHandlerAndAddToWindow>b__1>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass0_0`1.<<SetupWindowForTests>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ControlsHandlerTestBase.<>c__DisplayClass34_0`1.<<CreateHandlerAndAddToWindow>b__0>d[[Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass3_0.<<DispatchAsync>b__0>d.MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass2_0`1.<<DispatchAsync>b__0>d[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : at Microsoft.Maui.DeviceTests.ShellTests.HiddenShellNavigationBarClearsAppBarInsetPadding()
07-05 21:05:21.712 11056 11077 I DOTNET : --- End of stack trace from previous location ---
07-05 21:05:21.712 11056 11077 I DOTNET : Execution time: 2.5715023
07-05 21:05:21.712 11056 11077 I DOTNET : Test trait name: Category
07-05 21:05:21.712 11056 11077 I DOTNET : value: Shell
07-05 21:05:21.712 11056 11077 I DOTNET : value: Shell
07-05 21:05:21.712 11056 11077 I DOTNET : value: Shell
07-05 21:05:21.712 11056 11077 I DOTNET : value: Shell
07-05 21:05:21.712 11056 11077 I DOTNET : value: Shell
07-05 21:05:21.712 11056 11077 I DOTNET :
07-05 21:05:21.732 11056 11077 I DOTNET : Xml file was written to the provided writer.
07-05 21:05:21.733 11056 11077 I DOTNET : Tests run: 584 Passed: 69 Inconclusive: 0 Failed: 1 Ignored: 514
�[41m�[30mfail�[39m�[22m�[49m: Non-success instrumentation exit code: 1, expected: 0
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervm5lfqw",
"exitCode": 1,
"exitCodeName": "TESTS_FAILED",
"platform": "android",
"instrumentationExitCode": 1,
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "testResults.xml",
"type": "test-results"
},
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
}
]
}
<<XHARNESS_RESULT_END>>
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[40m�[32minfo�[39m�[22m�[49m: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 1 (TESTS_FAILED)
Tests completed with exit code: 1
🟢 With fix — 📱 ShellTests (HiddenShellNavigationBarClearsAppBarInsetPadding): PASS ✅ · 301s
(truncated to last 15,000 chars)
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'RadioButton'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'RefreshView'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ScrollView'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'SearchBar'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Shape'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Slider'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'SwipeView'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TabbedPage'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TextInput'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Toolbar'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'TemplatedView'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'View'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'VisualElement'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'VisualElementTree'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'WebView'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Window'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'WindowOverlay'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Xaml'): [Memory] VisualDiagnosticsOverlay Does Not Leak
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Accessibility'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Application'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Behavior'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Border'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'BoxView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Button'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CarouselView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CheckBox'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'CollectionView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Compatibility'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'ContentView'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'DatePicker'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Dispatcher'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Editor'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Element'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Entry'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'FlexLayout'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'FlyoutPage'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.364 18808 18835 I DOTNET : [FILTER] Included test (filtered by Trait; 'Category':'Frame'): [Memory] TweenersWillNotLeakDuringInfiniteAnimation
07-05 21:39:27.381 18808 18835 I DOTNET : [Test environment: 64-bit .NET .NET 10.0 [collection-per-class, non-parallel]]
07-05 21:39:27.381 18808 18835 I DOTNET : [Test framework: xUnit.net 2.9.0.0]
07-05 21:39:27.394 18808 18835 I DOTNET : Serialize test because it has to add itself to the main window
07-05 21:39:27.822 18808 18845 I DOTNET : [PASS] Can Clear ShellContent
07-05 21:39:28.695 18808 18851 I DOTNET : [PASS] FlyoutContentUpdatesAfterChange
07-05 21:39:28.956 18808 18856 I DOTNET : [PASS] Handlers not recreated when changing tabs
07-05 21:39:29.431 18808 18861 I DOTNET : [PASS] PageLayoutDoesNotExceedWindowBounds
07-05 21:39:29.607 18808 18866 I DOTNET : [PASS] Ensure Default Colors are White for BottomNavigationView
07-05 21:39:29.861 18808 18871 I DOTNET : [PASS] FooterTemplate Measures to Set Flyout Width When Flyout Locked
07-05 21:39:30.752 18808 18879 I DOTNET : [PASS] BasicShellNavigationStructurePermutations
07-05 21:39:31.323 18808 18884 I DOTNET : [PASS] BasicShellNavigationStructurePermutations
07-05 21:39:31.899 18808 18912 I DOTNET : [PASS] BasicShellNavigationStructurePermutations
07-05 21:39:32.385 18808 18931 I DOTNET : [PASS] BasicShellNavigationStructurePermutations
07-05 21:39:32.714 18808 18936 I DOTNET : [PASS] No crash going back using 'Shell.Current.GoToAsync("..")'
07-05 21:39:35.041 18808 18954 I DOTNET : [PASS] Can Reuse Pages
07-05 21:39:36.891 18808 19012 I DOTNET : [PASS] FlyoutCustomContentMargin
07-05 21:39:38.603 18808 19081 I DOTNET : [PASS] FlyoutCustomContentMargin
07-05 21:39:40.549 18808 19107 I DOTNET : [PASS] FlyoutCustomContentMargin
07-05 21:39:41.076 18808 19112 I DOTNET : [PASS] ChangingBottomTabAttributesDoesntRecreateBottomTabs
07-05 21:39:42.002 18808 19118 I DOTNET : [PASS] FlyoutIsPresented=true sets the visible status of the Shell Flyout.
07-05 21:39:42.548 18808 19123 I DOTNET : [PASS] ShellContentFragment.Destroy handles null _shellContext gracefully
07-05 21:39:43.432 18808 19128 I DOTNET : [PASS] Navigation Routes Correctly After Switching Flyout Items
07-05 21:39:44.502 18808 19134 I DOTNET : [PASS] Navigate to Root with BackButtonBehavior no Crash
07-05 21:39:48.863 18808 19140 I DOTNET : [PASS] Shell TabBar UnselectedColor Initializes Correctly
07-05 21:39:53.177 18808 19148 I DOTNET : [PASS] Shell TabBar UnselectedColor Initializes Correctly
07-05 21:39:53.909 18808 19153 I DOTNET : [PASS] Toolbar Title View Updates
07-05 21:39:54.097 18808 19158 I DOTNET : [PASS] Shell with Flyout Disabled Doesn't Render Flyout
07-05 21:39:55.427 18808 19163 I DOTNET : [PASS] Back Button Visibility Changes with push/pop
07-05 21:39:56.158 18808 19168 I DOTNET : [PASS] ChangingToNewMauiContextDoesntCrash
07-05 21:39:56.311 18808 19173 I DOTNET : [PASS] FlyoutContent Renderers When FlyoutBehavior Starts As Locked
07-05 21:39:57.278 18808 19180 I DOTNET : [PASS] Flyout Footer and Default Flyout Items Render
07-05 21:39:57.513 18808 19185 I DOTNET : [PASS] Toolbar Title
07-05 21:39:57.905 18808 19191 I DOTNET : [PASS] LogicalChildrenPropagateCorrectly
07-05 21:39:58.694 18808 19196 I DOTNET : [PASS] Set Has Back Button
07-05 21:39:59.500 18808 19201 I DOTNET : [PASS] Flyout Header Changes When Updated
07-05 21:40:00.220 18808 19206 I DOTNET : [PASS] Navigating During Navigated Doesnt ReFire Appearing
07-05 21:40:01.014 18808 19211 I DOTNET : [PASS] Toolbar Title Updates
07-05 21:40:01.212 18808 19216 I DOTNET : [PASS] Title View Measures
07-05 21:40:01.454 18808 19221 I DOTNET : [PASS] Flyout Width Does Not Crash
07-05 21:40:04.495 18808 19226 I DOTNET : [PASS] PopToRootAsync correctly navigates to root page
07-05 21:40:08.794 18808 19233 I DOTNET : [PASS] ForegroundColor sets icon and title color sets title
07-05 21:40:09.408 18808 19238 I DOTNET : [PASS] LifeCycleEvents Fire When Navigating Top Tabs
07-05 21:40:09.594 18808 19243 I DOTNET : [PASS] Appearing Fires Before NavigatedTo
07-05 21:40:09.871 18808 19248 I DOTNET : [PASS] Swap Shell Root Page for NavigationPage
07-05 21:40:10.860 18808 19255 I DOTNET : [PASS] FlyoutItemsRenderWhenFlyoutHeaderIsSet
07-05 21:40:11.141 18808 19260 I DOTNET : [PASS] AddingBottomTabDoesntRecreateMenu
07-05 21:40:13.347 18808 19265 I DOTNET : [PASS] Flyout Starts as Open correctly
07-05 21:40:13.700 18808 19270 I DOTNET : [PASS] FlyoutWithAsMultipleItemsRendersWithoutCrashing
07-05 21:40:14.413 18808 19275 I DOTNET : [PASS] Correctly Adjust to Making Currently Visible Shell Page Invisible
07-05 21:40:14.678 18808 19280 I DOTNET : [PASS] Empty Shell
07-05 21:40:15.116 18808 19285 I DOTNET : [PASS] SearchHandlerRendersCorrectly
07-05 21:40:15.388 18808 19290 I DOTNET : [PASS] RemovingBottomTabDoesntRecreateMenu
07-05 21:40:15.849 18808 19295 I DOTNET : [PASS] Hidden Shell navigation bar clears app bar inset padding
07-05 21:40:18.322 18808 19304 I DOTNET : [PASS] HideSoftInputOnTapped Doesn't Crash If Entry Is Still Focused After Window Is Null
07-05 21:40:21.400 18808 19312 I DOTNET : [PASS] Pages Do Not Leak
07-05 21:40:21.694 18808 19317 I DOTNET : [PASS] FlyoutHeaderRendersCorrectSizeWithFlyoutContentSet
07-05 21:40:22.127 18808 19322 I DOTNET : [PASS] Shell add then remove items from selected item
07-05 21:40:26.371 18808 19335 I DOTNET : [PASS] Shell TabBar Foreground Initializes Correctly
07-05 21:40:30.663 18808 19341 I DOTNET : [PASS] Shell TabBar Foreground Initializes Correctly
07-05 21:40:31.554 18808 19349 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:40:32.478 18808 19355 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:40:33.342 18808 19361 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:40:34.213 18808 19367 I DOTNET : [PASS] FlyoutHeaderMinimumHeight
07-05 21:40:34.545 18808 19372 I DOTNET : [PASS] CanHideNavBarShadow
07-05 21:40:34.852 18808 19377 I DOTNET : [PASS] CanHideNavBarShadow
07-05 21:40:39.128 18808 19383 I DOTNET : [PASS] Shell TabBar Title Color Initializes Correctly
07-05 21:40:43.394 18808 19391 I DOTNET : [PASS] Shell TabBar Title Color Initializes Correctly
07-05 21:40:43.694 18808 19396 I DOTNET : [PASS] FlyoutItems Render When FlyoutBehavior Starts As Locked
07-05 21:40:44.298 18808 19401 I DOTNET : [PASS] TitleView Updates to Currently Visible Page
07-05 21:40:45.003 18808 19406 I DOTNET : [PASS] SwappingOutAndroidContextDoesntCrash
07-05 21:40:46.941 18808 19411 I DOTNET : [PASS] Pushing the Same Page Disconnects Previous Toolbar Items
07-05 21:40:46.944 18808 19411 I DOTNET : Microsoft.Maui.DeviceTests.ShellTests 78.6911689 ms
07-05 21:40:46.948 18808 19411 I DOTNET : Test collection for Microsoft.Maui.DeviceTests.AlertDialogTests
07-05 21:40:47.032 18808 19411 I DOTNET : [PASS] AlertDialogButtonColorDarkTheme
07-05 21:40:47.071 18808 19411 I DOTNET : [PASS] AlertDialogButtonColorLightTheme
07-05 21:40:47.072 18808 19411 I DOTNET : Microsoft.Maui.DeviceTests.AlertDialogTests 0.1220443 ms
07-05 21:40:47.185 18808 18828 I DOTNET : Xml file was written to the provided writer.
07-05 21:40:47.186 18808 18828 I DOTNET : Tests run: 584 Passed: 70 Inconclusive: 0 Failed: 0 Ignored: 514
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervm5lfqw",
"exitCode": 0,
"exitCodeName": "SUCCESS",
"platform": "android",
"instrumentationExitCode": 0,
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "testResults.xml",
"type": "test-results"
},
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
}
]
}
<<XHARNESS_RESULT_END>>
�[40m�[32minfo�[39m�[22m�[49m: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
�[40m�[37mdbug�[39m�[22m�[49m: Executing command: '/home/vsts/.nuget/packages/microsoft.dotnet.xharness.cli/11.0.0-prerelease.26230.4/runtimes/any/native/adb/linux/adb -s emulator-5554 uninstall com.microsoft.maui.controls.devicetests'
�[40m�[32minfo�[39m�[22m�[49m: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 0
Tests completed successfully
🔴 Without fix — 🖥️ Issue34472: FAIL ✅ · 596s
Determining projects to restore...
Restored /home/vsts/work/1/s/src/Essentials/src/Essentials.csproj (in 782 ms).
Restored /home/vsts/work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 782 ms).
Restored /home/vsts/work/1/s/src/Core/maps/src/Maps.csproj (in 168 ms).
Restored /home/vsts/work/1/s/src/Core/src/Core.csproj (in 203 ms).
Restored /home/vsts/work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 52 ms).
Restored /home/vsts/work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 39 ms).
Restored /home/vsts/work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 51 ms).
Restored /home/vsts/work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 41 ms).
Restored /home/vsts/work/1/s/src/Controls/Foldable/src/Controls.Foldable.csproj (in 658 ms).
Restored /home/vsts/work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 150 ms).
Restored /home/vsts/work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj (in 1.32 sec).
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0-android36.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0-android36.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0-android36.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Maps -> /home/vsts/work/1/s/artifacts/bin/Maps/Debug/net10.0-android36.0/Microsoft.Maui.Maps.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-android36.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Foldable -> /home/vsts/work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Foldable.dll
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Maps.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Xaml.dll
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-android36.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.TestCases.HostApp -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Controls.TestCases.HostApp.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Maps.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Xaml.dll
Controls.Foldable -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Foldable.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Maps.dll
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:06:59.11
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Starting: Intent { act=android.settings.SETTINGS }
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Determining projects to restore...
Restored /home/vsts/work/1/s/src/Controls/tests/CustomAttributes/Controls.CustomAttributes.csproj (in 1.34 sec).
Restored /home/vsts/work/1/s/src/TestUtils/src/VisualTestUtils/VisualTestUtils.csproj (in 41 ms).
Restored /home/vsts/work/1/s/src/TestUtils/src/VisualTestUtils.MagickNet/VisualTestUtils.MagickNet.csproj (in 5.34 sec).
Restored /home/vsts/work/1/s/src/Controls/tests/TestCases.Android.Tests/Controls.TestCases.Android.Tests.csproj (in 6.92 sec).
Restored /home/vsts/work/1/s/src/TestUtils/src/UITest.Core/UITest.Core.csproj (in 2 ms).
Restored /home/vsts/work/1/s/src/TestUtils/src/UITest.Appium/UITest.Appium.csproj (in 3 ms).
Restored /home/vsts/work/1/s/src/TestUtils/src/UITest.NUnit/UITest.NUnit.csproj (in 398 ms).
Restored /home/vsts/work/1/s/src/TestUtils/src/UITest.Analyzers/UITest.Analyzers.csproj (in 1.87 sec).
5 of 13 projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
Controls.CustomAttributes -> /home/vsts/work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
UITest.Core -> /home/vsts/work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
UITest.NUnit -> /home/vsts/work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
UITest.Appium -> /home/vsts/work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
VisualTestUtils -> /home/vsts/work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
VisualTestUtils.MagickNet -> /home/vsts/work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
UITest.Analyzers -> /home/vsts/work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
Controls.TestCases.Android.Tests -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll
NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 07/05/2026 21:15:09 FixtureSetup for Issue34472(Android)
>>>>> 07/05/2026 21:15:11 SafeAreaEdgesNoneRespectedInNavigationPage Start
>>>>> 07/05/2026 21:15:19 SafeAreaEdgesNoneRespectedInNavigationPage Stop
>>>>> 07/05/2026 21:15:19 Log types: logcat, bugreport, server
Failed SafeAreaEdgesNoneRespectedInNavigationPage [8 s]
Error Message:
ContentBorder Y should be the same whether pushed (69) or set as main page (6).
Assert.That(pushedBorderRect.Y, Is.EqualTo(mainPageBorderRect.Y).Within(5))
Expected: 6 +/- 5
But was: 69
Off by: -63.0d
Stack Trace:
at Microsoft.Maui.TestCases.Tests.Issues.Issue34472.SafeAreaEdgesNoneRespectedInNavigationPage() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue34472.cs:line 37
1) at Microsoft.Maui.TestCases.Tests.Issues.Issue34472.SafeAreaEdgesNoneRespectedInNavigationPage() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue34472.cs:line 37
NUnit Adapter 4.5.0.0: Test execution complete
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.13] Discovering: Controls.TestCases.Android.Tests
[xUnit.net 00:00:00.61] Discovered: Controls.TestCases.Android.Tests
Results File: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue34472.trx
Total tests: 1
Failed: 1
Test Run Failed.
Total time: 31.8189 Seconds
>>> TRX_RESULT_FILE: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue34472.trx
🟢 With fix — 🖥️ Issue34472: PASS ✅ · 575s
Determining projects to restore...
Restored /home/vsts/work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 832 ms).
Restored /home/vsts/work/1/s/src/Essentials/src/Essentials.csproj (in 832 ms).
Restored /home/vsts/work/1/s/src/Core/maps/src/Maps.csproj (in 157 ms).
Restored /home/vsts/work/1/s/src/Core/src/Core.csproj (in 191 ms).
Restored /home/vsts/work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 50 ms).
Restored /home/vsts/work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 66 ms).
Restored /home/vsts/work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 28 ms).
Restored /home/vsts/work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 38 ms).
3 of 11 projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0-android36.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0-android36.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0-android36.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Maps -> /home/vsts/work/1/s/artifacts/bin/Maps/Debug/net10.0-android36.0/Microsoft.Maui.Maps.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-android36.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-android36.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Foldable -> /home/vsts/work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Foldable.dll
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-android36.0/Microsoft.Maui.Controls.Maps.dll
Controls.TestCases.HostApp -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Controls.TestCases.HostApp.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Maps.dll
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Maps.dll
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Foldable -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Foldable.dll
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-android/Microsoft.Maui.Controls.Xaml.dll
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:07:09.00
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Starting: Intent { act=android.settings.SETTINGS }
Broadcasting: Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS flg=0x400000 }
Broadcast completed: result=0
Determining projects to restore...
All projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.CustomAttributes -> /home/vsts/work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14572615
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
VisualTestUtils -> /home/vsts/work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
UITest.Core -> /home/vsts/work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
VisualTestUtils.MagickNet -> /home/vsts/work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
UITest.NUnit -> /home/vsts/work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
UITest.Appium -> /home/vsts/work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
UITest.Analyzers -> /home/vsts/work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
Controls.TestCases.Android.Tests -> /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /home/vsts/work/1/s/artifacts/bin/Controls.TestCases.Android.Tests/Debug/net10.0/Controls.TestCases.Android.Tests.dll
NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 07/05/2026 21:50:14 FixtureSetup for Issue34472(Android)
>>>>> 07/05/2026 21:50:16 SafeAreaEdgesNoneRespectedInNavigationPage Start
>>>>> 07/05/2026 21:50:23 SafeAreaEdgesNoneRespectedInNavigationPage Stop
Passed SafeAreaEdgesNoneRespectedInNavigationPage [6 s]
NUnit Adapter 4.5.0.0: Test execution complete
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.15] Discovering: Controls.TestCases.Android.Tests
[xUnit.net 00:00:00.59] Discovered: Controls.TestCases.Android.Tests
Results File: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue34472.trx
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 22.0040 Seconds
>>> TRX_RESULT_FILE: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue34472.trx
📁 Fix files reverted (1 files)
src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs
📱 UI Tests — SafeAreaEdges,Shell
Detected UI test categories: SafeAreaEdges,Shell
✅ Deep UI tests — 368 passed, 0 failed across 2 categories on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
SafeAreaEdges |
61/61 ✓ | — |
Shell |
307/307 ✓ | — |
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs) |
📋 Pre-Flight — Context & Validation
Issue: #35103 - wrong statusbar height when Android device has a notch; #34472 - [Android] Top SafeAreaEdge isn't respected when the page is pushed to a NavigationPage
PR: #36072 - [Android] Fix blank gap when HasNavigationBar=false with SafeAreaEdges=None
Platforms Affected: Android
Files Changed: 1 implementation, 8 test
Key Findings
- The linked issues describe Android-only safe-area/top-inset behavior: hidden Shell or NavigationPage navigation bars can leave a blank gap near the status bar/cutout, especially on notched devices or pushed NavigationPage pages using
SafeAreaEdges=None. - PR #36072 fixes the gap by clearing the parent
AppBarLayoutpadding insideToolbarExtensions.UpdateIsVisiblewhentoolbar.IsVisibleis false, and adds NavigationPage, Shell, UI issue, and Android snapshot coverage. - Prior inline review comments flagged test flakiness risks: both new device tests attach/use toolbar/root/appbar objects before all null/readiness checks.
- Code review found the implementation fix may over-clear parent
AppBarLayoutpadding and fail to restore it on hide-to-show or Shell top-tab scenarios because the request is dispatched to theMaterialToolbar, not the root/appbar path.
Code Review Summary
Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ✗
src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs:51— Clearing the parentAppBarLayoutpadding whenever the toolbar is hidden can leave visible app-bar content without a top inset; the followingRequestApplyInsets(nativeToolbar)hits the MaterialToolbar branch and does not restore parent app-bar padding.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #36072 | Clear stale parent AppBarLayout padding in ToolbarExtensions.UpdateIsVisible when the toolbar is hidden. |
✅ PASSED (Gate) | ToolbarExtensions.cs + tests |
Original PR; gate result supplied by caller. |
🔬 Code Review — Deep Analysis
Code Review — PR #36072
Independent Assessment
What this changes: Android toolbar visibility now clears the parent AppBarLayout padding when the toolbar is hidden, plus adds Android device/UI regression tests.
Inferred motivation: Prevent stale top inset padding from leaving a blank gap when HasNavigationBar=false.
Reconciliation with PR Narrative
Author claims: Clearing AppBarLayout padding lets the app bar collapse and later RequestApplyInsets restores padding when shown.
Agreement/disagreement: The collapse fix is plausible for the hidden single-toolbar case. I disagree that the re-show/other-content path is safe.
Prior Review Reconciliation
No prior ❌ Error findings found.
Blast Radius Assessment
- Runs for all instances: Yes — every Android MAUI toolbar visibility update.
- Startup impact: No.
- Static/shared state: No.
CI Status
- Required-check result:
gh pr checks --requiredunavailable due missing auth; public fallback showsmaui-prpass, butmaui-pr-uitests,maui-pr-devicetests, and Build Analysis failing. - Classification: undetermined; Android device tests passed, failures appear broad/non-local, but not fully classified.
- Action taken: invoked
azdo-build-investigator; confidence capped low.
Findings
❌ Error — Clearing AppBar padding can leave visible app-bar content without top inset
src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs:51
This clears the whole parent AppBarLayout whenever the toolbar is hidden, but the only following inset request is on nativeToolbar (RequestApplyInsets(nativeToolbar)). MauiWindowInsetListener restores AppBarLayout padding only when invoked on the root/app-bar path; when invoked for MaterialToolbar, it takes the early toolbar branch and does not update the parent app bar.
That means after hiding then showing the navigation bar again, the visible toolbar can remain with AppBarLayout.PaddingTop == 0 until some external root inset dispatch happens. It also risks Shell top-tab scenarios where the toolbar is hidden but the TabLayout remains visible in the same AppBarLayout; clearing parent padding can place those tabs under the status/cutout area.
Please either redispatch insets on the root/app bar at the right time, or only clear the padding when the app bar truly has no other visible/measured content, and add coverage for hide→show and Shell multi-top-tab cases.
Failure-Mode Probing
- Hide then re-show navbar: padding cleared on hide; toolbar-level inset request does not restore parent app-bar padding.
- Shell with multiple top tabs and hidden nav bar:
TabLayoutvisibility is independent of toolbar visibility, so clearing parent padding can affect still-visible app-bar content. - Single hidden NavigationPage toolbar: the intended gap fix appears valid.
Verdict: NEEDS_CHANGES
Confidence: low
Summary: The fix addresses the reported hidden-toolbar gap, but it introduces a likely Android app-bar inset regression for re-show and Shell top-tab scenarios. CI is also not clean/fully classifiable from available authenticated tooling.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix-1 | Move AppBar stale-padding/content detection into MauiWindowInsetListener; request inset recalculation from the containing CoordinatorLayout instead of clearing parent AppBar padding in ToolbarExtensions. |
✅ PASS | 2 files | Passed targeted Android NavigationPage and Shell Controls device-test categories. Demonstrably better than PR fix because AppBar padding ownership stays in the inset listener and avoids over-clearing when other AppBar content remains visible or when the nav bar is shown again. |
| PR | PR #36072 | Clear parent AppBarLayout padding directly from ToolbarExtensions.UpdateIsVisible when the toolbar is hidden. |
✅ PASSED (Gate) | 1 implementation file + tests | Original PR; gate result supplied by caller. Code review found hide→show and Shell top-tab/other-AppBar-content risk. |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| gpt-5.5 / maui-expert-reviewer | 1 | Yes | Candidate 1: base AppBar inset consumption on effective visible AppBar children instead of stale parent MeasuredHeight, and redispatch insets through the root CoordinatorLayout. |
| Remaining models | 1 | Not run | Stopped early because Candidate 1 passed all targeted regression tests and is demonstrably better than the PR's current padding-clearing fix. |
Exhausted: No
Selected Fix: Candidate #1 — It passed targeted Android NavigationPage and Shell device tests and addresses the code-review failure mode by fixing the root AppBar content heuristic rather than clearing parent padding from toolbar visibility updates.
📝 Recommended PR Title & Description
Assessment: ✏️ Recommend updating — the current title/description accurately describe the raw PR fix, but the winning fix moves the change to root AppBar inset detection/redispatch rather than clearing AppBarLayout padding in ToolbarExtensions.
Recommended title
[Android] SafeArea: Fix hidden navigation bar AppBar inset handling
Recommended description
### Root Cause
When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent can retain stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout.
Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` can remain non-zero because it is driven by padding alone. `MauiWindowInsetListener` used `MeasuredHeight > 0` to determine whether the AppBar had content. Since it treated padding-only height as content, it consumed the top system inset and the inset never reached `SafeAreaExtensions` downstream.
The result was a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime).
### Description of Change
Updates Android AppBar inset handling so stale padding-only height is not treated as visible AppBar content.
The fix keeps AppBar padding ownership inside `MauiWindowInsetListener`:
* `MauiWindowInsetListener` now determines AppBar content from visible, non-zero-height AppBar children instead of parent `AppBarLayout.MeasuredHeight`, so a collapsed toolbar with only stale padding no longer consumes the top inset.
* `ToolbarExtensions.UpdateIsVisible` requests inset recalculation from the containing `CoordinatorLayout` when available, falling back to the toolbar, so hide/show transitions run through the root inset path that owns AppBar padding.
This allows `SafeAreaEdges=None` to be fully respected with no blank gap while preserving top inset padding when other AppBar content remains visible.
Two new device tests pin the fix for both affected paths:
* `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario
* `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario
The HostApp/UI regression test for issue #34472 verifies that content starts at the same Y position whether the page is pushed onto a `NavigationPage` stack or set as the main page.
These tests were adopted from open contributor PR #35555.
### Issues Fixed
Fixes #35103
Fixes #34472
Tested the behaviour in the following platforms
- [x] Android
- [ ] Windows
- [ ] iOS
- [ ] Mac
### Screenshots
| Before Issue Fix | After Issue Fix |
|------------------|-----------------|
| <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
🏁 Report — Final Recommendation
Comparative Analysis — PR #36072
Candidates
| Rank | Candidate | Regression tests | Review result | Assessment |
|---|---|---|---|---|
| 1 | try-fix-1 |
✅ Passed targeted Android NavigationPage and Shell device-test categories | ✅ Self-review had 0 findings | Best root-cause fix. It ignores stale padding-only AppBar height in MauiWindowInsetListener and requests inset recalculation through the root CoordinatorLayout, so AppBar padding remains owned by the inset listener. |
| 2 | pr-plus-reviewer |
✅ Inherits the same targeted-test evidence as the applied reviewer-feedback shape | ✅ Addresses expert reviewer finding | Conceptually equivalent to try-fix-1, but exists as a review-derived sandbox candidate rather than the independently tested STEP 5a candidate. |
| 3 | pr |
✅ Supplied gate passed | ❌ Expert reviewer found 1 major issue | Fixes the reproduced blank-gap scenario, but unconditionally clears parent AppBarLayout padding from toolbar visibility updates and can regress Shell top-tab/other-AppBar-content cases. |
Winning candidate
Winner: try-fix-1
try-fix-1 is the strongest candidate because it passed the targeted Android NavigationPage and Shell regression categories and fixes the actual AppBar content heuristic instead of clearing parent padding from ToolbarExtensions. The raw PR fix passed the gate, but the expert reviewer confirmed a major failure mode where visible AppBar content can lose top inset padding. pr-plus-reviewer addresses the same issue, but it is effectively the reviewer-applied form of try-fix-1; the independently tested try-fix candidate is the safer selection.
Rationale
Candidates that passed regression tests are ranked above any failing candidates. All known candidates passed their supplied or targeted regression checks, so the deciding factor is correctness under broader Android AppBar/Shell failure modes. The direct PR fix is too narrow because it mutates parent AppBar padding from a toolbar visibility mapper. The winning fix keeps padding decisions centralized in MauiWindowInsetListener, where AppBar content and inset consumption are already coordinated.
🧭 Next Steps — alternative fix proposed (try-fix-1)
Automated review — alternative fix proposed
The expert-reviewer evaluation compared the PR fix against automatically generated candidates and selected try-fix-1 as the strongest fix.
Why: try-fix-1 passed the targeted Android NavigationPage and Shell regression tests and fixes the root AppBar inset heuristic instead of clearing parent AppBar padding from ToolbarExtensions. The PR fix passed the supplied gate but retains a major Shell/AppBar-content regression risk confirmed by the expert reviewer.
Please consider applying the candidate diff below (or use it as guidance). Once you push an update, this workflow will re-trigger and re-evaluate.
Candidate diff (try-fix-1)
diff --git a/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs b/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs
index 4e8633b3a1..304f2710f9 100644
--- a/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs
+++ b/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs
@@ -11,6 +11,7 @@ using Android.Text.Style;
using Android.Views;
using AndroidX.AppCompat.Graphics.Drawable;
using AndroidX.AppCompat.Widget;
+using AndroidX.CoordinatorLayout.Widget;
using AndroidX.Core.View;
using AndroidX.Core.View.Accessibility;
using Microsoft.Maui.Graphics;
@@ -54,7 +55,8 @@ namespace Microsoft.Maui.Controls.Platform
}
nativeToolbar.LayoutParameters = lp;
- AndroidX.Core.View.ViewCompat.RequestApplyInsets(nativeToolbar);
+ var rootLayout = ((AView)nativeToolbar).GetParentOfType<CoordinatorLayout>();
+ AndroidX.Core.View.ViewCompat.RequestApplyInsets(rootLayout is not null ? rootLayout : nativeToolbar);
}
public static void UpdateTitleIcon(this AToolbar nativeToolbar, Toolbar toolbar)
diff --git a/src/Core/src/Platform/Android/MauiWindowInsetListener.cs b/src/Core/src/Platform/Android/MauiWindowInsetListener.cs
index 943a1330cf..07a636ac09 100644
--- a/src/Core/src/Platform/Android/MauiWindowInsetListener.cs
+++ b/src/Core/src/Platform/Android/MauiWindowInsetListener.cs
@@ -237,20 +237,8 @@ namespace Microsoft.Maui.Platform
}
}
- // Check if AppBarLayout has meaningful content
- bool appBarHasContent = appBarLayout?.MeasuredHeight > 0;
- if (!appBarHasContent && appBarLayout is not null)
- {
- for (int i = 0; i < appBarLayout.ChildCount; i++)
- {
- var child = appBarLayout.GetChildAt(i);
- if (child?.MeasuredHeight > 0)
- {
- appBarHasContent = true;
- break;
- }
- }
- }
+ // Check if AppBarLayout has meaningful content, ignoring stale padding-only height.
+ bool appBarHasContent = appBarLayout is not null && HasVisibleAppBarContent(appBarLayout);
// Apply padding to AppBarLayout based on content and system insets
if (appBarLayout is not null)
@@ -308,6 +296,24 @@ namespace Microsoft.Maui.Platform
?.Build() ?? insets;
}
+ static bool HasVisibleAppBarContent(AppBarLayout appBarLayout)
+ {
+ for (int i = 0; i < appBarLayout.ChildCount; i++)
+ {
+ var child = appBarLayout.GetChildAt(i);
+ if (child is null || child.Visibility != ViewStates.Visible)
+ continue;
+
+ if (child.LayoutParameters?.Height == 0)
+ continue;
+
+ if (child.MeasuredHeight > 0 || child.Height > 0)
+ return true;
+ }
+
+ return false;
+ }
+
public void TrackView(AView view)
{
_trackedViews.Add(view);
kubaflo
left a comment
There was a problem hiding this comment.
Could you please resolve conflicts?
86758bd to
e15cf34
Compare
Skill Validation Results
✅ Skill Validation Results —
|
68d6500 to
172682b
Compare
172682b to
88079a2
Compare
Regarding try-fix-1: The RequestApplyInsets(rootCoordinatorLayout) change it introduces was evaluated during development and caused a race condition — insets dispatched from the root CoordinatorLayout arrive before the layout pass completes, producing incorrect padding during animation. Our single-line fix in ToolbarExtensions is narrower, avoids that race, and is validated across 32 SafeAreaEdges tests, 307 Shell UI tests, and the full regression suite. |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
…s=None (#36072) <!-- 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! ### Root Cause When `NavigationPage.HasNavigationBar` is set to `false`, `ToolbarExtensions.UpdateIsVisible` collapses the toolbar height to `0`. However, the `AppBarLayout` parent retains stale top padding from a previous inset dispatch — for example, `159px` from the status bar/cutout. Even with toolbar height `0`, `AppBarLayout.MeasuredHeight` remains at `159px` because it is driven by padding alone. `MauiWindowInsetListener` checks `MeasuredHeight > 0` to determine whether the AppBar has content. Since it sees `159 > 0`, it treats the AppBar as having content, consumes the top system inset, and the inset never reaches `SafeAreaExtensions` downstream. The result is a blank gap at the top of the screen equal to the status bar height — visible on both `NavigationPage` (when a page is pushed with the nav bar hidden) and `Shell` (when the navigation bar is hidden at runtime). ### Description of Change A single line is added to `ToolbarExtensions.UpdateIsVisible` in the `!showNavBar` branch to call `SetPadding(0, 0, 0, 0)` on the `AppBarLayout`. This clears the stale padding so `MeasuredHeight` collapses to `0`. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, and `SafeAreaEdges=None` is fully respected with no blank gap. The re-show path is safe — `RequestApplyInsets` is called in both branches of `UpdateIsVisible`, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again. Parent traversal uses `nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()` — the established MAUI pattern used in `ShellToolbarTracker.cs`. Two new device tests pin the fix for both affected paths: * `PushingToPageWithoutNavigationBarClearsAppBarInsetPadding` for the `NavigationPage` scenario * `HiddenShellNavigationBarClearsAppBarInsetPadding` for the `Shell` scenario These tests were adopted from open contributor PR #35555 . ### Issues Fixed Fixes #35103 Fixes #34472 Tested the behaviour in the following platforms - [x] Android - [ ] Windows - [ ] iOS - [ ] Mac ### Screenshots | Before Issue Fix | After Issue Fix | |------------------|-----------------| | <video width="350" alt="withoutfix" src="https://github.com/user-attachments/assets/ce6064b7-6a8e-47af-a2c7-3259f71af379" /> | <video width="350" alt="withfix" src="https://github.com/user-attachments/assets/67c5821b-8057-4048-9e05-e0c508f67ae5" /> |
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue.
Thank you!
Root Cause
When
NavigationPage.HasNavigationBaris set tofalse,ToolbarExtensions.UpdateIsVisiblecollapses the toolbar height to0. However, theAppBarLayoutparent retains stale top padding from a previous inset dispatch — for example,159pxfrom the status bar/cutout.Even with toolbar height
0,AppBarLayout.MeasuredHeightremains at159pxbecause it is driven by padding alone.MauiWindowInsetListenerchecksMeasuredHeight > 0to determine whether the AppBar has content. Since it sees159 > 0, it treats the AppBar as having content, consumes the top system inset, and the inset never reachesSafeAreaExtensionsdownstream.The result is a blank gap at the top of the screen equal to the status bar height — visible on both
NavigationPage(when a page is pushed with the nav bar hidden) andShell(when the navigation bar is hidden at runtime).Description of Change
A single line is added to
ToolbarExtensions.UpdateIsVisiblein the!showNavBarbranch to callSetPadding(0, 0, 0, 0)on theAppBarLayout.This clears the stale padding so
MeasuredHeightcollapses to0. The inset listener then correctly identifies the AppBar as having no content, passes the top inset downstream, andSafeAreaEdges=Noneis fully respected with no blank gap.The re-show path is safe —
RequestApplyInsetsis called in both branches ofUpdateIsVisible, so the next inset dispatch naturally restores the correct padding when the nav bar is shown again.Parent traversal uses
nativeToolbar.Parent?.GetParentOfType<AppBarLayout>()— the established MAUI pattern used inShellToolbarTracker.cs.Two new device tests pin the fix for both affected paths:
PushingToPageWithoutNavigationBarClearsAppBarInsetPaddingfor theNavigationPagescenarioHiddenShellNavigationBarClearsAppBarInsetPaddingfor theShellscenarioThese tests were adopted from open contributor PR Fix Android Shell top inset when nav bar is hidden #35555 .
Issues Fixed
Fixes #35103
Fixes #34472
Tested the behaviour in the following platforms
Screenshots
WithoutFix.mov
WithFix.mov