Skip to content

Fix Picker SelectedIndex deferred initialization#35629

Merged
kubaflo merged 7 commits into
dotnet:inflight/currentfrom
AdamEssenmacher:issue-9150
May 30, 2026
Merged

Fix Picker SelectedIndex deferred initialization#35629
kubaflo merged 7 commits into
dotnet:inflight/currentfrom
AdamEssenmacher:issue-9150

Conversation

@AdamEssenmacher
Copy link
Copy Markdown

Description of Change

Fixes Picker.SelectedIndex initialization when SelectedIndex is set before picker items are available.

The requested index is now preserved while the picker has no items, the public SelectedIndex remains coerced to -1 until a valid item list exists, and the pending value is applied once items are loaded. Deferred initialization updates SelectedItem but does not raise SelectedIndexChanged.

Adds focused core, XAML, and UI regression coverage for ItemsSource and inline Picker.Items initialization paths.

Issues Fixed

Fixes #9150

PureWeen and others added 5 commits May 21, 2026 16:04
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## What
Restrict the agentic-labeler to apply **exactly one `area-*` label** per
item, while still allowing multiple `platform/*` labels.

## Why
Backfilling the 26 items affected by the `max:1` bug (fixed in dotnet#35540)
revealed that the labeler occasionally applies multiple `area-*` labels
for ambiguous cases:

- **dotnet#35501** got both `area-layout` and `area-safearea`
- **dotnet#35490** got both `area-navigation` and `area-controls-tabbedpage`

The intended behavior is exactly one best-fit `area-*` per item (a
label-quota distinction not expressible via
`safe-outputs.add-labels.max:` — that field counts total labels, not
labels per prefix). The fix has to live in the agent's instructions.

## Changes

### `.github/skills/agentic-labeler/SKILL.md`
- Scope section: "Exactly one `area-*`" / "One or more `platform/*`".
- Area rules section: renamed heading, changed "pick one or more" →
"apply exactly one".
- New **tie-breaking heuristics** for the area-* selection:
- Specific control beats generic area (`area-controls-tabbedpage` over
`area-navigation`)
  - Sub-area beats parent area (`area-safearea` over `area-layout`)
  - Subject-matter focus beats incidental touch
  - When genuinely tied, prefer the user-visible feature
- Mixed-PR rule clarified: infra-primary PRs get only
`area-infrastructure` (no second product area).

### `.github/workflows/agentic-labeler.md`
- Added explicit reinforcement in the workflow prompt: "Apply exactly
one `area-*` label … and one or more `platform/*` labels".
- Fixed two stale `max: 1` comments left over from dotnet#35540 (the cap is
now `max: 10`).

### `.github/workflows/agentic-labeler.lock.yml`
- Regenerated via `gh aw compile`. Diff is frontmatter-hash + heredoc
rotations only — no semantic change to the compiled config.

## Validation
- Reviewed all 21 existing eval scenarios in `tests/eval.yaml` — none
assert multiple `area-*` labels, so no test updates needed.
- The `max: 10` cap in `safe-outputs` is preserved as a blast-radius
safeguard (one area + several platforms still fit comfortably).

## Follow-ups (not in this PR)
If accuracy of the "one area" rule drops below ~95% in eval runs,
consider adding a deterministic post-step that strips extra `area-*`
labels per a known precedence list (Option B from the design
discussion).

Co-authored-by: bot <bot@test>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Description

Extends the `maui-copilot` DevDiv pipeline (pipeline 27723) with a
3-stage architecture that runs real UI tests on platform-pool agents and
reports results directly in the AI summary PR comment.

### Pipeline Workflow

```
┌─────────────────────────────────────────────────────────┐
│  Stage 1: ReviewPR                                      │
│                                                         │
│  STEP 1: Branch Setup (checkout + cherry-pick PR)       │
│  STEP 2: Detect UI Test Categories                      │
│  STEP 3: Run Detected UI Tests (in-process, fast)       │
│  STEP 4: Regression Cross-Reference                     │
│  STEP 5: Gate — verify tests fail/pass before/after fix │
│  STEP 6: Code Review — deep analysis via Copilot agent  │
│                                                         │
│  Outputs → CopilotLogs artifact + detectedCategories    │
└──────────────────────┬──────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────┐
│  Stage 2: RunDeepUITests (platform-pool agent)          │
│                                                         │
│  iOS: AcesShared Tahoe + iOS 26.4                       │
│  Android: ubuntu-22.04 + KVM + AVD                      │
│                                                         │
│  Runs BuildAndRunHostApp.ps1 per detected category      │
│  Outputs → drop-deep-uitests artifact (TRX + diffs)     │
└──────────────────────┬──────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────┐
│  Stage 3: PostResults                                   │
│                                                         │
│  1. Download CopilotLogs (review content files)         │
│  2. Download drop-deep-uitests (TRX results)            │
│  3. Merge deep results into uitests/content.md          │
│  4. Post full AI Summary comment on PR                  │
│  5. Apply labels (s/agent-reviewed, etc.)               │
│                                                         │
│  One comment with everything — no patching needed       │
└─────────────────────────────────────────────────────────┘
```

### What's New

**Deep UI Test Execution (Stage 2)**
- Runs detected UI test categories on proper platform-pool agents (not
in-process on Linux)
- **iOS**: AcesShared Tahoe agents with iOS 26.4 simulator, iPhone 11
Pro (matching `ios-26` baselines from PR dotnet#35061)
- **Android**: ubuntu-22.04 with KVM, AVD boot with `-partition-size
2048`, `ignoreHiddenApiPolicyError` capability
- TRX results + snapshot-diff PNGs published as `drop-deep-uitests`
artifact

**Unified Comment Posting (Stage 3)**
- Comment posting and label application deferred to Stage 3 (after deep
tests complete)
- Single AI summary comment includes ALL results: code review + deep
test results
- Nested collapsible `<details>` for failed tests with full error +
stack trace
- Dynamic section title: `🧪 UI Tests — CollectionView, TabbedPage`
- Artifact download link for snapshot-diff PNGs

**Android Emulator Improvements**
- AVD boot step with proper partition size, ADB key pre-authorization,
boot wait
- `DEVICE_UDID` pass-through prevents double emulator boot
- Disk cleanup on hosted ubuntu agents (frees ~22GB)
- KVM enablement + `appium:ignoreHiddenApiPolicyError` for API 30

**iOS Simulator Improvements**
- Tahoe pool demand ensures macOS 26.x agents
- Explicit iOS 26.4 download via latest Xcode
- Auto-creates iPhone 11 Pro for baseline resolution match

### Validation

Tested across 30+ pipeline iterations on 6 PRs:

| PR | iOS | Android |
|---|---|---|
| 35358 (ViewBaseTests) | **112/112 ALL PASS** ✅ | **118/119 PASS** ✅ |
| 35359 (TabbedPage) | 44/50 (1 real failure) | 74/75 (1 real failure) |
| 35356 (CollectionView) | **415/417 PASS** ✅ | 593/619 (26 real
failures) |

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…35589)

> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

Backport of dotnet#35460 to `main`.

/cc @PureWeen

Co-authored-by: HarishKumarSF4517 <harish.kumar@syncfusion.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 27, 2026

🚀 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 -- 35629

Or

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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 fixes Picker.SelectedIndex when it’s set before the picker has items available (e.g., XAML sets SelectedIndex before ItemsSource/Items are populated). It preserves the requested index while Items is empty (keeping the public SelectedIndex coerced to -1), then applies the pending selection once items are available, updating SelectedItem without raising SelectedIndexChanged.

Changes:

  • Add pending SelectedIndex storage and deferred-apply logic to Picker, including suppression of SelectedIndexChanged during deferred initialization.
  • Add core unit tests validating deferred selection behavior across ItemsSource, inline Items, clamping, and clearing.
  • Add XAML unit test + HostApp/UI test coverage for both ItemsSource and inline Picker.Items initialization paths.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/Controls/src/Core/Picker/Picker.cs Implements pending selected-index tracking, deferred apply, and event suppression during deferred initialization.
src/Controls/tests/Core.UnitTests/PickerTests.cs Adds unit tests covering deferred initialization, clamping, and “no event during deferred apply” expectations.
src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml Adds XAML repro for SelectedIndex set before ItemsSource / inline items exist.
src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs Adds XAML unit tests validating the deferred selection behavior and event suppression during construction.
src/Controls/tests/TestCases.HostApp/Issues/Issue9150.xaml Adds HostApp repro UI with automation IDs for UI validation.
src/Controls/tests/TestCases.HostApp/Issues/Issue9150.xaml.cs Implements runtime “Passed/Failed” status evaluation for selection + event count.
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue9150.cs Adds Appium UI regression test asserting the HostApp status is “Passed”.

@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented May 27, 2026

/review -b feature/refactor-copilot-yml -p ios

MauiBot

This comment was marked as outdated.

@MauiBot MauiBot added s/agent-fix-win AI found a better alternative fix than the PR s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 27, 2026
@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented May 28, 2026

/review -b feature/refactor-copilot-yml -p ios

Copy link
Copy Markdown
Collaborator

@MauiBot MauiBot left a comment

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/Picker/Picker.cs
@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented May 29, 2026

/review -b feature/refactor-copilot-yml

@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented May 29, 2026

/azp run maui-pr-uitests

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented May 30, 2026

/review -b feature/refactor-copilot-yml -p windows

Copy link
Copy Markdown
Collaborator

@MauiBot MauiBot left a comment

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.


var selectedIndex = pendingSelectedIndex.Clamp(-1, Items.Count - 1);
var oldSuppressSelectedIndexChanged = _suppressSelectedIndexChanged;
_suppressSelectedIndexChanged = 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.

[warning] Deferred selection suppresses SelectedIndexChanged outside construction TryApplyPendingSelectedIndex applies a pending index with _suppressSelectedIndexChanged = true unconditionally. That avoids XAML construction-time events, but it also means an already-displayed Picker with an empty observable ItemsSource can transition from SelectedIndex == -1 to the pending index when the collection is later populated without notifying SelectedIndexChanged subscribers. If suppression is only needed for construction compatibility, consider scoping it more narrowly or confirming this event semantic explicitly.

@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 May 30, 2026
@MauiBot

This comment has been minimized.

@kubaflo kubaflo changed the base branch from main to inflight/current May 30, 2026 16:27
@kubaflo kubaflo merged commit bec1bb7 into dotnet:inflight/current May 30, 2026
118 of 128 checks passed
@github-actions github-actions Bot added this to the .NET 10.0 SR8 milestone May 30, 2026
@AdamEssenmacher AdamEssenmacher deleted the issue-9150 branch May 31, 2026 09:31
Copy link
Copy Markdown
Contributor

@kubaflo kubaflo left a comment

Choose a reason for hiding this comment

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

AI Review Summary

@AdamEssenmacher — new AI review results are available based on this last commit: 80d2c05.
Fix stale picker pending selection

Gate Passed Code Review In Review Confidence Medium Platform Windows

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

Gate Result: ✅ PASSED

Platform: WINDOWS · Base: main · Merge base: b0ea772f

Test Without Fix (expect FAIL) With Fix (expect PASS)
🖥️ Issue9150 Issue9150 ✅ FAIL — 568s ✅ PASS — 487s
🧪 PickerTests PickerTests ✅ FAIL — 47s ✅ PASS — 42s
📄 Maui9150 Maui9150 ✅ FAIL — 122s ✅ PASS — 113s
🔴 Without fix — 🖥️ Issue9150: FAIL ✅ · 568s
  Determining projects to restore...
  Restored D:\a\1\s\src\Graphics\src\Graphics\Graphics.csproj (in 20.97 sec).
  Restored D:\a\1\s\src\Graphics\src\Graphics.Win2D\Graphics.Win2D.csproj (in 21.05 sec).
  Restored D:\a\1\s\src\Essentials\src\Essentials.csproj (in 7.75 sec).
  Restored D:\a\1\s\src\Core\src\Core.csproj (in 15.48 sec).
  Restored D:\a\1\s\src\Core\maps\src\Maps.csproj (in 14.38 sec).
  Restored D:\a\1\s\src\Controls\tests\TestCases.HostApp\Controls.TestCases.HostApp.csproj (in 7.63 sec).
  Restored D:\a\1\s\src\Controls\src\Core\Controls.Core.csproj (in 36 ms).
  Restored D:\a\1\s\src\Controls\src\Xaml\Controls.Xaml.csproj (in 50 ms).
  Restored D:\a\1\s\src\Controls\Maps\src\Controls.Maps.csproj (in 12 ms).
  Restored D:\a\1\s\src\Controls\Foldable\src\Controls.Foldable.csproj (in 15 ms).
  Restored D:\a\1\s\src\BlazorWebView\src\Maui\Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 17 ms).
  3 of 14 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics.Win2D -> D:\a\1\s\artifacts\bin\Graphics.Win2D\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Graphics.Win2D.WinUI.Desktop.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Maps -> D:\a\1\s\artifacts\bin\Maps\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Maps.dll
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Maps -> D:\a\1\s\artifacts\bin\Controls.Maps\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Maps.dll
  Controls.Foldable -> D:\a\1\s\artifacts\bin\Controls.Foldable\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Foldable.dll
  Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Xaml.dll
  Microsoft.AspNetCore.Components.WebView.Maui -> D:\a\1\s\artifacts\bin\Microsoft.AspNetCore.Components.WebView.Maui\Debug\net10.0-windows10.0.19041.0\Microsoft.AspNetCore.Components.WebView.Maui.dll
  Controls.TestCases.HostApp -> D:\a\1\s\artifacts\bin\Controls.TestCases.HostApp\Debug\net10.0-windows10.0.19041.0\win-x64\Controls.TestCases.HostApp.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:06:03.55
  Determining projects to restore...
  Restored D:\a\1\s\src\Controls\tests\CustomAttributes\Controls.CustomAttributes.csproj (in 732 ms).
  Restored D:\a\1\s\src\TestUtils\src\VisualTestUtils\VisualTestUtils.csproj (in 4 ms).
  Restored D:\a\1\s\src\TestUtils\src\VisualTestUtils.MagickNet\VisualTestUtils.MagickNet.csproj (in 6.12 sec).
  Restored D:\a\1\s\src\Controls\tests\TestCases.WinUI.Tests\Controls.TestCases.WinUI.Tests.csproj (in 8.71 sec).
  Restored D:\a\1\s\src\TestUtils\src\UITest.Core\UITest.Core.csproj (in 2 ms).
  Restored D:\a\1\s\src\TestUtils\src\UITest.Appium\UITest.Appium.csproj (in 2 ms).
  Restored D:\a\1\s\src\TestUtils\src\UITest.NUnit\UITest.NUnit.csproj (in 2.85 sec).
  Restored D:\a\1\s\src\TestUtils\src\UITest.Analyzers\UITest.Analyzers.csproj (in 6.09 sec).
  7 of 15 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0\Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0\Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.CustomAttributes -> D:\a\1\s\artifacts\bin\Controls.CustomAttributes\Debug\net10.0\Controls.CustomAttributes.dll
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0\Microsoft.Maui.dll
  Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.dll
  UITest.Core -> D:\a\1\s\artifacts\bin\UITest.Core\Debug\net10.0\UITest.Core.dll
  UITest.Appium -> D:\a\1\s\artifacts\bin\UITest.Appium\Debug\net10.0\UITest.Appium.dll
  UITest.NUnit -> D:\a\1\s\artifacts\bin\UITest.NUnit\Debug\net10.0\UITest.NUnit.dll
  VisualTestUtils -> D:\a\1\s\artifacts\bin\VisualTestUtils\Debug\netstandard2.0\VisualTestUtils.dll
  VisualTestUtils.MagickNet -> D:\a\1\s\artifacts\bin\VisualTestUtils.MagickNet\Debug\netstandard2.0\VisualTestUtils.MagickNet.dll
  UITest.Analyzers -> D:\a\1\s\artifacts\bin\UITest.Analyzers\Debug\netstandard2.0\UITest.Analyzers.dll
  Controls.TestCases.WinUI.Tests -> D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 5/30/2026 11:38:09 AM FixtureSetup for Issue9150(Windows)
>>>>> 5/30/2026 11:38:19 AM PickerSelectedIndexSetBeforeItemsInitializesSelection Start
>>>>> 5/30/2026 11:38:20 AM PickerSelectedIndexSetBeforeItemsInitializesSelection Stop
>>>>> 5/30/2026 11:38:20 AM Log types: 
  Failed PickerSelectedIndexSetBeforeItemsInitializesSelection [1 s]
  Error Message:
     Assert.That(App.WaitForElement("StatusLabel").GetText(), Is.EqualTo("Passed"))
  Expected string length 6 but was 51. Strings differ at index 0.
  Expected: "Passed"
  But was:  "Failed: ItemsSource=(-1, ), Inline=(-1, ), Events=0"
  -----------^

  Stack Trace:
     at Microsoft.Maui.TestCases.Tests.Issues.Issue9150.PickerSelectedIndexSetBeforeItemsInitializesSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue9150.cs:line 19

1)    at Microsoft.Maui.TestCases.Tests.Issues.Issue9150.PickerSelectedIndexSetBeforeItemsInitializesSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue9150.cs:line 19


NUnit Adapter 4.5.0.0: Test execution complete
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.13]   Discovering: Controls.TestCases.WinUI.Tests
[xUnit.net 00:00:00.42]   Discovered:  Controls.TestCases.WinUI.Tests
Results File: D:\a\1\s\CustomAgentLogsTmp\UITests\TestResults\Issue9150.trx

Total tests: 1
     Failed: 1
Test Run Failed.
 Total time: 30.8337 Seconds
>>> TRX_RESULT_FILE: D:\a\1\s\CustomAgentLogsTmp\UITests\TestResults\Issue9150.trx

🟢 With fix — 🖥️ Issue9150: PASS ✅ · 487s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Essentials.dll
  Graphics.Win2D -> D:\a\1\s\artifacts\bin\Graphics.Win2D\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Graphics.Win2D.WinUI.Desktop.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  Maps -> D:\a\1\s\artifacts\bin\Maps\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Maps.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Maps -> D:\a\1\s\artifacts\bin\Controls.Maps\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Maps.dll
  Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Xaml.dll
  Controls.Foldable -> D:\a\1\s\artifacts\bin\Controls.Foldable\Debug\net10.0-windows10.0.19041.0\Microsoft.Maui.Controls.Foldable.dll
  Microsoft.AspNetCore.Components.WebView.Maui -> D:\a\1\s\artifacts\bin\Microsoft.AspNetCore.Components.WebView.Maui\Debug\net10.0-windows10.0.19041.0\Microsoft.AspNetCore.Components.WebView.Maui.dll
  Controls.TestCases.HostApp -> D:\a\1\s\artifacts\bin\Controls.TestCases.HostApp\Debug\net10.0-windows10.0.19041.0\win-x64\Controls.TestCases.HostApp.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:05:58.54
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0\Microsoft.Maui.Graphics.dll
  Controls.CustomAttributes -> D:\a\1\s\artifacts\bin\Controls.CustomAttributes\Debug\net10.0\Controls.CustomAttributes.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0\Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0\Microsoft.Maui.dll
  Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.dll
  UITest.Core -> D:\a\1\s\artifacts\bin\UITest.Core\Debug\net10.0\UITest.Core.dll
  UITest.Appium -> D:\a\1\s\artifacts\bin\UITest.Appium\Debug\net10.0\UITest.Appium.dll
  VisualTestUtils -> D:\a\1\s\artifacts\bin\VisualTestUtils\Debug\netstandard2.0\VisualTestUtils.dll
  VisualTestUtils.MagickNet -> D:\a\1\s\artifacts\bin\VisualTestUtils.MagickNet\Debug\netstandard2.0\VisualTestUtils.MagickNet.dll
  UITest.NUnit -> D:\a\1\s\artifacts\bin\UITest.NUnit\Debug\net10.0\UITest.NUnit.dll
  UITest.Analyzers -> D:\a\1\s\artifacts\bin\UITest.Analyzers\Debug\netstandard2.0\UITest.Analyzers.dll
  Controls.TestCases.WinUI.Tests -> D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in D:\a\1\s\artifacts\bin\Controls.TestCases.WinUI.Tests\Debug\net10.0\Controls.TestCases.WinUI.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 5/30/2026 11:49:07 AM FixtureSetup for Issue9150(Windows)
>>>>> 5/30/2026 11:49:16 AM PickerSelectedIndexSetBeforeItemsInitializesSelection Start
>>>>> 5/30/2026 11:49:17 AM PickerSelectedIndexSetBeforeItemsInitializesSelection Stop
  Passed PickerSelectedIndexSetBeforeItemsInitializesSelection [983 ms]
NUnit Adapter 4.5.0.0: Test execution complete
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.12]   Discovering: Controls.TestCases.WinUI.Tests
[xUnit.net 00:00:00.33]   Discovered:  Controls.TestCases.WinUI.Tests
Results File: D:\a\1\s\CustomAgentLogsTmp\UITests\TestResults\Issue9150.trx

Test Run Successful.
Total tests: 1
     Passed: 1
 Total time: 24.5933 Seconds
>>> TRX_RESULT_FILE: D:\a\1\s\CustomAgentLogsTmp\UITests\TestResults\Issue9150.trx

🔴 Without fix — 🧪 PickerTests: FAIL ✅ · 47s
  Determining projects to restore...
  Restored D:\a\1\s\src\TestUtils\src\TestUtils\TestUtils.csproj (in 897 ms).
  Restored D:\a\1\s\src\Controls\tests\Core.UnitTests\Controls.Core.UnitTests.csproj (in 1.52 sec).
  11 of 13 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0\Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0\Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0\Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Maps -> D:\a\1\s\artifacts\bin\Maps\Debug\net10.0\Microsoft.Maui.Maps.dll
  Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.dll
  Controls.Xaml.Design -> D:\a\1\s\artifacts\bin\Controls.Xaml.Design\Debug\net472\Microsoft.Maui.Controls.Xaml.DesignTools.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net10.0\Microsoft.Maui.Controls.Xaml.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Maps -> D:\a\1\s\artifacts\bin\Controls.Maps\Debug\net10.0\Microsoft.Maui.Controls.Maps.dll
  TestUtils -> D:\a\1\s\artifacts\bin\TestUtils\Debug\netstandard2.0\Microsoft.Maui.TestUtils.dll
  Controls.Core.UnitTests -> D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Core.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Core.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.20]   Discovering: Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.96]   Discovered:  Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.98]   Starting:    Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:02.09]     SelectedIndexSetBeforeEmptyItemsSourceAppliesWhenIndexBecomesValid [FAIL]
[xUnit.net 00:00:02.09]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.09]       Expected: 2
[xUnit.net 00:00:02.09]       Actual:   -1
[xUnit.net 00:00:02.09]       Stack Trace:
[xUnit.net 00:00:02.09]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(296,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeEmptyItemsSourceAppliesWhenIndexBecomesValid()
[xUnit.net 00:00:02.09]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.09]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed NullItemReturnsEmptyStringFromInterface [17 ms]
  Failed SelectedIndexSetBeforeEmptyItemsSourceAppliesWhenIndexBecomesValid [8 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeEmptyItemsSourceAppliesWhenIndexBecomesValid() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 296
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 0, insertNames: ["George", "Pete"]) [16 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 2, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 1, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 1, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 2, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 3, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 0, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 3, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedInsert [2 ms]
  Passed TestItemsSourceCollectionChangedReAssign [6 ms]
  Passed TestItemsSourceCollectionOfStrings [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 1, removeCount: 2, selectedItemPreserved: False) [4 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 2, removeCount: 1, selectedItemPreserved: True) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 0, removeCount: 2, selectedItemPreserved: False) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 1, removeCount: 1, selectedItemPreserved: False) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 0, removeCount: 1, selectedItemPreserved: True) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 2, removeCount: 2, selectedItemPreserved: True) [< 1 ms]
  Passed TestSelectedIndexChangedOnCollectionShrink [1 ms]
  Passed TestSelectedIndexOutOfRangeUpdatesSelectedItem [< 1 ms]
  Passed TestDisplayConverter [1 ms]
  Passed PickerPreservesSelectedItemAfterRemovingItemBeforeSelection [< 1 ms]
  Passed TestSelectedIndexInRange [< 1 ms]
  Passed TestSelectedItemSet [3 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedReAssign [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedClear [1 ms]
[xUnit.net 00:00:02.15]     SelectedIndexSetBeforeInlineItemsSurvivesParentSetUntilIndexBecomesValid [FAIL]
[xUnit.net 00:00:02.15]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.15]       Expected: 2
[xUnit.net 00:00:02.15]       Actual:   -1
[xUnit.net 00:00:02.15]       Stack Trace:
[xUnit.net 00:00:02.15]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(183,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsSurvivesParentSetUntilIndexBecomesValid()
[xUnit.net 00:00:02.15]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.15]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
[xUnit.net 00:00:02.15]     SelectedIndexSetBeforeItemsSourceAppliesAfterItemsSource [FAIL]
[xUnit.net 00:00:02.15]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.15]       Expected: 1
[xUnit.net 00:00:02.15]       Actual:   -1
[xUnit.net 00:00:02.15]       Stack Trace:
[xUnit.net 00:00:02.15]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(132,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeItemsSourceAppliesAfterItemsSource()
[xUnit.net 00:00:02.15]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.15]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed SelectedIndexSetBeforeInlineItemsSurvivesParentSetUntilIndexBecomesValid [19 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsSurvivesParentSetUntilIndexBecomesValid() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 183
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed TestItemsSourceCollectionChangedClear [< 1 ms]
  Passed TestSelectedIndexInRangeDefaultSelectedIndex [< 1 ms]
  Failed SelectedIndexSetBeforeItemsSourceAppliesAfterItemsSource [< 1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 1
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeItemsSourceAppliesAfterItemsSource() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 132
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed TestItemsSourceCollectionChangedRemoveAtEndSelected(removeCount: 2) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveAtEndSelected(removeCount: 1) [< 1 ms]
  Passed TestSelectedItemChangeSelectedIndex [1 ms]
  Passed TestNestedDisplayMemberPathExpression [< 1 ms]
  Passed TestSetItemsSourceProperty [< 1 ms]
[xUnit.net 00:00:02.16]     SelectedIndexSetBeforeInlineItemsAppliesWhenIndexBecomesValid [FAIL]
[xUnit.net 00:00:02.16]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.16]       Expected: 2
[xUnit.net 00:00:02.16]       Actual:   -1
[xUnit.net 00:00:02.16]       Stack Trace:
[xUnit.net 00:00:02.16]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(156,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsAppliesWhenIndexBecomesValid()
[xUnit.net 00:00:02.16]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.16]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
[xUnit.net 00:00:02.16]     SelectedIndexSetBeforeItemsSourceClampsAfterItemsSource [FAIL]
[xUnit.net 00:00:02.16]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.16]       Expected: 2
[xUnit.net 00:00:02.16]       Actual:   -1
[xUnit.net 00:00:02.16]       Stack Trace:
[xUnit.net 00:00:02.16]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(229,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeItemsSourceClampsAfterItemsSource()
[xUnit.net 00:00:02.16]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.16]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed PickerPreservesSelectedItemAfterInsertingItemBeforeSelection [< 1 ms]
  Failed SelectedIndexSetBeforeInlineItemsAppliesWhenIndexBecomesValid [< 1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsAppliesWhenIndexBecomesValid() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 156
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed TestItemsSourceCollectionChangedAppend [< 1 ms]
  Passed SettingSelectedIndexUpdatesSelectedItem [2 ms]
  Passed TestSelectedItemAssignedItemsSourceCollectionChangedRemove [< 1 ms]
  Passed ThrowsWhenModifyingItemsIfItemsSourceIsSet [1 ms]
  Failed SelectedIndexSetBeforeItemsSourceClampsAfterItemsSource [< 1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeItemsSourceClampsAfterItemsSource() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 229
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed SelectedItemSetAfterPendingSelectedIndexClearsPendingIndex [< 1 ms]
  Passed TestItemsSourceEnums [4 ms]
[xUnit.net 00:00:02.28]     SelectedIndexSetBeforeInlineItemsSurvivesHandlerAttachmentUntilIndexBecomesValid [FAIL]
[xUnit.net 00:00:02.28]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:02.28]       Expected: 2
[xUnit.net 00:00:02.28]       Actual:   -1
[xUnit.net 00:00:02.28]       Stack Trace:
[xUnit.net 00:00:02.28]         /_/src/Controls/tests/Core.UnitTests/PickerTests.cs(209,0): at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsSurvivesHandlerAttachmentUntilIndexBecomesValid()
[xUnit.net 00:00:02.28]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.28]            at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
[xUnit.net 00:00:02.29]   Finished:    Microsoft.Maui.Controls.Core.UnitTests
  Passed TestEmptyCollectionResetItems [< 1 ms]
  Failed SelectedIndexSetBeforeInlineItemsSurvivesHandlerAttachmentUntilIndexBecomesValid [115 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Core.UnitTests.PickerTests.SelectedIndexSetBeforeInlineItemsSurvivesHandlerAttachmentUntilIndexBecomesValid() in /_/src/Controls/tests/Core.UnitTests/PickerTests.cs:line 209
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Passed TestSetSelectedIndexOnNullRows [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedAppend [< 1 ms]
  Passed TestSelectedItemDefault [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsert [< 1 ms]
  Passed PendingSelectedIndexCanBeClearedBeforeItemsLoad [< 1 ms]
  Passed TestUnsubscribeINotifyCollectionChanged [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemove [< 1 ms]

Test Run Failed.
Total tests: 54
     Passed: 48
     Failed: 6
 Total time: 2.9308 Seconds

🟢 With fix — 🧪 PickerTests: PASS ✅ · 42s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net10.0\Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net10.0\Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Core -> D:\a\1\s\artifacts\bin\Core\Debug\net10.0\Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Maps -> D:\a\1\s\artifacts\bin\Maps\Debug\net10.0\Microsoft.Maui.Maps.dll
  Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
  Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.dll
  Controls.Xaml.Design -> D:\a\1\s\artifacts\bin\Controls.Xaml.Design\Debug\net472\Microsoft.Maui.Controls.Xaml.DesignTools.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net10.0\Microsoft.Maui.Controls.Xaml.dll
  ##vso[build.updatebuildnumber]10.0.80-ci+azdo.14241020
  Controls.Maps -> D:\a\1\s\artifacts\bin\Controls.Maps\Debug\net10.0\Microsoft.Maui.Controls.Maps.dll
  TestUtils -> D:\a\1\s\artifacts\bin\TestUtils\Debug\netstandard2.0\Microsoft.Maui.TestUtils.dll
  Controls.Core.UnitTests -> D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Core.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Core.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.20]   Discovering: Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.71]   Discovered:  Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.72]   Starting:    Microsoft.Maui.Controls.Core.UnitTests
  Passed NullItemReturnsEmptyStringFromInterface [16 ms]
  Passed SelectedIndexSetBeforeEmptyItemsSourceAppliesWhenIndexBecomesValid [15 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 0, insertNames: ["George", "Pete"]) [11 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 2, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 1, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 1, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 2, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 3, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 0, insertNames: ["George"]) [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsertBeforeSelected(insertionIndex: 3, insertNames: ["George", "Pete"]) [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedInsert [2 ms]
  Passed TestItemsSourceCollectionChangedReAssign [7 ms]
  Passed TestItemsSourceCollectionOfStrings [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 1, removeCount: 2, selectedItemPreserved: False) [4 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 2, removeCount: 1, selectedItemPreserved: True) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 0, removeCount: 2, selectedItemPreserved: False) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 1, removeCount: 1, selectedItemPreserved: False) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 0, removeCount: 1, selectedItemPreserved: True) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveBeforeSelected(removeIndex: 2, removeCount: 2, selectedItemPreserved: True) [< 1 ms]
  Passed TestSelectedIndexChangedOnCollectionShrink [1 ms]
  Passed TestSelectedIndexOutOfRangeUpdatesSelectedItem [< 1 ms]
  Passed TestDisplayConverter [1 ms]
  Passed PickerPreservesSelectedItemAfterRemovingItemBeforeSelection [< 1 ms]
  Passed TestSelectedIndexInRange [< 1 ms]
  Passed TestSelectedItemSet [3 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedReAssign [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedClear [1 ms]
  Passed SelectedIndexSetBeforeInlineItemsSurvivesParentSetUntilIndexBecomesValid [17 ms]
  Passed TestItemsSourceCollectionChangedClear [< 1 ms]
  Passed TestSelectedIndexInRangeDefaultSelectedIndex [< 1 ms]
  Passed SelectedIndexSetBeforeItemsSourceAppliesAfterItemsSource [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveAtEndSelected(removeCount: 2) [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemoveAtEndSelected(removeCount: 1) [< 1 ms]
  Passed TestSelectedItemChangeSelectedIndex [< 1 ms]
  Passed TestNestedDisplayMemberPathExpression [< 1 ms]
  Passed TestSetItemsSourceProperty [< 1 ms]
  Passed PickerPreservesSelectedItemAfterInsertingItemBeforeSelection [< 1 ms]
  Passed SelectedIndexSetBeforeInlineItemsAppliesWhenIndexBecomesValid [< 1 ms]
  Passed TestItemsSourceCollectionChangedAppend [< 1 ms]
  Passed SettingSelectedIndexUpdatesSelectedItem [1 ms]
  Passed TestSelectedItemAssignedItemsSourceCollectionChangedRemove [< 1 ms]
  Passed ThrowsWhenModifyingItemsIfItemsSourceIsSet [< 1 ms]
  Passed SelectedIndexSetBeforeItemsSourceClampsAfterItemsSource [< 1 ms]
  Passed SelectedItemSetAfterPendingSelectedIndexClearsPendingIndex [< 1 ms]
  Passed TestItemsSourceEnums [4 ms]
[xUnit.net 00:00:02.02]   Finished:    Microsoft.Maui.Controls.Core.UnitTests
  Passed TestEmptyCollectionResetItems [< 1 ms]
  Passed SelectedIndexSetBeforeInlineItemsSurvivesHandlerAttachmentUntilIndexBecomesValid [118 ms]
  Passed TestSetSelectedIndexOnNullRows [< 1 ms]
  Passed TestSelectedIndexAssignedItemsSourceCollectionChangedAppend [< 1 ms]
  Passed TestSelectedItemDefault [< 1 ms]
  Passed TestItemsSourceCollectionChangedInsert [< 1 ms]
  Passed PendingSelectedIndexCanBeClearedBeforeItemsLoad [< 1 ms]
  Passed TestUnsubscribeINotifyCollectionChanged [< 1 ms]
  Passed TestItemsSourceCollectionChangedRemove [< 1 ms]

Test Run Successful.
Total tests: 54
     Passed: 54
 Total time: 2.6941 Seconds

🔴 Without fix — 📄 Maui9150: FAIL ✅ · 122s

(truncated to last 15,000 chars)

i.Controls.Xaml.UnitTests.Maui33293Product". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui33876.xaml(8,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui34490.xaml(12,25): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui34490ItemModel". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui6367.xaml(10,50): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui8149.xaml(12,43): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\RefToXamlControl.xaml(7,33): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(20,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(52,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(53,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,25): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteBP" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,42): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteProp" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,61): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoletePropSetter" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(16,4): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(21,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(21,77): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Gh2007.rtxc.xaml(3,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
  Controls.Xaml.UnitTests -> D:\a\1\s\artifacts\bin\Controls.Xaml.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.Xaml.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.27]   Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.96]   Discovered:  Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.97]   Starting:    Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.10]     PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: SourceGen) [FAIL]
[xUnit.net 00:00:04.10]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.10]       Expected: 2
[xUnit.net 00:00:04.10]       Actual:   -1
[xUnit.net 00:00:04.10]       Stack Trace:
[xUnit.net 00:00:04.10]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(49,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.10]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:04.10]            at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
[xUnit.net 00:00:04.11]     PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: XamlC) [FAIL]
[xUnit.net 00:00:04.11]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.11]       Expected: 2
[xUnit.net 00:00:04.11]       Actual:   -1
[xUnit.net 00:00:04.11]       Stack Trace:
[xUnit.net 00:00:04.11]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(49,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.11]            at InvokeStub_Test.PickerSelectedIndexBeforeInlineItemsIsApplied(Object, Span`1)
[xUnit.net 00:00:04.11]            at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
[xUnit.net 00:00:04.18]     PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: Runtime) [FAIL]
[xUnit.net 00:00:04.18]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.18]       Expected: 2
[xUnit.net 00:00:04.18]       Actual:   -1
[xUnit.net 00:00:04.18]       Stack Trace:
[xUnit.net 00:00:04.18]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(49,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.18]            at InvokeStub_Test.PickerSelectedIndexBeforeInlineItemsIsApplied(Object, Span`1)
[xUnit.net 00:00:04.18]            at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
[xUnit.net 00:00:04.18]     PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: SourceGen) [FAIL]
[xUnit.net 00:00:04.18]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.18]       Expected: 1
[xUnit.net 00:00:04.18]       Actual:   -1
[xUnit.net 00:00:04.18]       Stack Trace:
[xUnit.net 00:00:04.18]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(39,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.18]            at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:04.18]            at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
[xUnit.net 00:00:04.19]     PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: Runtime) [FAIL]
[xUnit.net 00:00:04.19]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.19]       Expected: 1
[xUnit.net 00:00:04.19]       Actual:   -1
[xUnit.net 00:00:04.19]       Stack Trace:
[xUnit.net 00:00:04.19]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(39,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.19]            at InvokeStub_Test.PickerSelectedIndexBeforeItemsSourceIsApplied(Object, Span`1)
[xUnit.net 00:00:04.19]            at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
[xUnit.net 00:00:04.19]     PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: XamlC) [FAIL]
[xUnit.net 00:00:04.19]       Assert.Equal() Failure: Values differ
[xUnit.net 00:00:04.19]       Expected: 1
[xUnit.net 00:00:04.19]       Actual:   -1
[xUnit.net 00:00:04.19]       Stack Trace:
[xUnit.net 00:00:04.19]         /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs(39,0): at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator)
[xUnit.net 00:00:04.19]            at InvokeStub_Test.PickerSelectedIndexBeforeItemsSourceIsApplied(Object, Span`1)
[xUnit.net 00:00:04.19]            at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
[xUnit.net 00:00:04.20]   Finished:    Microsoft.Maui.Controls.Xaml.UnitTests
  Failed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: SourceGen) [54 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 49
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
  Failed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: XamlC) [1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 49
   at InvokeStub_Test.PickerSelectedIndexBeforeInlineItemsIsApplied(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
  Failed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: Runtime) [75 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 2
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeInlineItemsIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 49
   at InvokeStub_Test.PickerSelectedIndexBeforeInlineItemsIsApplied(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
  Failed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: SourceGen) [< 1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 1
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 39
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
  Failed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: Runtime) [3 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 1
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 39
   at InvokeStub_Test.PickerSelectedIndexBeforeItemsSourceIsApplied(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
  Failed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: XamlC) [< 1 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: 1
Actual:   -1
  Stack Trace:
     at Microsoft.Maui.Controls.Xaml.UnitTests.Maui9150.Test.PickerSelectedIndexBeforeItemsSourceIsApplied(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/Issues/Maui9150.xaml.cs:line 39
   at InvokeStub_Test.PickerSelectedIndexBeforeItemsSourceIsApplied(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: SourceGen) [1 ms]
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: XamlC) [< 1 ms]
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: Runtime) [2 ms]

Test Run Failed.
Total tests: 9
     Passed: 3
     Failed: 6
 Total time: 4.8350 Seconds

🟢 With fix — 📄 Maui9150: PASS ✅ · 113s

(truncated to last 15,000 chars)

fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui24472.xaml(41,32): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui24500.xaml(6,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui25309.xaml(21,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui25871.xaml(14,24): XamlC warning XC0045: Binding: Property "UpdateProgress" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui25871ViewModel". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui25935.xaml(8,13): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31939.xaml(7,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31939.xaml(14,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31939.xaml(15,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(7,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(12,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(18,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(23,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(30,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(36,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui31995.xaml(44,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32056.xaml(9,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32837.xaml(13,18): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32924.xaml(14,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32924.xaml(18,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32924.xaml(22,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui32924.xaml(27,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui33291.xaml(20,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33291Item". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui33293.xaml(14,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33293Product". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui33876.xaml(8,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui34490.xaml(12,25): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui34490ItemModel". [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui6367.xaml(10,50): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Maui8149.xaml(12,43): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\RefToXamlControl.xaml(7,33): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(20,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(52,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\SetValue.xaml(53,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,25): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteBP" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,42): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteProp" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\WarnOnObsolete.xaml(6,61): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoletePropSetter" is deprecated. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(16,4): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(21,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\XReference.xaml(21,77): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Issues\Gh2007.rtxc.xaml(3,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [D:\a\1\s\src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj]
  Controls.Xaml.UnitTests -> D:\a\1\s\artifacts\bin\Controls.Xaml.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.Xaml.UnitTests\Debug\net10.0\Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.29]   Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.99]   Discovered:  Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.00]   Starting:    Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.22]   Finished:    Microsoft.Maui.Controls.Xaml.UnitTests
  Passed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: SourceGen) [62 ms]
  Passed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: XamlC) [< 1 ms]
  Passed PickerSelectedIndexBeforeInlineItemsIsApplied(inflator: Runtime) [72 ms]
  Passed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: SourceGen) [< 1 ms]
  Passed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: Runtime) [5 ms]
  Passed PickerSelectedIndexBeforeItemsSourceIsApplied(inflator: XamlC) [< 1 ms]
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: SourceGen) [< 1 ms]
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: XamlC) [< 1 ms]
  Passed PickerSelectedIndexChangedDoesNotFireDuringConstruction(inflator: Runtime) [4 ms]

Test Run Successful.
Total tests: 9
     Passed: 9
 Total time: 4.9347 Seconds

📁 Fix files reverted (2 files)
  • eng/pipelines/ci-copilot.yml
  • src/Controls/src/Core/Picker/Picker.cs

UI Tests — Picker

Detected UI test categories: Picker

Deep UI tests — 46 passed, 0 failed across 1 category on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
deep-uitests 46/47 ✓
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)

Pre-Flight — Context & Validation

Issue: #9150 - Picker SelectedIndex set before items should initialize selection
PR: #35629 - Fix Picker SelectedIndex deferred initialization
Platforms Affected: Android originally reported; PR changes shared Picker behavior affecting all platforms. Testing platform: Windows.
Files Changed: 1 implementation, 6 Picker test files (local branch also contains unrelated CI/copilot changes outside the Picker fix scope).

Key Findings

  • Issue #9150 reports that SelectedIndex="0" in XAML is lost when a Picker initializes before its items are available; setting the index later in code-behind is the workaround.
  • PR fix changes src/Controls/src/Core/Picker/Picker.cs to remember a pending selected index while Items is empty, then apply it after ItemsSource/inline items populate.
  • Gate result supplied for Windows passed: Issue9150, PickerTests, and Maui9150 fail without the fix and pass with the PR fix.
  • Impacted UI category: Picker.

Code Review Summary

Verdict: NEEDS_DISCUSSION
Confidence: medium
Errors: 0 | Warnings: 2 | Suggestions: 0

Key code review findings:

  • src/Controls/src/Core/Picker/Picker.cs:549-556 suppresses SelectedIndexChanged for deferred selection, including observable collections populated after a picker is already displayed; this may be intentional but changes event semantics.
  • Public PR context includes an earlier Android UI setup/navigation failure, while the provided local Windows gate passed.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #35629 Store pending selected index in Picker when coercion would otherwise clamp it while items are empty; apply after items populate. PASSED (Gate) src/Controls/src/Core/Picker/Picker.cs Original PR fix; Windows gate passed.

Code Review — Deep Analysis

Code Review PR #35629

Independent Assessment

What this changes: Picker defers a SelectedIndex assigned before items exist, then applies it when items load.
Inferred motivation: XAML sets SelectedIndex before ItemsSource/inline items are populated, losing default selection.

Reconciliation with PR Narrative

Author claims: Fixes #9150; deferred initialization updates SelectedItem but does not raise SelectedIndexChanged.
Agreement/disagreement: Implementation matches the claim. Event suppression is intentional but needs confirmation for runtime population scenarios. Local Windows gate artifacts passed; an earlier public Android session showed UI setup/navigation failures.

Findings

Warning Deferred selection suppresses SelectedIndexChanged outside construction

src/Controls/src/Core/Picker/Picker.cs:549-556 unconditionally suppresses SelectedIndexChanged while applying pending selection. For an already-displayed picker with empty observable ItemsSource, later collection population changes selection without notifying subscribers.

Warning CI/gate context differs by platform

The provided Windows gate passed. Public PR page contains a prior Android agent session where unit/XAML passed but the issue UI test failed during setup/navigation, so Android still merits separate human/CI confirmation.

Devil's Advocate

Suppression is explicitly claimed and tested, and previous behavior also did not produce a useful deferred-selection event. Still, the new behavior creates a real delayed selection transition, so event semantics merit human confirmation.

Verdict: NEEDS_DISCUSSION

Confidence: medium
Summary: Core fix looks plausible on Windows, but event semantics and platform-specific UI behavior should be discussed or explicitly accepted.


Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix-1 Capture pending index in public SelectedIndex CLR setter. FAIL src/Controls/src/Core/Picker/Picker.cs Picker unit tests passed (54/54), but XAML Maui9150 failed (6/9) because XAML/direct bindable-property assignment bypasses the CLR setter.
2 try-fix-2 Remove coercion; store raw requested index and expose a clamped effective getter. FAIL src/Controls/src/Core/Picker/Picker.cs Picker unit tests failed (7 failures); partial inline item population selected too early and collection removal semantics regressed.
3 try-fix-3 Store raw requested index plus a deferred marker for pre-items assignment. FAIL src/Controls/src/Core/Picker/Picker.cs After one iteration, Picker unit tests still failed (4 failures); preserving raw values breaks existing clamped-property invariants.
PR PR #35629 Preserve existing coerced SelectedIndex behavior and store a separate pending selected index while items are empty; apply it after item population. PASSED (Gate) src/Controls/src/Core/Picker/Picker.cs Original PR fix; provided Windows gate passed for Issue9150, PickerTests, and Maui9150.

Iterative Learning

Candidate Expert-review/test lesson Next-step impact
try-fix-1 CLR setter capture is too narrow; XAML sets the bindable property directly. Candidate 2 moved preservation to bindable-property storage.
try-fix-2 Raw storage without deferred state exposes clamped selections too early and disrupts collection changes. Candidate 3 added a deferred marker.
try-fix-3 Raw storage plus marker still changes too many existing Picker invariants; restoring those invariants converges toward separate pending state. Stop: no meaningfully better alternative remains.

Cross-Pollination

Model Round New Ideas? Details
code-review + maui-expert-reviewer guidance 1 Yes Explore event semantics and alternatives that avoid the PR's coerce-callback pending state.
try-fix loop 2 No better passing idea Tested setter capture, raw storage, and raw storage with deferred marker; all failed targeted regression tests.

Exhausted: Yes
Selected Fix: PR #35629 It is the only tested approach that preserves normal coerced SelectedIndex invariants while separately retaining a pre-items requested index. The alternatives either miss XAML direct assignment or regress established Picker collection behavior.


Report — Final Recommendation

Comparative Report — PR #35629

Candidates compared

Candidate Approach Regression result Ranking
pr Store a separate pending selected index when SelectedIndex is assigned while Picker.Items is empty, then apply it once items populate. PASS 1
pr-plus-reviewer Same as pr; expert reviewer produced no actionable findings, so no reviewer changes were applied. PASS 1
try-fix-3 Store raw requested index plus a deferred marker to keep pending indices effectively unselected until enough items exist. FAIL 3
try-fix-2 Remove selected-index coercion, store the raw requested value, and expose a clamped effective getter. FAIL 4
try-fix-1 Capture pending index in the public CLR setter before bindable-property coercion. FAIL 5

Analysis

pr and pr-plus-reviewer are tied functionally because the expert reviewer returned no actionable inline findings ([]). Both retain the established public invariant that Picker.SelectedIndex is coerced to an available item index or -1, while using private pending state to remember the initial pre-items request. The supplied Windows gate passed: Issue9150, PickerTests, and Maui9150 all failed without the fix and passed with the PR fix.

try-fix-1 is not viable because it captures only assignments through the public CLR setter. The primary repro path uses XAML/bindable-property assignment, which bypasses that setter, so Maui9150 failed.

try-fix-2 is not viable because storing the raw requested index in the bindable property changes core Picker behavior. It regressed existing picker unit tests by selecting too early during partial inline item population and by changing collection-change semantics.

try-fix-3 improves on try-fix-2 with a deferred marker, but it still failed picker unit tests. It continued to disturb collection-removal and selected-item reconciliation invariants, and further repairs would converge toward the PR's separate pending-state design with more complexity.

Winner

Winner: pr

pr wins because it is the simplest passing candidate and preserves existing Picker.SelectedIndex invariants while fixing the XAML initialization path. pr-plus-reviewer is equivalent and also acceptable, but because the reviewer produced no changes, the raw PR fix is the canonical winning candidate.

Notes for inline review

The expert reviewer produced no actionable inline comments, so inline-findings.json contains an empty JSON array.


Future Action — review latest findings

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

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

Labels

area-controls-picker Picker 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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Picker Attribute "SelectedIndex" Not being respected on page load on Android?

5 participants