Skip to content

[Inflight/Candidate] Stabilize Looped CarouselView Collection Override Device Test - #39217

Merged
kubaflo merged 1 commit into
dotnet:inflight/candidatefrom
HarishwaranVijayakumar:fix-candidate/failure
Oct 13, 2026
Merged

kubaflo merged 1 commit into
dotnet:inflight/candidatefrom
HarishwaranVijayakumar:fix-candidate/failure

Conversation

@HarishwaranVijayakumar

Copy link
Copy Markdown
Contributor

Issue Details

  • The Windows device test LoopedVisibleCollectionOverrideDoesNotEnterRealizationRetry failed intermittently in September 22nd, Candidate — .NET 10 SR12 (10.0.120) #38782.
  • Failures occurred during high-physical-range setup or when validating that the pending override completed without entering the realization-retry path.

Root Cause

  • The test assumed logical item 2 must be the first visible physical item after ScrollIntoView().
  • The implementation under test, IsCollectionCurrentItemOverrideVisible, only requires the item to appear anywhere within the visible range (FirstVisibleIndex to LastVisibleIndex).
  • The test could continue while native scrolling, layout, and snap-point processing were still in progress.
  • The deferred override callback could therefore encounter an unready native state and schedule a realization retry. Diagnostics confirmed a failing run with RetryCount = 1.
  • Repeated successful runs after adding scroll-settling synchronization support a test setup/timing issue.

Description of Change

  • Wrapped the initial native ScrollIntoView() operation in the existing WaitForSettleAsync helper to wait for terminal scroll events and a short quiet period.
  • Replaced the first-visible-item assumption with a predicate that scans the entire visible range for logical item 2 at a high physical index (> 1000).
  • Reused the predicate for both setup and final post-override validation.
  • Preserved the original assertions verifying:
    • Override completion.
    • Zero realization retries.
    • A single final centered ScrollTo request.
    • CenterMode is not exposed to the ScrollToRequested observer.
  • No product code changes were made; this is a test-only stabilization fix.
Before After

@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label Oct 7, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Hey there @@HarishwaranVijayakumar! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Oct 7, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@kubaflo

This comment has been minimized.

@kubaflo

kubaflo commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

/azp run

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Oct 7, 2026
@azure-pipelines

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

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Note

🔍 /review started

AzDO build 15597054 is running for windows.

The s/agent-review-in-progress label stays on this PR while the run is active. The final recommendation and outcome labels are posted only after Gate, expert review, and Deep UI tests finish.

@MauiBot

This comment has been minimized.

@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 Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Note

🔍 /review started

AzDO build 15601031 is running for windows.

The s/agent-review-in-progress label stays on this PR while the run is active. The final recommendation and outcome labels are posted only after Gate, expert review, and Deep UI tests finish.

@MauiBot

This comment has been minimized.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Oct 7, 2026
@PureWeen

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 Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Note

🔍 /review started

AzDO build 15602035 is running for windows.

The s/agent-review-in-progress label stays on this PR while the run is active. The final recommendation and outcome labels are posted only after Gate, expert review, and Deep UI tests finish.

@MauiBot

This comment has been minimized.

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

This comment has been minimized.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Tests Failure Analysis

@HarishwaranVijayakumar — test-failure analysis for commit 1675900.

Scope CI failures Commit 1675900


🧪 CI Analysis — click to expand
📊 maui-pr

No failures found.


🧪 maui-pr-devicetests
  • 🟢 Likely unrelated — Windows ScrollView Does Not Leak (packaged, unpackaged): identical retained WinUI references on target; this PR changes only a CarouselView test.
  • 🟡 Needs human investigation — iOS ContentSizeExpandsToViewport (two queues): 734 versus 700 repeats on target, but historical OS/queue provenance is missing.
  • 🟡 Needs human investigation — Parsed XAML can use x:Array (iOS, MacCatalyst, two queues each): target repeats the missing TypeExtension constructor; confirm matching runtimes before dismissing.
  • Insufficient data — Seven crash-marked work items: Android CoreCLR/Mono, iOS/MacCatalyst on both queues (second MacCatalyst queue), and Windows unpackaged. Causes/unexecuted outcomes remain unknown; task exit errors reflect work-item failures, not compilation failures.

🧪 maui-pr-uitests

🧭 Follow-up — actions and refresh

Next action: Restore complete results/crash diagnostics and historical runtime/handler provenance; compare equivalent fixtures before attributing unresolved failures.

Maintainers: comment /review tests to refresh this report.

@PureWeen

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 Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Note

🔍 /review started

AzDO build 15604819 is running for windows.

The s/agent-review-in-progress label stays on this PR while the run is active. The final recommendation and outcome labels are posted only after Gate, expert review, and Deep UI tests finish.

@MauiBot

MauiBot commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

AI Review Summary

@HarishwaranVijayakumar — new AI review results are available based on commit 1675900.

Gate Failed Confidence Unknown Platform Windows

Review status: Evidence-first output is incomplete. Missing or skipped required artifacts cannot support approval; existing Gate and blocking findings remain authoritative.


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

Gate Result: ❌ FAILED

The trusted test-verification gate reported a failure. Its detailed display artifact was
missing or contradicted this trusted pipeline verdict, so that agent-writable content was not
used in the review summary.

Inspect the trusted Gate task logs for the failing build or test evidence. This run is not
eligible for approval.


📋 Pre-Flight — Context & Validation

⚠️ Pre-Flight did not produce output on this run.

The Copilot expert-review task ended before this phase was persisted, usually because the review-stage time budget expired or the CI agent encountered a transient authentication/runtime problem. Earlier completed sections remain valid, but this review is incomplete without this phase.

Next step: re-comment /review to retry on a fresh agent. If this repeats across runs, a maintainer should inspect the reviewer token and Task 3 logs.


🔬 Code Review — Deep Analysis

⚠️ Code Review did not produce output on this run.

The Copilot expert-review task ended before this phase was persisted, usually because the review-stage time budget expired or the CI agent encountered a transient authentication/runtime problem. Earlier completed sections remain valid, but this review is incomplete without this phase.

Next step: re-comment /review to retry on a fresh agent. If this repeats across runs, a maintainer should inspect the reviewer token and Task 3 logs.


🛠️ Try-Fix — Analysis & Comparison

⚠️ Try-Fix did not produce output on this run.

The Copilot expert-review task ended before this phase was persisted, usually because the review-stage time budget expired or the CI agent encountered a transient authentication/runtime problem. Earlier completed sections remain valid, but this review is incomplete without this phase.

Next step: re-comment /review to retry on a fresh agent. If this repeats across runs, a maintainer should inspect the reviewer token and Task 3 logs.


🏁 Report — Final Recommendation

⚠️ Report / Final Recommendation did not produce output on this run.

The Copilot expert-review task ended before this phase was persisted, usually because the review-stage time budget expired or the CI agent encountered a transient authentication/runtime problem. Earlier completed sections remain valid, but this review is incomplete without this phase.

Next step: re-comment /review to retry on a fresh agent. If this repeats across runs, a maintainer should inspect the reviewer token and Task 3 logs.


📱 UI Tests — Button,Label,Layout

Detected UI test categories: Button,Label,Layout

❌ Deep UI tests — 398 passed, 5 failed, 8 skipped across 3 categories on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
Button 102/103 (1 skipped) ✓ —
Label 115/118 (3 skipped) ✓ —
Layout 181/190 (5 ❌, 4 skipped) 5 diff PNGs
❌ Layout — 5 failed tests
VerifyBindableLayoutWithGridItemTemplate
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithGridItemTemplate.png (0.76% 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 480
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Null
...
VerifyBindableLayoutWithItemTemplateSelector
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithItemTemplateSelector.png (0.76% 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 480
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, 
...
VerifyBindableLayoutWithItemsSourceNone
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithItemsSourceNone.png (0.76% 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 480
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nulla
...
VerifyBindableLayoutWithItemsSourceObservableCollection
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithItemsSourceObservableCollection.png (0.76% 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 480
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(St
...
VerifyBindableLayoutWithBasicItemTemplate
VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBindableLayoutWithBasicItemTemplate.png (0.76% 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 480
   at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nul
...

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


🧭 Next Steps — review latest findings

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

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Oct 8, 2026
@HarishwaranVijayakumar HarishwaranVijayakumar changed the title [WIP] [Inflight/Candidate] Stabilize Looped CarouselView Collection Override Device Test [Inflight/Candidate] Stabilize Looped CarouselView Collection Override Device Test Oct 13, 2026
@sheiksyedm
sheiksyedm marked this pull request as ready for review October 13, 2026 07:04
@sheiksyedm
sheiksyedm requested a review from kubaflo October 13, 2026 07:04
@kubaflo
kubaflo merged commit fc9cb78 into dotnet:inflight/candidate Oct 13, 2026
171 of 210 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR12 milestone Oct 13, 2026
kubaflo pushed a commit that referenced this pull request Oct 13, 2026
…e Device Test (#39217)

### Issue Details

- The Windows device test
`LoopedVisibleCollectionOverrideDoesNotEnterRealizationRetry` failed
intermittently in #38782.
- Failures occurred during high-physical-range setup or when validating
that the pending override completed without entering the
realization-retry path.

### Root Cause

- The test assumed logical item `2` must be the **first visible physical
item** after `ScrollIntoView()`.
- The implementation under test,
`IsCollectionCurrentItemOverrideVisible`, only requires the item to
appear **anywhere within the visible range** (`FirstVisibleIndex` to
`LastVisibleIndex`).
- The test could continue while native scrolling, layout, and snap-point
processing were still in progress.
- The deferred override callback could therefore encounter an unready
native state and schedule a realization retry. Diagnostics confirmed a
failing run with `RetryCount = 1`.
- Repeated successful runs after adding scroll-settling synchronization
support a test setup/timing issue.

### Description of Change

- Wrapped the initial native `ScrollIntoView()` operation in the
existing `WaitForSettleAsync` helper to wait for terminal scroll events
and a short quiet period.
- Replaced the first-visible-item assumption with a predicate that scans
the entire visible range for logical item `2` at a high physical index
(`> 1000`).
- Reused the predicate for both setup and final post-override
validation.
- Preserved the original assertions verifying:
  - Override completion.
  - Zero realization retries.
  - A single final centered `ScrollTo` request.
  - `CenterMode` is not exposed to the `ScrollToRequested` observer.
- No product code changes were made; this is a test-only stabilization
fix.

| Before | After |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/7efcc482-86ea-4d96-bc6a-f00bd03000fa">
| <img
src="https://github.com/user-attachments/assets/da5ded81-340e-4564-b585-168edc9af045">
|
kubaflo pushed a commit that referenced this pull request Oct 14, 2026
…e Device Test (#39217)

### Issue Details

- The Windows device test
`LoopedVisibleCollectionOverrideDoesNotEnterRealizationRetry` failed
intermittently in #38782.
- Failures occurred during high-physical-range setup or when validating
that the pending override completed without entering the
realization-retry path.

### Root Cause

- The test assumed logical item `2` must be the **first visible physical
item** after `ScrollIntoView()`.
- The implementation under test,
`IsCollectionCurrentItemOverrideVisible`, only requires the item to
appear **anywhere within the visible range** (`FirstVisibleIndex` to
`LastVisibleIndex`).
- The test could continue while native scrolling, layout, and snap-point
processing were still in progress.
- The deferred override callback could therefore encounter an unready
native state and schedule a realization retry. Diagnostics confirmed a
failing run with `RetryCount = 1`.
- Repeated successful runs after adding scroll-settling synchronization
support a test setup/timing issue.

### Description of Change

- Wrapped the initial native `ScrollIntoView()` operation in the
existing `WaitForSettleAsync` helper to wait for terminal scroll events
and a short quiet period.
- Replaced the first-visible-item assumption with a predicate that scans
the entire visible range for logical item `2` at a high physical index
(`> 1000`).
- Reused the predicate for both setup and final post-override
validation.
- Preserved the original assertions verifying:
  - Override completion.
  - Zero realization retries.
  - A single final centered `ScrollTo` request.
  - `CenterMode` is not exposed to the `ScrollToRequested` observer.
- No product code changes were made; this is a test-only stabilization
fix.

| Before | After |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/7efcc482-86ea-4d96-bc6a-f00bd03000fa">
| <img
src="https://github.com/user-attachments/assets/da5ded81-340e-4564-b585-168edc9af045">
|
kubaflo pushed a commit that referenced this pull request Oct 18, 2026
…e Device Test (#39217)

### Issue Details

- The Windows device test
`LoopedVisibleCollectionOverrideDoesNotEnterRealizationRetry` failed
intermittently in #38782.
- Failures occurred during high-physical-range setup or when validating
that the pending override completed without entering the
realization-retry path.

### Root Cause

- The test assumed logical item `2` must be the **first visible physical
item** after `ScrollIntoView()`.
- The implementation under test,
`IsCollectionCurrentItemOverrideVisible`, only requires the item to
appear **anywhere within the visible range** (`FirstVisibleIndex` to
`LastVisibleIndex`).
- The test could continue while native scrolling, layout, and snap-point
processing were still in progress.
- The deferred override callback could therefore encounter an unready
native state and schedule a realization retry. Diagnostics confirmed a
failing run with `RetryCount = 1`.
- Repeated successful runs after adding scroll-settling synchronization
support a test setup/timing issue.

### Description of Change

- Wrapped the initial native `ScrollIntoView()` operation in the
existing `WaitForSettleAsync` helper to wait for terminal scroll events
and a short quiet period.
- Replaced the first-visible-item assumption with a predicate that scans
the entire visible range for logical item `2` at a high physical index
(`> 1000`).
- Reused the predicate for both setup and final post-override
validation.
- Preserved the original assertions verifying:
  - Override completion.
  - Zero realization retries.
  - A single final centered `ScrollTo` request.
  - `CenterMode` is not exposed to the `ScrollToRequested` observer.
- No product code changes were made; this is a test-only stabilization
fix.

| Before | After |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/7efcc482-86ea-4d96-bc6a-f00bd03000fa">
| <img
src="https://github.com/user-attachments/assets/da5ded81-340e-4564-b585-168edc9af045">
|

This branch was previously deployed

1 inactive deployment
copilot-pat-pool — 16759009 Deployed Oct 7, 2026 by HarishwaranVijayakumar via conclusion #2263
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration s/agent-gate-failed AI could not verify tests catch the bug s/agent-review-incomplete AI review did not complete all expected phases 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.

4 participants