Skip to content

[Mac] Fixed the Issue with the TitleBar TrailingContent not being properly aligned#36541

Open
Ahamed-Ali wants to merge 2 commits into
dotnet:mainfrom
Ahamed-Ali:fix-29516Titlebar
Open

[Mac] Fixed the Issue with the TitleBar TrailingContent not being properly aligned#36541
Ahamed-Ali wants to merge 2 commits into
dotnet:mainfrom
Ahamed-Ali:fix-29516Titlebar

Conversation

@Ahamed-Ali

Copy link
Copy Markdown
Contributor

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 of the issue

  • TitleBar.TrailingContent contains a HorizontalStackLayout, which includes a Border. The Border itself contains a StackLayout with content. For layouts used within the Window.TitleBar, setting IgnoreSafeArea = true is essential to ensure proper rendering within the window bounds. However, when a Border (or any IContentView) containing a layout is added, this setting is not applied recursively. As a result, the inner layout does not ignore the safe area, leading to rendering issues.

Description of Change

  • To resolve this, the IgnoreLayoutSafeArea extension method was updated to recursively apply IgnoreSafeArea = true not only to direct child layouts, but also to layouts contained within IContentView instances.

Issues Fixed

Fixes #29516

Tested the behaviour in the following platforms

  • Android
  • Windows
  • iOS
  • Mac

Screenshot

Before Issue Fix After Issue Fix
TitleBarIssue.mov
TitleBarfix.mov

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36541

Or

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

@Ahamed-Ali Ahamed-Ali added platform/macos macOS / Mac Catalyst area-controls-titlebar community ✨ Community Contribution labels Jul 13, 2026
@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Jul 13, 2026
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 13, 2026
@sheiksyedm
sheiksyedm marked this pull request as ready for review July 13, 2026 09:18
Copilot AI review requested due to automatic review settings July 13, 2026 09:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses a macOS/MacCatalyst TitleBar rendering issue where TrailingContent becomes misaligned when it contains an IContentView (e.g., Border) whose Content is a layout, by expanding the safe-area ignore logic and adding a UI test coverage scenario.

Changes:

  • Update LayoutExtensions.IgnoreLayoutSafeArea to recurse into layouts hosted inside IContentView.Content.
  • Add a HostApp repro page (Issue29516) that sets Window.TitleBar and places a layout inside a Border in TrailingContent.
  • Add an Appium screenshot test (Issue29516) validating correct TitleBar rendering (including the TitleBar region).

Reviewed changes

Copilot reviewed 3 out of 5 changed files in this pull request and generated 1 comment.

File Description
src/Controls/src/Core/Layout/LayoutExtensions.cs Expands safe-area ignore recursion to reach layout content inside IContentView.
src/Controls/tests/TestCases.HostApp/Issues/Issue29516.cs Adds a TitleBar repro with TrailingContent containing a Border wrapping a layout.
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs Adds a screenshot-based UI test to validate TitleBar trailing content alignment.

Comment thread src/Controls/src/Core/Layout/LayoutExtensions.cs Outdated

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 1 findings

See inline comments for details.

Comment thread src/Controls/src/Core/Layout/LayoutExtensions.cs Outdated
@MauiBot MauiBot added s/agent-gate-failed AI could not verify tests catch the bug s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Jul 13, 2026
MauiBot

This comment was marked as outdated.

@kubaflo

kubaflo commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

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

@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added s/agent-review-in-progress AI review is currently running for this PR and removed s/agent-review-in-progress AI review is currently running for this PR labels Jul 14, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 3 findings

See inline comments for details.

Comment thread src/Controls/src/Core/Layout/LayoutExtensions.cs Outdated
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 14, 2026
kubaflo pushed a commit that referenced this pull request Jul 19, 2026
…xit code

The snapshot-diff image embed (best-effort) runs native commands (gh/git).
When the maui-bot PAT lacks the 'gist' scope, `gh api gists` fails and leaves
$LASTEXITCODE non-zero. On a gate-FAILED PR the Post job takes the deferred /
no-PRAgent branch, which runs no later native command to reset it, so the whole
"Post AI summary review" task inherited exit code 1 and failed (deep results
never posted). Reset $LASTEXITCODE to 0 after the best-effort embed so it can
never affect the task result. Observed on build 14701124 (PR #36561, catalyst);
build 14701123 (PR #36541, gate passed) posted a review afterward and was
unaffected.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 15d2af20-e4ab-4e88-9011-cfbd83513bc0
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 19, 2026
@MauiBot MauiBot added s/agent-fix-win AI found a better alternative fix than the PR and removed s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates labels Jul 19, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 19, 2026
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 19, 2026
@MauiBot MauiBot added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-fix-win AI found a better alternative fix than the PR labels Jul 19, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 1 findings

See inline comments for details.

Comment thread src/Controls/src/Core/Layout/LayoutExtensions.cs
@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 20, 2026
kubaflo added a commit that referenced this pull request Jul 20, 2026
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 20, 2026
rmarinho added a commit that referenced this pull request Jul 20, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 3 findings

See inline comments for details.

{
IgnoreLayoutSafeArea(childLayout);
}
else if (child is IContentView contentView)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Logic and Correctness — This only handles IContentView when it is a child of a Layout, but TitleBar.LeadingContent, Content, and TrailingContent are typed as IView and TitleBar still calls the helper only via (newValue as Layout)?.IgnoreLayoutSafeArea(). A valid title-bar slot such as TrailingContent = new Border { Content = new StackLayout(...) } has an IContentView root, so the helper is never invoked and the nested layout still receives safe-area adjustment. Please invoke the helper for IContentView roots as well, or otherwise normalize all title-bar slot roots through the same recursive path.

}
else if (child is IContentView contentView)
{
if (contentView.PresentedContent is Layout presentedLayout)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Safe Area and Window Insets — The recursion stops unless the immediate PresentedContent/Content is a Layout. Nested wrapper chains that are valid MAUI content, for example HorizontalStackLayout > Border > ContentView > StackLayout or HorizontalStackLayout > Border > Border > StackLayout, leave the inner layout unchanged because the first wrapper's presented content is another IContentView, not a Layout. The traversal needs to continue through IContentView nodes until it reaches layouts, otherwise common TitleBar compositions still render with the unwanted safe-area offset.

[Category(UITestCategories.Window)]
public void TitleBarTrailingContentShouldRenderProperly()
{
App.WaitForElement("ContentLabel");

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[moderate] Regression Prevention and Test Coverage — This waits for ContentLabel in the page body, then screenshots the title bar. Window.TitleBar is assigned in OnAppearing and its native title-bar content can be realized later than the page content, so the test can capture before the trailing/title-bar content is actually present. Please give a TitleBar sentinel (for example the trailing label) an AutomationId and wait for that before VerifyScreenshot(includeTitleBar: true).

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 20, 2026
rmarinho added a commit that referenced this pull request Jul 20, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 2 findings

See inline comments for details.

{
IgnoreLayoutSafeArea(childLayout);
}
else if (child is IContentView contentView)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[moderate] Logic and Correctness — The new else if (child is IContentView contentView) block only traverses one IContentView level. If PresentedContent/Content is itself an IContentView rather than a Layout, recursion stops and any Layout nested within is silently skipped.

Concrete gap: HorizontalStackLayout { ContentView { Border { StackLayout } } }ContentView.PresentedContent == ContentView.Content == Border (not a Layout), so neither branch fires and StackLayout never receives IgnoreSafeArea = true. The fix is correct for the reported one-level case (HorizontalStackLayout > Border > StackLayout) but leaves two-level IContentView chains unprotected.

Consider adding a recursive helper so that when PresentedContent/Content is an IContentView (rather than a Layout), the same walk continues into it:

static void IgnoreContentViewSafeArea(IContentView contentView)
{
    var inner = contentView.PresentedContent ?? contentView.Content;
    if (inner is Layout innerLayout)
        IgnoreLayoutSafeArea(innerLayout);
    else if (inner is IContentView innerContentView)
        IgnoreContentViewSafeArea(innerContentView);
}

public void TitleBarTrailingContentShouldRenderProperly()
{
App.WaitForElement("ContentLabel");
VerifyScreenshot(includeTitleBar: true);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[moderate] Regression Prevention and Test CoverageWaitForElement("ContentLabel") only confirms the page body is loaded; it does not guarantee the TitleBar has finished its layout pass. Window.TitleBar = _titleBar is set in OnAppearing, which may trigger an asynchronous layout pass on the native side. Without retryTimeout:, VerifyScreenshot retries only once (with a 500 ms delay), which may not be enough to capture a fully-rendered TitleBar, leading to a flaky baseline mismatch.

The recommended fix is to add AutomationId = "TrailingContentLabel" to the Label inside the Border's StackLayout in the host-app fixture, then call App.WaitForElement("TrailingContentLabel") before the screenshot so the test blocks until the TitleBar content is actually visible. Alternatively, pass retryTimeout: TimeSpan.FromSeconds(5) here:

VerifyScreenshot(includeTitleBar: true, retryTimeout: TimeSpan.FromSeconds(5));

rmarinho added a commit that referenced this pull request Jul 21, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Review Summary

@Ahamed-Ali — new AI review results are available based on this last commit: fba7afb. To request a fresh review after new comments or commits, comment /review rerun.

Gate Inconclusive Confidence Low Platform MacCatalyst


🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix

Gate Result: ⚠️ INCONCLUSIVE

Platform: CATALYST · Base: main · Merge base: 76c77c03

📷 Snapshot baseline not reproducible on this agent — inconclusive — with the fix applied, the only remaining VerifyScreenshot failure is a LARGE diff (tens of percent) that is essentially UNCHANGED from the WITHOUT-fix run — the fix moved the pixel difference by under 1 percentage point. That is the signature of a cross-machine baseline mismatch: the committed baseline PNG was captured on a different machine and this CI agent renders the control (commonly the macOS TitleBar / window chrome) differently, swamping any fix effect. The gate cannot tell an environmental mismatch from an ineffective fix, so this is inconclusive, not a confirmed fix failure — inspect the snapshots-diff artifact manually and, if the render is correct, regenerate the baseline PNG on the target agent.

Test Without Fix (expect FAIL) With Fix (expect PASS)
🖥️ Issue29516 Issue29516 ✅ FAIL — 117s ⚠️ ENV ERROR
🔴 Without fix — 🖥️ Issue29516: FAIL ✅ · 117s

Error-relevant lines (filtered from the build log):

     at VisualTestUtils.VisualRegressionTester.Fail(String message) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 162
   at VisualTestUtils.VisualRegressionTester.VerifyMatchesSnapshot(String name, ImageSnapshot actualImage, String environmentName, ITestContext testContext) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 123
   at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 477
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 309
   at Microsoft.Maui.TestCases.Tests.Issues.Issue29516.TitleBarTrailingContentShouldRenderProperly() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs:line 20
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
🟢 With fix — 🖥️ Issue29516: ⚠️ ENV ERROR · 216s

Error-relevant lines (filtered from the build log):

     at VisualTestUtils.VisualRegressionTester.Fail(String message) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 162
   at VisualTestUtils.VisualRegressionTester.VerifyMatchesSnapshot(String name, ImageSnapshot actualImage, String environmentName, ITestContext testContext) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 123
   at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 477
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 309
   at Microsoft.Maui.TestCases.Tests.Issues.Issue29516.TitleBarTrailingContentShouldRenderProperly() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs:line 20
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

⚠️ Failure Details

  • ⚠️ Issue29516 with fix: With-fix run fails only VerifyScreenshot snapshot diff(s) that are LARGE (max 43.09%) and essentially UNCHANGED from the without-fix run — the fix moved the pixel difference by under ~1 percentage point. The committed baseline PNG cannot be reproduced on this gate agent (a cross-machine rendering mismatch, e.g. macOS TitleBar / window chrome), which swamps any fix effect, so the gate cannot distinguish an environmental mismatch from an ineffective fix. INCONCLUSIVE — a human should inspect the snapshots-diff artifact; if the render is correct, regenerate the baseline on the target agent.
📁 Fix files reverted (1 files)
  • src/Controls/src/Core/Layout/LayoutExtensions.cs

📱 UI Tests — Layout,Window

Detected UI test categories: Layout,Window

Deep UI tests — 18 passed, 190 failed across 2 categories on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
Layout 18/197 (175 ❌) 188 diff PNGs
Window 0/15 (15 ❌)
🔍 AI analysis of failures — PR-related vs unrelated

🔍 AI-generated triage (GitHub Copilot CLI) — a heuristic judgement of whether each deep UI test failure is connected to this PR's changes. Verify before relying on it.

Likely PR-related: one or more failures appear connected to this PR's changes.

  • ✗ PR-related — Broad Catalyst layout regressions (170+ tests): the PR changes shared LayoutExtensions.IgnoreLayoutSafeArea, and the failing Layout bucket is dominated by Grid/FlexLayout/AbsoluteLayout/BindableLayout/StackLayout visual diffs and element timeouts that plausibly follow from a shared layout/safe-area behavior change on Catalyst.
  • ✗ PR-related — Newly added TitleBar trailing-content test (1 test): TitleBarTrailingContentShouldRenderProperly is introduced by this PR for Mac Catalyst/Windows and fails on the Catalyst run while waiting for the new page content, so it is directly tied to the PR’s test surface.
  • ℹ Uncertain — Existing TitleBar/window tests (~14 tests): these are in the same Window/TitleBar category as the PR’s new regression test, but they all fail with generic Timed out waiting for element errors and the diff does not change TitleBar production code, so they could be collateral from the same Catalyst page/layout issue or pre-existing flakiness.

Strongest signal: the failures are concentrated in Catalyst Layout plus TitleBar, and the only production change is shared layout safe-area recursion; re-check a representative layout screenshot and the new TitleBar page startup failure first.

📸 Snapshot differences — baseline vs actual vs diff (top 25 of 188 · ranked by PR-relevance · full set in the artifact above)

For each failing VerifyScreenshot snapshot: the committed baseline, the actual render on this CI agent, and the computed diff. Ordered by likely PR-relevance — snapshots whose baseline/test file this PR changed are shown first. A large, uniform diff across many snapshots is usually a cross-machine baseline/environment mismatch (e.g. the macOS TitleBar / window chrome), not a code regression — compare against baseline history before concluding.

FlexLayout_AlignItemsCenter — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignItemsCenter baselineFlexLayout_AlignItemsCenter actualFlexLayout_AlignItemsCenter diff
FlexLayout_AlignItemsCenter — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignItemsCenter actualFlexLayout_AlignItemsCenter diff
FlexLayout_AlignItemsEnd — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignItemsEnd actualFlexLayout_AlignItemsEnd diff
FlexLayout_AlignItemsEnd — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignItemsEnd baselineFlexLayout_AlignItemsEnd actualFlexLayout_AlignItemsEnd diff
FlexLayout_AlignItemsStretch — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignItemsStretch baselineFlexLayout_AlignItemsStretch actualFlexLayout_AlignItemsStretch diff
FlexLayout_AlignItemsStretch — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignItemsStretch actualFlexLayout_AlignItemsStretch diff
FlexLayout_AlignSelfCenter — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignSelfCenter baselineFlexLayout_AlignSelfCenter actualFlexLayout_AlignSelfCenter diff
FlexLayout_AlignSelfCenter — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignSelfCenter actualFlexLayout_AlignSelfCenter diff
FlexLayout_AlignSelfEnd — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignSelfEnd baselineFlexLayout_AlignSelfEnd actualFlexLayout_AlignSelfEnd diff
FlexLayout_AlignSelfEnd — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignSelfEnd actualFlexLayout_AlignSelfEnd diff
FlexLayout_AlignSelfStart — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignSelfStart actualFlexLayout_AlignSelfStart diff
FlexLayout_AlignSelfStart — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignSelfStart baselineFlexLayout_AlignSelfStart actualFlexLayout_AlignSelfStart diff
FlexLayout_AlignSelfStretch — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_AlignSelfStretch actualFlexLayout_AlignSelfStretch diff
FlexLayout_AlignSelfStretch — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_AlignSelfStretch baselineFlexLayout_AlignSelfStretch actualFlexLayout_AlignSelfStretch diff
FlexLayout_BasisAuto_DirectionColumn — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisAuto_DirectionColumn actualFlexLayout_BasisAuto_DirectionColumn diff
FlexLayout_BasisAuto_DirectionColumn — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_BasisAuto_DirectionColumn baselineFlexLayout_BasisAuto_DirectionColumn actualFlexLayout_BasisAuto_DirectionColumn diff
FlexLayout_BasisAuto_DirectionColumnReverse — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_BasisAuto_DirectionColumnReverse baselineFlexLayout_BasisAuto_DirectionColumnReverse actualFlexLayout_BasisAuto_DirectionColumnReverse diff
FlexLayout_BasisAuto_DirectionColumnReverse — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisAuto_DirectionColumnReverse actualFlexLayout_BasisAuto_DirectionColumnReverse diff
FlexLayout_BasisAuto_DirectionRow — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_BasisAuto_DirectionRow baselineFlexLayout_BasisAuto_DirectionRow actualFlexLayout_BasisAuto_DirectionRow diff
FlexLayout_BasisAuto_DirectionRow — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisAuto_DirectionRow actualFlexLayout_BasisAuto_DirectionRow diff
FlexLayout_BasisAuto_DirectionRowReverse — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_BasisAuto_DirectionRowReverse baselineFlexLayout_BasisAuto_DirectionRowReverse actualFlexLayout_BasisAuto_DirectionRowReverse diff
FlexLayout_BasisAuto_DirectionRowReverse — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisAuto_DirectionRowReverse actualFlexLayout_BasisAuto_DirectionRowReverse diff
FlexLayout_BasisFixed_DirectionColumn — `mac` · Layout
Baseline (committed)Actual (CI)Diff
FlexLayout_BasisFixed_DirectionColumn baselineFlexLayout_BasisFixed_DirectionColumn actualFlexLayout_BasisFixed_DirectionColumn diff
FlexLayout_BasisFixed_DirectionColumn — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisFixed_DirectionColumn actualFlexLayout_BasisFixed_DirectionColumn diff
FlexLayout_BasisFixed_DirectionColumnReverse — `ui-diagnostics` · Layout
Actual (CI)Diff
FlexLayout_BasisFixed_DirectionColumnReverse actualFlexLayout_BasisFixed_DirectionColumnReverse diff
Layout — 175 failed tests
FlexLayoutWrappingWithToleranceWorksCorrectly
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue30957.FlexLayoutWrappingWithToleranceWorksCorrectly() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs:line 19
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, Object
...
FlexLayout_SetAlignItemsCenterWrap
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_SetAlignItemsCenterWrap.png (26.73% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_SetAlignItemsCenterWrap() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 780
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHand
...
VerifyGrid_SetColumn
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyGrid_SetColumn.png (25.17% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.GridFeatureTests.VerifyGrid_SetColumn() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/GridFeatureTests.cs:line 55
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMet
...
VerifyGrid_SetRow_SetColumnSpacing
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyGrid_SetRow_SetColumnSpacing.png (25.18% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.GridFeatureTests.VerifyGrid_SetRow_SetColumnSpacing() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/GridFeatureTests.cs:line 417
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack re
...
VerifyGrid_HorizontalOptionsCenter
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyGrid_HorizontalOptionsCenter.png (25.17% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.GridFeatureTests.VerifyGrid_HorizontalOptionsCenter() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/GridFeatureTests.cs:line 204
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack re
...
ModifyingANonVisibleLayoutWorks
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24434.ModifyingANonVisibleLayoutWorks() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24434.cs:line 19
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack 
...
FlexLayout_BasisAuto_DirectionColumnReverse
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_BasisAuto_DirectionColumnReverse.png (26.63% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_BasisAuto_DirectionColumnReverse() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 721
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConst
...
FlexLayoutCycleException
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue9075.FlexLayoutCycleException() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue9075.cs:line 20
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL
...
FlexLayout_BasisFixed_DirectionRowReverse
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_BasisFixed_DirectionRowReverse.png (25.86% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_BasisFixed_DirectionRowReverse() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 628
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstruct
...
NonAppCompatBasicSwitchTest
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue6260.NonAppCompatBasicSwitchTest() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue6260.cs:line 22
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, B
...
NestedOuterLayoutWithAutomationIdIsFoundByAppium
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue4715.NestedOuterLayoutWithAutomationIdIsFoundByAppium() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue4715.cs:line 67
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, Objec
...
VerifyBindableLayoutWithItemsSourceNone
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithItemsSourceNone.png (41.99% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at VisualTestUtils.VisualRegressionTester.Fail(String message) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 162
   at VisualTestUtils.VisualRegressionTester.VerifyMatchesSnapshot(String name, ImageSnapshot actualImage, String environmentName, ITestContext testContext) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 123
   at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 477
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 r
...
FlexLayout_JustifyContentSpaceBetween
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_JustifyContentSpaceBetween.png (26.45% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_JustifyContentSpaceBetween() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 404
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, Obje
...
FlexLayout_Child1Order
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_Child1Order.png (27.32% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_Child1Order() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 543
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at 
...
FlexLayout_DirectionColumn
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_DirectionColumn.png (26.51% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_DirectionColumn() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 344
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result
...
FlexLayout_BasisAuto_DirectionRow
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_BasisAuto_DirectionRow.png (27.20% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_BasisAuto_DirectionRow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 560
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandle
...
VerifyAbsoluteLayout_YProportional
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyAbsoluteLayout_YProportional.png (23.81% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AbsoluteLayoutFeatureTests.VerifyAbsoluteLayout_YProportional() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AbsoluteLayoutFeatureTests.cs:line 116
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMethodInfo.Invo
...
FlexLayout_SetWrapAlignContentSpaceAround
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_SetWrapAlignContentSpaceAround.png (27.56% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_SetWrapAlignContentSpaceAround() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 112
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstruct
...
VerticalStackLayout_Spacing_With_RTL
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.StackLayoutFeatureTests.VerticalStackLayout_Spacing_With_RTL() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/StackLayoutFeatureTests.cs:line 87
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** 
...
FlexLayout_AlignSelfStretch
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_AlignSelfStretch.png (27.20% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_AlignSelfStretch() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 488
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack resu
...
TwoPaneView_Wide_UsingRect
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.TwoPaneViewFeatureTests.TwoPaneView_Wide_UsingRect() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TwoPaneViewFeatureTests.cs:line 89
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments,
...
VerifyGrid_SetRowSpacingAndPadding
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyGrid_SetRowSpacingAndPadding.png (24.99% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.GridFeatureTests.VerifyGrid_SetRowSpacingAndPadding() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/GridFeatureTests.cs:line 455
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack re
...
VerifyAbsoluteLayout_HeightProportional
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyAbsoluteLayout_HeightProportional.png (28.36% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AbsoluteLayoutFeatureTests.VerifyAbsoluteLayout_HeightProportional() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AbsoluteLayoutFeatureTests.cs:line 206
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseIn
...
FlexLayout_DirectionRowReverse
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_DirectionRowReverse.png (25.86% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_DirectionRowReverse() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 326
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStac
...
VerifyBindableLayoutWithGridItemTemplate
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithGridItemTemplate.png (30.92% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at VisualTestUtils.VisualRegressionTester.Fail(String message) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 162
   at VisualTestUtils.VisualRegressionTester.VerifyMatchesSnapshot(String name, ImageSnapshot actualImage, String environmentName, ITestContext testContext) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 123
   at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 477
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 
...
LabelDisplayWithoutCroppingInsideVerticalLayout
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue15559.LabelDisplayWithoutCroppingInsideVerticalLayout() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue15559.cs:line 18
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, Obje
...
Issue3475TestsLayoutCompressionPerformance
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue3475.Issue3475TestsLayoutCompressionPerformance() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/Issue3475.cs:line 26
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, Obj
...
FlexLayout_SetWrapAlignContentCenter
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: FlexLayout_SetWrapAlignContentCenter.png (28.81% difference)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance, Boolean includeTitleBar) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.FlexLayoutFeatureTests.FlexLayout_SetWrapAlignContentCenter() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/FlexLayoutFeatureTests.cs:line 61
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectH
...
CEmptyViewStringHidesWhenItemsSourceIsFilled
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue6932_emptyviewstring.CEmptyViewStringHidesWhenItemsSourceIsFilled() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/Issue6932_emptyviewstring.cs:line 47
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnS
...
TwoPaneView_Pane2SizeIncrease
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.TwoPaneViewFeatureTests.TwoPaneView_Pane2SizeIncrease() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TwoPaneViewFeatureTests.cs:line 277
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** argume
...

(+145 more — see TRX in artifact)

Window — 15 failed tests
TitleBarWithLargeHeightShell
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_Shell.TitleBarWithLargeHeightShell() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_Shell.cs:line 51
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syst
...
TitleBarWithLargeHeight
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_2.TitleBarWithLargeHeight() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_2.cs:line 49
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection
...
OpenAlertWithModals
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue21948.OpenAlertWithModals() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23360.cs:line 18
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodB
...
VerifyTitleBarAlignment
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue33136.VerifyTitleBarAlignment() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33136.cs:line 18
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOO
...
NavBarResetsColorAfterSmallTitleBar
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_2.NavBarResetsColorAfterSmallTitleBar() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_2.cs:line 78
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syste
...
VerifyTitleBarLTR
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue30399.VerifyTitleBarLTR() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30399.cs:line 20
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isCo
...
TitleBarIsImplemented1
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489.TitleBarIsImplemented1() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489.cs:line 20
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL
...
TitleBarShouldPropagateBindingContext
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24831.TitleBarShouldPropagateBindingContext() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24831.cs:line 22
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOn
...
TitleBarWithSmallHeight
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_2.TitleBarWithSmallHeight() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_2.cs:line 23
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection
...
VerifyTitleBarRTL
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue30399.VerifyTitleBarRTL() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30399.cs:line 29
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isCo
...
NavBarResetsColorAfterLargeTitleBar
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_2.NavBarResetsColorAfterLargeTitleBar() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_2.cs:line 89
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syste
...
NavBarResetsColorAfterLargeTitleBarShell
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_Shell.NavBarResetsColorAfterLargeTitleBarShell() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_Shell.cs:line 96
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args
...
NavBarResetsColorAfterSmallTitleBarShell
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_Shell.NavBarResetsColorAfterSmallTitleBarShell() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_Shell.cs:line 85
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args
...
TitleBarWithSmallHeightShell
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue24489_Shell.TitleBarWithSmallHeightShell() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue24489_Shell.cs:line 23
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syst
...
TitleBarTrailingContentShouldRenderProperly
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
   at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
   at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
   at Microsoft.Maui.TestCases.Tests.Issues.Issue29516.TitleBarTrailingContentShouldRenderProperly() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs:line 19
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHa
...

📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)


📋 Pre-Flight — Context & Validation

Issue: #29516 - Issue with the TitleBar TrailingContent not being properly aligned on macOS
PR: #36541 - [Mac] Fixed the Issue with the TitleBar TrailingContent not being properly aligned
Platforms Affected: MacCatalyst (primary), Windows test snapshot also added
Files Changed: 1 implementation, 4 test

Key Findings

  • The PR modifies LayoutExtensions.IgnoreLayoutSafeArea(Layout) so a layout-root TitleBar slot can recurse into one direct IContentView child and set IgnoreSafeArea on a contained Layout.
  • Existing TitleBar call sites still invoke the helper only through (newValue as Layout)?.IgnoreLayoutSafeArea() for Leading/Content/Trailing slots, even though those properties are typed as IView.
  • Prior inline reviews repeatedly flagged two unresolved correctness gaps: root IContentView TitleBar content is skipped, and nested content-view wrapper chains stop before reaching inner layouts.
  • The Catalyst gate result supplied to this agent is inconclusive due to build/environment failure; it must not be treated as a failing fix.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: low
Errors: 2 | Warnings: 1 | Suggestions: 0

Key code review findings:

  • src/Controls/src/Core/Layout/LayoutExtensions.cs:17 - TitleBar content rooted at IContentView is still skipped because TitleBar call sites only dispatch Layout roots.
  • src/Controls/src/Core/Layout/LayoutExtensions.cs:19-23 - IContentView traversal is not recursive through wrapper chains such as Border -> ContentView -> StackLayout.
  • src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs:19 - The UI test waits on page body content instead of the TitleBar content being screenshotted.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #36541 Extend IgnoreLayoutSafeArea(Layout) to handle one direct IContentView child whose immediate content is a Layout. ⚠️ INCONCLUSIVE (Gate build/environment error) src/Controls/src/Core/Layout/LayoutExtensions.cs; UI test/snapshots Original PR; narrow fix for Layout > IContentView > Layout shape.

🔬 Code Review — Deep Analysis

Code Review — PR #36541

Independent Assessment

What this changes: Extends LayoutExtensions.IgnoreLayoutSafeArea(Layout) so, while traversing a Layout tree, it also looks through direct IContentView children and applies IgnoreSafeArea to a contained Layout. Adds a TitleBar screenshot UI test for issue 29516.

Inferred motivation: TitleBar content should render edge-to-edge inside window chrome; a layout nested inside a Border/content wrapper was still obeying safe area and became misaligned.

Reconciliation with PR Narrative

Author claims: The PR fixes TitleBar TrailingContent alignment by recursively applying IgnoreSafeArea = true to layouts contained in IContentView instances, and adds Mac/Windows screenshot coverage.

Agreement/disagreement: The code fixes the specific Layout -> Border -> Layout shape used by the new test. It does not fully match the broader "any IContentView" / recursive claim: root IContentView TitleBar content still never enters the helper, and wrapper chains deeper than one IContentView still stop before reaching inner layouts.

Prior Review Reconciliation

Prior ❌ Error Finding Source Status Evidence
Root IContentView TitleBar content never enters helper MauiBot [major] inline reviews ❌ Unresolved TitleBar still calls the helper only as (newValue as Layout)?.IgnoreLayoutSafeArea() at the Leading/Content/Trailing property handlers, so a valid root Border/ContentView slot skips the new branch.
Recursion stops after one content wrapper MauiBot [major] inline review ❌ Unresolved LayoutExtensions.cs:19-23 only recurses when immediate PresentedContent/Content is a Layout; Border -> ContentView -> StackLayout is still missed.
Test waits on page body instead of TitleBar content MauiBot [moderate] inline reviews ❌ Unresolved Issue29516.cs:19 waits for ContentLabel, which is outside the title bar being screenshotted.

Blast Radius Assessment

  • Runs for all instances: No; only TitleBar slot values that are Layout roots currently call this helper.
  • Startup impact: Low; runs on TitleBar content property changes, not global startup.
  • Static/shared state: No new static/shared state.
  • Scope: Shared Controls layout/safe-area UI plumbing; max confidence medium before CI, low after CI.

CI Status

  • Required-check result: gh pr checks --required unavailable because gh is unauthenticated. Public GitHub check-run API for head fba7afb shows failing maui-pr, maui-pr-devicetests, maui-pr-uitests, and Build Analysis, plus failed/cancelled child legs.
  • Classification: Undetermined / not merge-ready; prior /review tests comments report red device/UI evidence requiring investigation.
  • Action taken: Invoked azdo-build-investigator; ci-analysis skill was unavailable, so public check-run data plus existing deterministic test-failure comments were used. Confidence capped low.

Findings

❌ Error — TitleBar content rooted at IContentView is still skipped

src/Controls/src/Core/Layout/LayoutExtensions.cs:17

The new branch only runs after traversal has already entered IgnoreLayoutSafeArea(Layout). But TitleBar.LeadingContent, Content, and TrailingContent accept IView, and the unchanged call sites still invoke this helper only for Layout roots. A valid slot like:

TrailingContent = new Border { Content = new StackLayout { ... } }

never enters this traversal, so the inner layout can still obey title-bar safe area. The fix should start from an IView/IContentView root or update the TitleBar property handlers to dispatch all non-null slot content through a recursive helper.

❌ Error — IContentView traversal is not actually recursive through wrapper chains

src/Controls/src/Core/Layout/LayoutExtensions.cs:19-23

The branch only recurses when the immediate PresentedContent or Content is a Layout. Common nested content-view chains such as:

HorizontalStackLayout -> Border -> ContentView -> StackLayout

still stop at the first wrapper because its content is another IContentView, not a Layout. Since the PR's stated purpose is recursive safe-area suppression for layouts contained inside IContentView, the traversal should continue through IContentView nodes until it reaches nested layouts.

⚠️ Warning — Screenshot test does not wait for the TitleBar content under test

src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29516.cs:19

The test waits for ContentLabel, which is in the page body, then screenshots the title bar. On desktop platforms the native title bar content can materialize independently of body content. Add an AutomationId to the trailing TitleBar sentinel/control and wait for that before VerifyScreenshot(includeTitleBar: true).

Failure-Mode Probing

  • Root content is Border: helper is never called because the TitleBar setters still cast to Layout; bug remains.
  • Nested wrapper chain: traversal stops if an IContentView contains another IContentView before the layout; inner layout remains unchanged.
  • Null content: current null checks avoid crashes.
  • Handler disconnect/reconnect: no new subscriptions or static state, so no accumulation risk.
  • Existing reported shape HorizontalStackLayout -> Border -> StackLayout: this specific shape is addressed.

Verdict: NEEDS_CHANGES

Confidence: low
Summary: The change handles the narrow test shape but leaves unresolved prior major correctness findings for valid TitleBar content compositions and incomplete recursion. CI is also red/undetermined from public check-run data, so this cannot be considered merge-ready.


🛠️ Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix-1 Add an internal IView entry point in LayoutExtensions, call it from all TitleBar slot setters, and recursively traverse IContentView roots/chains. ✅ Targeted unit tests passed; Catalyst gate not rerun 3 files Best balance of coverage and locality; fixes root IContentView, nested wrappers, and custom templates because policy runs when slot properties change.
2 try-fix-2 Replace default-template slot ContentViews with a private TitleBarSlotContentView that applies safe-area policy when template-bound content is inserted. ✅ Targeted unit tests passed after nullable override fix; Catalyst gate not rerun 2 files More scoped than #1, but only helps default templates that use the specialized hosts.
3 try-fix-3 Treat non-explicit safe-area descendants of a platform ITitleBar ancestor as SafeAreaRegions.None in MauiView/MauiScrollView. ⚠️ Blocked before compile by missing net10.0-maccatalyst Core assets 2 files Most comprehensive conceptually, but highest risk because it changes iOS/MacCatalyst platform safe-area hot paths.
4 try-fix-4 Add a Controls-layer safe-area ancestor policy: safe-area-aware controls return None when logically under TitleBar unless SafeAreaEdges is explicit. ✅ TitleBar and SafeArea unit tests passed; Catalyst gate not rerun 6 files Avoids platform hot paths and preserves explicit safe area, but changes shared safe-area semantics across several controls.
PR PR #36541 Extend IgnoreLayoutSafeArea(Layout) to handle one direct IContentView child whose immediate content is a Layout. ⚠️ INCONCLUSIVE (Gate build/environment error) 5 files Original PR; handles the reported layout-root shape but not root IContentView slots or deeper wrapper chains.

Cross-Pollination

Model Round New Ideas? Details
maui-expert-reviewer 1 Yes Proposed root IView traversal from TitleBar setters, implemented as try-fix-1.
maui-expert-reviewer 2 Yes Proposed scoped default-template slot host, implemented as try-fix-2.
maui-expert-reviewer 3 Yes Proposed iOS/MacCatalyst platform safe-area policy, implemented as try-fix-3 but validation blocked.
maui-expert-reviewer 4 Yes Proposed Controls-layer safe-area ancestor policy, implemented as try-fix-4.

Exhausted: Yes — after four materially different designs, remaining variations reduce to moving the same recursive traversal/policy between helper classes without changing behavior. The only additional direction would require broader architecture work around TitleBar safe-area ownership and should not be generated as a trivial try-fix.

Selected Fix: Candidate #1 — It is demonstrably better than the PR because it covers root IContentView slot content and arbitrary nested content-wrapper chains while staying localized to TitleBar property changes plus the existing layout helper. Candidate #4 is also viable and passed broader safe-area tests, but it has a larger shared safe-area blast radius. Candidate #2 is narrower but misses custom templates. Candidate #3 is too risky and locally blocked.


📝 Recommended PR Title & Description

Assessment: ✏️ Recommend updating — the current metadata describes the raw PR's narrower one-level IContentView traversal, but the winning fix applies safe-area suppression from TitleBar IView slots through nested content-view chains and improves the screenshot wait target.

Recommended title

[MacCatalyst] TitleBar: Recursively suppress safe area for slot content

Recommended description

### Root Cause of the issue

- `TitleBar.LeadingContent`, `TitleBar.Content`, and `TitleBar.TrailingContent` are typed as `IView`, but the TitleBar property handlers only applied the TitleBar safe-area suppression helper when the slot root was a `Layout`.
- When TitleBar slot content used `IContentView` wrappers such as `Border` or `ContentView`, layouts inside those wrappers could keep their default safe-area behavior. This caused TitleBar trailing content to render misaligned within the MacCatalyst window title bar.
- A one-level unwrap is not enough for common compositions such as `HorizontalStackLayout -> Border -> ContentView -> StackLayout`.

### Description of Change

- Added an internal `IView` entry point for `IgnoreLayoutSafeArea` so TitleBar slot content can be processed whether the slot root is a `Layout` or an `IContentView`.
- Updated the TitleBar LeadingContent, Content, and TrailingContent property handlers to apply the helper to the full `IView` slot value.
- Updated the traversal to recurse through `IContentView.PresentedContent` / `Content` when those contents are any `IView`, allowing nested wrapper chains to reach inner layouts.
- Added targeted TitleBar unit coverage for root `IContentView` content and nested content-view wrapper chains.
- Added a MacCatalyst/Windows UI regression test for issue #29516 and made it wait for the TitleBar trailing content before taking the screenshot.

### Issues Fixed

Fixes #29516

### Platforms affected / tested

- MacCatalyst is the primary affected platform.
- Windows is included in the UI test guard because TitleBar is available on MacCatalyst and Windows.
- Targeted TitleBar unit tests passed for the winning fix; the supplied Catalyst screenshot gate was inconclusive due an environment/snapshot mismatch and was not rerun.

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video src="https://github.com/user-attachments/assets/b74c8f23-e549-419b-8ca0-d6ee563b8f09"> | <video src="https://github.com/user-attachments/assets/cfaa839b-e3fb-47a9-89f6-55935eae589e"> |

🏁 Report — Final Recommendation

Comparative Report — PR #36541

Candidates compared

Rank Candidate Regression / targeted test result Assessment
1 pr-plus-reviewer Targeted TitleBar unit tests passed; Catalyst gate inconclusive and not rerun Best overall. Keeps the PR's localized fix, resolves root IContentView and nested-wrapper gaps, and improves the UI test wait condition.
2 try-fix-1 Targeted TitleBar unit tests passed; Catalyst gate not rerun Strongest independent STEP 5a candidate. Same core safe-area traversal direction as the reviewer-improved PR, but lacks the PR's existing UI repro/snapshot changes unless separately combined.
3 try-fix-2 Targeted TitleBar unit tests passed after fixing nullable override; Catalyst gate not rerun Correct for default TitleBar templates and scoped to slot hosts, but misses custom TitleBar.ControlTemplate implementations that do not use the default host views.
4 try-fix-4 TitleBar and SafeArea unit tests passed; Catalyst gate not rerun Viable but broader. It changes default safe-area semantics for several Controls types under TitleBar ancestry, which has a larger shared behavior blast radius than the setter/helper-based traversal.
5 pr Gate inconclusive; no candidate-specific targeted unit validation; expert review found two major correctness gaps Fixes the reported Layout -> Border -> Layout shape but still skips root IContentView slot content and nested wrapper chains.
6 try-fix-3 Blocked before compile by missing net10.0-maccatalyst Core assets Conceptually broad, but highest risk because it changes iOS/MacCatalyst platform safe-area hot paths and was not compiled or tested.

No candidate had a confirmed regression-test failure. Per the ranking rule, no passing candidate was ranked below a candidate that failed regression tests. Blocked or inconclusive candidates are ranked below candidates with successful targeted validation.

Key comparison points

pr is too narrow: it only enters the helper when the TitleBar slot root is a Layout, then only unwraps an IContentView if its immediate content is a Layout. That leaves valid TitleBar content rooted at Border/ContentView unfixed and misses deeper wrapper chains.

try-fix-1 and pr-plus-reviewer are the best technical shape because they make the safe-area policy start from the actual TitleBar slot value (IView) and recurse through both layout children and content-view wrappers. This keeps the behavior localized to TitleBar slot property changes and avoids changing platform safe-area hot paths or global safe-area semantics.

pr-plus-reviewer edges out try-fix-1 because it combines that stronger traversal with the PR's existing issue repro and applies the expert reviewer feedback to wait for the TitleBar content before screenshot capture. It is therefore the most complete candidate: implementation coverage, regression coverage, and reviewer concerns are all addressed together.

Winning candidate

Winner: pr-plus-reviewer

Rationale: pr-plus-reviewer is the only candidate that both preserves the PR's issue-specific UI coverage and fixes the expert reviewer's two major correctness gaps with targeted passing unit coverage. Its blast radius remains localized to TitleBar slot safe-area traversal, unlike the broader safe-area semantic and platform-layer alternatives.


🧭 Next Steps — review latest findings

No alternative fix was selected for this run. Review the session findings and CI results before merging.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 3 findings

See inline comments for details.

{
IgnoreLayoutSafeArea(childLayout);
}
else if (child is IContentView contentView)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Logic and Correctness — This only processes IContentView when it is already a child of a Layout, but TitleBar's LeadingContent/Content/TrailingContent properties are typed as IView and their handlers still enter this helper only via (newValue as Layout)?.IgnoreLayoutSafeArea(). A valid slot value such as TrailingContent = new Border { Content = new StackLayout { ... } } is therefore skipped entirely, so the Mac titlebar safe-area/alignment bug still reproduces for root IContentView wrappers. Please make the entry point handle IContentView (for example on IView) instead of only Layout roots.

{
IgnoreLayoutSafeArea(presentedLayout);
}
else if (contentView.Content is Layout contentLayout)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Logic and Correctness — The new traversal only unwraps one IContentView level when its immediate PresentedContent/Content is a Layout. If users compose a titlebar slot as HorizontalStackLayout -> Border -> ContentView -> StackLayout, the inner layout never gets IgnoreSafeArea applied and the misalignment remains. Recurse through IContentView chains until the layout descendants are reached.

[Category(UITestCategories.Window)]
public void TitleBarTrailingContentShouldRenderProperly()
{
App.WaitForElement("ContentLabel");

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[moderate] Regression Prevention — The test waits for ContentLabel, which is in the page body, not in the titlebar being verified. That allows the screenshot to be captured before Window.TitleBar and its trailing content have finished loading/layout, making this regression test flaky and not proving the fixed element is present. Add an AutomationId/sentinel to the titlebar trailing content and wait for that element before VerifyScreenshot(includeTitleBar: true).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-controls-titlebar community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration platform/macos macOS / Mac Catalyst s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-gate-failed AI could not verify tests catch the bug s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issue with the TitleBar TrailingContent not being properly aligned on macOS.

5 participants