Skip to content

[Testing] The Windows WebView category is removed from CI because WebView2 is not connected in Appium.#35335

Merged
jfversluis merged 3 commits into
dotnet:mainfrom
TamilarasanSF4853:remove-windows-webview-lane
May 11, 2026
Merged

[Testing] The Windows WebView category is removed from CI because WebView2 is not connected in Appium.#35335
jfversluis merged 3 commits into
dotnet:mainfrom
TamilarasanSF4853:remove-windows-webview-lane

Conversation

@TamilarasanSF4853

@TamilarasanSF4853 TamilarasanSF4853 commented May 7, 2026

Copy link
Copy Markdown
Contributor

Description of Changes

  • Recently, the Appium driver has not been connecting properly to the native WebView2 control on Windows. While running locally using Appium Inspector with the WebView control, the inspector is unable to recognize the WebView and displays an error.

  • Due to this Appium driver issue, the WebView lane in CI takes a long time to run (approximately 3 hours) and eventually gets cancelled. As a temporary workaround, the WebView lane has been temporarily removed from the Windows CI pipeline to allow the CI process to complete more quickly.

image image

Issue: #35334

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

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

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

Or

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

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

Copy link
Copy Markdown
Contributor

Hey there @@TamilarasanSF4853! 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 May 7, 2026
@sheiksyedm sheiksyedm changed the title [Testing] Removed Windows WebView lane in CI [Testing] The Windows WebView category was removed from CI because WebView2 is not connected in Appium. May 7, 2026
@sheiksyedm sheiksyedm changed the title [Testing] The Windows WebView category was removed from CI because WebView2 is not connected in Appium. [Testing] The Windows WebView category is removed from CI because WebView2 is not connected in Appium. May 7, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review May 7, 2026 11:03
Copilot AI review requested due to automatic review settings May 7, 2026 11:03
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Updates the UI test pipeline template to exclude the WebView test category from Windows (WinUI) CI, as a temporary mitigation for Appium/WebView2 connectivity issues that cause long-running/cancelled CI lanes (tracked in #35334).

Changes:

  • Introduces a Windows-specific category list (windowsCategoryGroupsToTest) that omits WebView.
  • Switches the WinUI UI test matrix to use windowsCategoryGroupsToTest instead of the shared categoryGroupsToTest.

Comment thread eng/pipelines/common/ui-tests.yml Outdated
Comment on lines +45 to +68
# Windows-specific category groups — WebView is excluded because it runs too long on Windows CI. Issue - https://github.com/dotnet/maui/issues/35334
windowsCategoryGroupsToTest:
- 'Accessibility,ActionSheet,ActivityIndicator,Animation,AppLinks'
- 'Border,BoxView,Brush,Button'
- 'CarouselView'
- 'Cells,CheckBox,ContextActions,CustomRenderers,DatePicker,Dispatcher,DisplayAlert,DisplayPrompt,DragAndDrop'
- 'CollectionView'
- 'Entry'
- 'Editor,Effects,Essentials,FlyoutPage,Focus,Fonts,Frame,Gestures,GraphicsView'
- 'Image,ImageButton,IndicatorView,InputTransparent,IsEnabled,IsVisible'
- 'Label'
- 'Layout'
- 'Lifecycle,ManualReview,Maps'
- 'ListView'
- 'Navigation'
- 'Page,Performance,Picker,ProgressBar'
- 'RadioButton,RefreshView'
- 'SafeAreaEdges,Shadow'
- 'ScrollView'
- 'SearchBar,Shape,Slider'
- 'SoftInput,Stepper,Switch,SwipeView'
- 'Shell'
- 'TabbedPage,TableView,TimePicker,TitleView,ToolbarItem,Triggers'
- 'ViewBaseTests,VisualStateManager,Window'
kubaflo
kubaflo previously approved these changes May 8, 2026
@kubaflo

kubaflo commented May 8, 2026

Copy link
Copy Markdown
Contributor

@jfversluis can you merge it to main?

@MauiBot

MauiBot commented May 8, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI Summary

👋 @TamilarasanSF4853 — new AI review results are available. Please review the latest session below.

📊 Review Sessione63b31f · updated to if condition · 2026-05-08 21:07 UTC
🚦 Gate — Test Before & After Fix

Gate Result: ⚠️ SKIPPED

No tests were detected in this PR.

Recommendation: Add tests to verify the fix using the write-tests-agent.


🧪 UI Tests — Category Detection

No UI test categories needed for this PR (no UI-relevant changes).


🔍 Regression Cross-Reference

🟢 No implementation files modified — skipping regression cross-reference.


🔍 Pre-Flight — Context & Validation

Pre-Flight — PR #35335

Issue: #35334 — [Windows] WebView CI lane is taking a long time to complete tests
PR: #35335 — [Testing] The Windows WebView category is removed from CI because WebView2 is not connected in Appium.
Author: TamilarasanSF4853 (community ✨ / partner/syncfusion)
Base: main ← head: remove-windows-webview-lane (e63b31f)
Platforms Affected: Windows CI (UI tests pipeline only)
Files Changed: 1 implementation (YAML pipeline), 0 test (+5 / -2)

Key Findings

  • Single-file change in eng/pipelines/common/ui-tests.yml.
  • Current diff uses the inline filter pattern: an extra ${{ if ne(categoryGroup, 'WebView') }} guard inside the existing WinUI each categoryGroup in parameters.categoryGroupsToTest matrix loop, plus a 2-line explanatory comment linking appium/appium#22217 and dotnet/maui#35334.
  • This is different from the original commit (287b4fd) the prior MauiBot review session evaluated — that commit added a separate 22-element windowsCategoryGroupsToTest parameter (verbatim duplicate minus 'WebView') and was correctly flagged for drift risk by the Copilot pull-request-reviewer bot. The author has since acted on that inline review and rewritten the change to the inline-filter shape.
  • Root cause is upstream Appium driver bug — driver cannot attach to native WebView2 on Windows; reproduces in a non-MAUI WinUI sample. Tracked at appium/appium#22217. The MAUI repo cannot fix the driver; this PR is an explicit, temporary workaround to unblock Windows CI (which had been timing out at ~3h and getting cancelled).
  • No unit/UI/device tests added — none are appropriate for a pipeline configuration change. Validation is structural (Azure Pipelines parser at queue time) plus the next CI run.
  • Comment in the file pins the reason and references the upstream issue — making future revert trivial (delete two lines).
  • kubaflo (member) asked @jfversluis to merge to main; sheiksyedm (member) has triggered maui-pr-uitests twice. Community is waiting on this to unblock CI.
  • Outstanding inline review thread from copilot-pull-request-reviewer is now outdated (is_outdated: true) — it was filed against the old duplicated-list shape and the current diff already addresses it.

File Classification

File Type Risk
eng/pipelines/common/ui-tests.yml CI pipeline (YAML) Low. Only affects the WinUI UI-tests matrix (line ~457-468). Other platform matrices (iOS, Android, Mac) are untouched.

Code Review Summary

Verdict: LGTM (small concerns)
Confidence: high
Errors: 0 | Warnings: 0 | Suggestions: 1

Findings:

  • 💡 eng/pipelines/common/ui-tests.yml:460-461 — Comment is good and links the upstream issue. Consider also calling out temporary workaround explicitly so a future maintainer/grep can find this when Appium ships a fix. Minor; not blocking.
  • ✅ Single source of truth preserved — categoryGroupsToTest remains the only category list, so future additions automatically apply on Windows except the explicitly-excluded WebView.
  • ✅ Override-safe — pipelines that override categoryGroupsToTest continue to work on the WinUI lane (the filter is applied to the parameter at expansion time).
  • ✅ Easy revert — removing the workaround is a 2-line deletion when appium/appium#22217 is fixed.
  • ✅ No drift risk — there is no parallel list to keep in sync with UITestCategories.cs.
  • ✅ No regression risk to non-Windows platforms — iOS / Android / Mac matrices are unchanged.

Test Coverage

  • Detected test type: None (CI pipeline YAML only).
  • Gate: ⚠️ SKIPPED (passed in from prior step). Appropriate for this change — there are no in-repo tests for pipeline matrix expansion. Functional validation is the next maui-pr-uitests run on the PR (already triggered twice by sheiksyedm).

Hints for Try-Fix Phase

The fix space here is small and well-bounded. Distinct alternative shapes a try-fix model might explore:

  1. Inline ${{ if ne(categoryGroup, 'WebView') }} filter in the WinUI matrix (the current PR shape).
  2. Add an explicit windowsCategoryGroupsToExclude list parameter and filter via containsValue.
  3. Add a boolean excludeWebViewOnWindows toggle.
  4. Restructure data — split 'WebView' out of categoryGroupsToTest into a small parameter that non-Windows matrices append and the WinUI matrix omits.
  5. Original PR shape (rejected by reviewer): full duplicate list windowsCategoryGroupsToTest.

All five resolve the bug; ranking is by drift risk, override safety, diff size, and ease of revert.


🔧 Fix — Analysis & Comparison

Try-Fix Summary — PR #35335

Note on test execution: PR #35335 changes only eng/pipelines/common/ui-tests.yml,
a CI pipeline matrix definition. There is no in-repo test target that exercises pipeline
matrix expansion — validation is structural (Azure Pipelines parser at queue time) plus
the next maui-pr-uitests run. As a result, the "Test Result" column is N/A for
every candidate; ranking is by code-review quality (drift risk, override safety,
diff size, ease of revert).

Fix Candidates

# Source Approach Test Result Files Changed Notes
try-fix-1 claude-opus-4.6 Inline ${{ if ne(categoryGroup, 'WebView') }} in WinUI matrix N/A (YAML) 1 file (~5 lines) Smallest diff. Single source of truth. Identical to current PR shape.
try-fix-2 claude-sonnet-4.6 Add windowsCategoryGroupsToExclude: ['WebView'] parameter; filter via containsValue N/A (YAML) 1 file (~7 lines) Generalizes for future Windows-only exclusions. Equivalent to pr-plus-reviewer.
try-fix-3 gpt-5.3-codex Add excludeWebViewOnWindows: true boolean toggle N/A (YAML) 1 file (~6 lines) Self-documenting feature flag. Easy flip-test when Appium is fixed.
try-fix-4 gemini-3-pro-preview Split 'WebView' out of categoryGroupsToTest into separate webViewCategoryGroups; non-Windows matrices append it N/A (YAML) 1 file (wider — every non-Windows matrix) Cleanest WinUI block but touches every platform's matrix. Multi-site revert.
pr-plus-reviewer Branch A (expert) Current PR + comment polish ("TEMPORARY WORKAROUND") N/A (YAML) 1 file (~5 lines + comment) Functionally identical to current PR / try-fix-1; only comment wording differs.
pr PR #35335 (current head e63b31f) Inline ${{ if ne(categoryGroup, 'WebView') }} filter — already amended after copilot-pull-request-reviewer inline review ⚠️ SKIPPED (Gate — no tests appropriate) 1 file (+5 / -2) Current PR is the same shape as try-fix-1. Author already addressed the original duplicated-list concern.

Cross-Pollination

Model Round New Ideas? Details
claude-opus-4.6 2 No try-fix-1 already converges with the inline reviewer comment; no simpler shape exists.
claude-sonnet-4.6 2 No try-fix-2 generalizes try-fix-1 but adds no functional improvement for a single-element exclusion.
gpt-5.3-codex 2 No Toggle is purely cosmetic over try-fix-1.
gemini-3-pro-preview 2 No Data restructure is the most invasive and offers no correctness gain.

Exhausted: Yes (1 cross-pollination round, no new ideas).

Selected Fix

pr (= functionally try-fix-1) — the current PR diff already implements the
optimal shape. The author rewrote the original duplicated-list change in response to the
inline copilot-pull-request-reviewer feedback, and the head commit e63b31f is
essentially try-fix-1. No further changes are required to merge.

The only outstanding (nit-level) note from the expert reviewer is to strengthen the
explanatory comment by adding the word "TEMPORARY WORKAROUND" to make the line
trivially grep-able when Appium ships a fix. That is captured as the single inline
finding and is non-blocking.


📋 Report — Final Recommendation

Phase 3 Report — PR #35335

✅ Final Recommendation: APPROVE (with optional 1-line comment polish)

Phase Status

Phase Status Notes
Pre-Flight ✅ COMPLETE YAML-only PR; 1 file changed (+5/-2); 0 errors, 0 warnings, 1 nit-level suggestion.
Code Review LGTM (high) 0 errors, 0 warnings, 1 suggestion (comment polish).
Gate ⚠️ SKIPPED No tests appropriate for a pipeline-matrix YAML change.
Try-Fix ✅ COMPLETE 4 candidates (try-fix-1..4) + pr-plus-reviewer; all N/A test (YAML).
Report ✅ COMPLETE

Important context

The author has already amended this PR between the prior MauiBot session
(287b4fd — duplicated 22-element windowsCategoryGroupsToTest parameter) and
the current head (e63b31f — inline ${{ if ne(categoryGroup, 'WebView') }} filter).
The current diff is exactly the shape the inline copilot-pull-request-reviewer
recommended. The earlier inline review thread is now is_outdated: true.

Comparative Analysis

Rank Candidate Drift risk Override-safe Diff size Self-documenting Easy revert
1 pr (current) ≡ try-fix-1 ✅ none ✅ yes smallest (+5/-2) ✅ inline comment ✅ delete 2 lines
1 (tie) pr-plus-reviewer ✅ none ✅ yes smallest (+ comment) ✅✅ explicit "TEMPORARY" ✅ delete 2 lines
3 try-fix-2 ✅ none ✅ yes small (~7 lines) ✅ named param ✅ delete param
4 try-fix-3 ✅ none ✅ yes small (~6 lines) ✅ named flag ✅ flip boolean
5 try-fix-4 ✅ none ✅ yes wider (every non-Windows matrix) ⚠️ multi-site ⚠️ multi-site revert

(No candidate failed regression tests because no regression tests exist for this PR;
ranking is therefore by code-review quality. The pre-merge ranking rule "candidates
that failed regression tests MUST be ranked lower" is vacuously satisfied — all
candidates have the same N/A test result.)

Code Review Impact on Try-Fix

The Pre-Flight code review for the current PR diff found no errors or warnings —
the duplicated-list concern that the prior MauiBot session correctly flagged has
already been resolved by the author's amendment. The single remaining suggestion
(comment polish) is captured in inline-findings.json and was applied in
pr-plus-reviewer.

All four try-fix candidates explore distinct design points (inline filter, exclusion
list, boolean toggle, data restructure), all preserve a single source of truth, and
all are override-safe. None offers a meaningful improvement over the current PR
shape.

Winner: pr

  • Smallest diff that solves the problem.
  • Zero drift riskcategoryGroupsToTest remains the canonical list.
  • Override-safe — pipelines that override the parameter still work on the WinUI lane.
  • Trivial revert when appium/appium#22217 is fixed: delete two lines.
  • Already addresses the inline copilot-pull-request-reviewer comment.

Summary

PR #35335 correctly identifies a real CI productivity problem — the Windows WebView UI
test lane hangs ~3h waiting on a broken Appium ↔ WebView2 connection (appium/appium#22217)
and gets cancelled — and applies a minimal, well-commented, easily-revertable workaround
that excludes only the WebView category on Windows. The current implementation
preserves a single source of truth, is override-safe, and links both the upstream and
in-repo tracking issues from the matrix block.

The optional polish (pr-plus-reviewer) is a one-word comment change ("TEMPORARY
WORKAROUND") to make the line trivially grep-able when Appium ships a fix. Not
blocking; safe to merge as-is.

Root Cause

Upstream Appium driver bug — driver fails to attach to native WebView2 controls on
Windows; reproducible in a non-MAUI WinUI sample. The MAUI repo cannot fix the driver;
this PR is the appropriate workaround.

Fix Quality

The PR has evolved through a healthy review cycle: original commit added a duplicated
list (correctly flagged by copilot-pull-request-reviewer for drift risk), author
rewrote to the inline-filter shape, and the current head matches the optimal candidate
identified by independent multi-model exploration. No structural changes recommended.

Note on Gate: Gate was ⚠️ SKIPPED because no tests are appropriate for this change.
Pipeline YAML changes are validated structurally by the Azure Pipelines parser when
the pipeline is queued and functionally by the next CI run (already triggered twice
by sheiksyedm via /azp run maui-pr-uitests).



📊 Review Session287b4fd · added issue link · 2026-05-08 10:04 UTC
🚦 Gate — Test Before & After Fix

Gate Result: ⚠️ SKIPPED

No tests were detected in this PR.

Recommendation: Add tests to verify the fix using the write-tests-agent.


🧪 UI Tests — Category Detection

No UI test categories needed for this PR (no UI-relevant changes).


🔍 Regression Cross-Reference

🟢 No implementation files modified — skipping regression cross-reference.


🔍 Pre-Flight — Context & Validation

Issue: #35334 - [Windows] WebView CI lane is taking a long time to complete tests
PR: #35335 - [Testing] The Windows WebView category is removed from CI because WebView2 is not connected in Appium.
Platforms Affected: Windows CI (UI tests pipeline only)
Files Changed: 1 implementation (YAML pipeline), 0 test

Key Findings

  • Single-file change in eng/pipelines/common/ui-tests.yml (+26/-1).
  • Adds a new pipeline parameter windowsCategoryGroupsToTest that duplicates the existing categoryGroupsToTest list verbatim, only omitting 'WebView'.
  • Switches the winui_ui_tests matrix from categoryGroupsToTest to the new Windows-only list (line 485).
  • Root cause is upstream: Appium driver currently fails to attach to WebView2 on Windows (also reproduces with a native WinUI WebView2 app), causing the WebView lane to hang ~3h until cancellation. Tracked in 🐞 bug: In Windows, Appium does not connect to the app when the app has WebView2 appium/appium#22217.
  • Goal of this PR is purely to unblock Windows CI — it is a workaround, not a real fix for the WebView2 Appium connectivity bug.
  • No unit/UI/device tests added (and none are appropriate; this is a pipeline configuration change verified by the pipeline parsing/running successfully).
  • An inline review comment from the Copilot bot reviewer already flagged the duplication / drift risk and suggested keeping a single source of truth and conditionally skipping WebView for WinUI.
  • kubaflo asked @jfversluis to merge to main — community is waiting on this to unblock CI.

Code Review Summary

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

Key code review findings:

  • ⚠️ eng/pipelines/common/ui-tests.yml:46-68windowsCategoryGroupsToTest is a verbatim copy of categoryGroupsToTest minus WebView. Two lists will drift when categories are added/renamed; the existing header comment about syncing with UITestCategories.cs only references categoryGroupsToTest, so a future maintainer is very likely to forget to update the Windows copy.
  • 💡 eng/pipelines/common/ui-tests.yml:485 — Prefer a single source of truth: keep categoryGroupsToTest as the only list and either (a) ${{ if ne(categoryGroup, 'WebView') }} inside the WinUI matrix loop, (b) filter via containsValue/replace, or (c) make the excluded list a separate small parameter (windowsCategoryGroupsToExclude: ['WebView']) that the WinUI matrix subtracts.
  • 💡 The header comment on the new parameter is good (links the issue), but should also call out that this is a temporary workaround for 🐞 bug: In Windows, Appium does not connect to the app when the app has WebView2 appium/appium#22217 so it is easier to remove once Appium is fixed.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #35335 Add new windowsCategoryGroupsToTest parameter (full duplicate minus WebView), switch WinUI matrix to it ⚠️ SKIPPED (Gate — no tests detected) eng/pipelines/common/ui-tests.yml Original PR; Copilot bot flagged duplication risk

🔧 Fix — Analysis & Comparison

Try-Fix Summary (4 candidates)

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #35335 Add new 22-element windowsCategoryGroupsToTest parameter (full duplicate of categoryGroupsToTest minus 'WebView'); switch WinUI matrix to it ⚠️ SKIPPED (Gate — no tests) eng/pipelines/common/ui-tests.yml Original PR. Copilot reviewer bot flagged duplication / drift risk.
pr-plus-reviewer Branch A PR fix + reviewer feedback: replace duplicated list with an exclusion list (windowsCategoryGroupsToExclude: ['WebView']) and filter inside the WinUI matrix; strengthen the comment N/A (YAML) eng/pipelines/common/ui-tests.yml Removes drift risk; keeps override compatibility; effectively the same as try-fix-2.
try-fix-1 claude-opus-4.6 Inline ${{ if ne(categoryGroup, 'WebView') }} inside the WinUI matrix each loop; no new parameter, single source of truth N/A (YAML) eng/pipelines/common/ui-tests.yml (~5 lines) Smallest diff; matches Copilot bot reviewer's suggestion almost verbatim.
try-fix-2 claude-sonnet-4.6 Add windowsCategoryGroupsToExclude: ['WebView'] parameter; filter via ${{ if not(containsValue(...)) }} in WinUI matrix N/A (YAML) eng/pipelines/common/ui-tests.yml (~7 lines) Generalizable for future Windows-only exclusions; equivalent to pr-plus-reviewer.
try-fix-3 gpt-5.3-codex Add boolean excludeWebViewOnWindows: true toggle; conditional skip in WinUI matrix N/A (YAML) eng/pipelines/common/ui-tests.yml (~6 lines) Self-documenting feature flag; easiest to flip-test once Appium is fixed.
try-fix-4 gemini-3-pro-preview Move 'WebView' out of categoryGroupsToTest into a separate webViewCategoryGroups parameter; non-Windows matrices append it, WinUI matrix omits it N/A (YAML) eng/pipelines/common/ui-tests.yml (wider — every non-Windows matrix site) Cleanest WinUI matrix block (no if), but requires touching every non-Windows matrix each.

Cross-Pollination

Model Round New Ideas? Details
claude-opus-4.6 2 No Says try-fix-1 already converges with the Copilot bot reviewer comment; nothing simpler exists.
claude-sonnet-4.6 2 No try-fix-2 is the same data-driven shape as pr-plus-reviewer; no improvement found.
gpt-5.3-codex 2 No Toggle is purely cosmetic over try-fix-1; no functional improvement available.
gemini-3-pro-preview 2 No Restructuring the data is the most invasive of the four; no simpler restructuring exists.

Exhausted: Yes (1 round of cross-pollination, no new ideas)
Selected Fix: try-fix-1 — minimal diff, single source of truth, matches the inline reviewer feedback already on the PR. See report/content.md for full comparison.

⚠️ No tests were executed for any try-fix candidate: this PR is a pipeline YAML
change with no associated test target. All candidates are validated structurally by the
Azure Pipelines parser at queue time; functional validation requires actually running
maui-pr-uitests against each variant, which is outside the scope of this review. As a
result the "Test Result" column is N/A for every candidate, and ranking is based on
code-review quality (drift risk, override safety, readability, ease of revert).


📋 Report — Final Recommendation

⚠️ Final Recommendation: REQUEST CHANGES (suggest alternative)

Phase Status

Phase Status Notes
Pre-Flight ✅ COMPLETE YAML-only PR; 1 file changed; 1 ⚠️ + 2 💡 from code review
Code Review NEEDS_DISCUSSION (medium) 0 errors, 1 warning (drift risk), 2 suggestions
Gate ⚠️ SKIPPED No tests detected (pipeline YAML change — none expected)
Try-Fix ✅ COMPLETE 4 attempts (try-fix-1..4) + pr-plus-reviewer; all N/A test (YAML), ranked on review quality
Report ✅ COMPLETE

Code Review Impact on Try-Fix

The Pre-Flight code-review surfaced one ⚠️ Warning — drift risk from duplicating the
22-element categoryGroupsToTest list
— that exactly mirrors the inline comment already
left on the PR by the Copilot reviewer bot. This concern shaped Try-Fix exploration: every
candidate (try-fix-1 through try-fix-4 and pr-plus-reviewer) is structured to eliminate
duplication
and keep a single source of truth, differing only in how the WebView
exclusion is encoded (inline if, generic exclusion list, named boolean toggle, or
data-shape split). No candidate retained the PR's duplicated-list approach.

Comparative Analysis

Comparing all six candidates (no candidate failed regression tests because no regression
tests exist for this PR; ranking is therefore by review quality — drift risk, override
safety, readability, ease of revert):

Rank Candidate Drift risk Override-safe? Diff size Self-documenting? Easy revert?
1 try-fix-1 ✅ none (single list) ✅ yes smallest (~5 lines) ✅ inline comment ✅ delete 2 lines
2 pr-plus-reviewer / try-fix-2 ✅ none ✅ yes small (~7 lines) ✅ named param ✅ delete param
3 try-fix-3 ✅ none ✅ yes small (~6 lines) ✅ named flag ✅ flip boolean
4 try-fix-4 ✅ none ✅ yes wider (every non-Windows matrix) ⚠️ requires touching multiple sites ⚠️ multi-site revert
5 pr (as submitted) ❌ high (22 lines duplicated) ❌ no (WinUI ignores categoryGroupsToTest overrides) medium (+26/-1) ⚠️ comment OK but list nature is opaque ⚠️ delete 23-line block + restore matrix ref

Winner: try-fix-1

  • Smallest diff that fully solves the problem.
  • Zero drift risk — there is exactly one canonical category list. Any future addition to
    categoryGroupsToTest automatically applies on Windows.
  • Override-safe — pipeline runs that override categoryGroupsToTest continue to take
    effect on the WinUI lane.
  • Matches the existing inline reviewer comment on the PR almost verbatim, so the PR
    author can act on it with minimal back-and-forth.
  • Easy revert when Appium fixes 🐞 bug: In Windows, Appium does not connect to the app when the app has WebView2 appium/appium#22217 — delete two lines.

Summary

PR #35335 correctly identifies a real CI productivity problem (Windows WebView lane hangs
~3h waiting on a broken Appium ↔ WebView2 connection) and chooses a reasonable workaround
(skip the WebView category on Windows). The implementation, however, encodes the workaround
as a 22-line verbatim duplicate of categoryGroupsToTest, which (a) is guaranteed to drift
from the canonical list as new categories are added, (b) silently breaks any pipeline run
that overrides categoryGroupsToTest, and (c) is harder to revert cleanly when Appium is
fixed. All four try-fix candidates and the reviewer-feedback variant resolve these concerns
with a much smaller change.

Root Cause

Upstream Appium driver bug — the driver fails to attach to native WebView2 controls on
Windows, reproducible even in a non-MAUI WinUI sample (see appium/appium#22217). The MAUI
repo cannot fix the driver; this PR is a pipeline workaround to unblock Windows CI in the
meantime.

Fix Quality

The PR's intent is correct and the change is low-risk in the narrow sense (it only
affects the WinUI UI-test matrix). The implementation, however, has the duplication /
drift problem already flagged by the Copilot reviewer bot inline. Recommend adopting the
try-fix-1 shape (inline ${{ if ne(categoryGroup, 'WebView') }} filter inside the WinUI
matrix loop) before merge. This keeps the PR's intent, removes the maintenance liability,
and makes the workaround trivially revertable when Appium is fixed.

Note on Gate: Gate was ⚠️ SKIPPED because no tests are appropriate for this change.
Pipeline YAML changes are validated structurally by the Azure Pipelines parser when the
pipeline is queued, and functionally by the next CI run. Consider noting in the PR
description that no in-repo tests are expected.


@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated review — alternative fix proposed

The expert-reviewer evaluation compared the PR fix against #1 automatically generated candidates and selected try-fix-1 as the strongest fix.

Why: try-fix-1 is the smallest, override-safe, drift-free fix. It keeps categoryGroupsToTest as the single source of truth and skips only the WebView entry inside the WinUI matrix via an inline ${{ if ne(categoryGroup, 'WebView') }} — matching the inline reviewer comment already on the PR and trivial to revert once appium/appium#22217 is fixed. The PR's 22-line duplicated list (a) will drift from the canonical list and (b) silently breaks any pipeline run that overrides categoryGroupsToTest.

Please consider applying the candidate diff below (or use it as guidance). Once you push an update, this workflow will re-trigger and re-evaluate.

Candidate diff (`try-fix-1`)
diff --git a/eng/pipelines/common/ui-tests.yml b/eng/pipelines/common/ui-tests.yml
--- a/eng/pipelines/common/ui-tests.yml
+++ b/eng/pipelines/common/ui-tests.yml
@@ -457,9 +457,12 @@ stages:
               - job: winui_ui_tests_${{ project.name }}
                 strategy:
                   matrix:
-                    ${{ each categoryGroup in parameters.categoryGroupsToTest }}:
-                      ${{ categoryGroup }}:
-                        CATEGORYGROUP: ${{ categoryGroup }}
+                    # WebView is excluded on Windows: Appium driver cannot attach to WebView2
+                    # (appium/appium#22217 / dotnet/maui#35334). Remove this filter once fixed.
+                    ${{ each categoryGroup in parameters.categoryGroupsToTest }}:
+                      ${{ if ne(categoryGroup, 'WebView') }}:
+                        ${{ categoryGroup }}:
+                          CATEGORYGROUP: ${{ categoryGroup }}
                 timeoutInMinutes: ${{ parameters.timeoutInMinutes }} # how long to run the job before automatically cancelling
                 workspace:
                   clean: all

@MauiBot MauiBot added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 8, 2026
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines

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

@kubaflo kubaflo added s/agent-fix-implemented PR author implemented the agent suggested fix s/agent-fix-win AI found a better alternative fix than the PR labels May 8, 2026
@kubaflo kubaflo enabled auto-merge (squash) May 8, 2026 13:43

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Expert Review — 1 findings

See inline comments for details.

Comment thread eng/pipelines/common/ui-tests.yml
@MauiBot MauiBot added s/agent-approved AI agent recommends approval - PR fix is correct and optimal and removed s/agent-changes-requested AI agent recommends changes - found a better alternative or issues labels May 8, 2026
@jfversluis jfversluis disabled auto-merge May 11, 2026 10:25
@jfversluis jfversluis merged commit f8cb875 into dotnet:main May 11, 2026
151 of 154 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR7 milestone May 11, 2026
@kubaflo kubaflo added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues and removed s/agent-approved AI agent recommends approval - PR fix is correct and optimal labels May 20, 2026
devanathan-vaithiyanathan pushed a commit to devanathan-vaithiyanathan/maui that referenced this pull request Jun 1, 2026
…View2 is not connected in Appium. (dotnet#35335)

### Description of Changes

- Recently, the Appium driver has not been connecting properly to the
native WebView2 control on Windows. While running locally using Appium
Inspector with the WebView control, the inspector is unable to recognize
the WebView and displays an error.

- Due to this Appium driver issue, the WebView lane in CI takes a long
time to run (approximately 3 hours) and eventually gets cancelled. As a
temporary workaround, the WebView lane has been temporarily removed from
the Windows CI pipeline to allow the CI process to complete more
quickly.
<img width="649" height="294" alt="image"
src="https://github.com/user-attachments/assets/68df006b-56d6-4bfa-870a-a4184f5b18b7"
/>
<img width="576" height="430" alt="image"
src="https://github.com/user-attachments/assets/40c222e8-4935-450d-be7e-5ee9245e9eb1"
/>


**Issue:** dotnet#35334
devanathan-vaithiyanathan pushed a commit to devanathan-vaithiyanathan/maui that referenced this pull request Jun 5, 2026
…View2 is not connected in Appium. (dotnet#35335)

### Description of Changes

- Recently, the Appium driver has not been connecting properly to the
native WebView2 control on Windows. While running locally using Appium
Inspector with the WebView control, the inspector is unable to recognize
the WebView and displays an error.

- Due to this Appium driver issue, the WebView lane in CI takes a long
time to run (approximately 3 hours) and eventually gets cancelled. As a
temporary workaround, the WebView lane has been temporarily removed from
the Windows CI pipeline to allow the CI process to complete more
quickly.
<img width="649" height="294" alt="image"
src="https://github.com/user-attachments/assets/68df006b-56d6-4bfa-870a-a4184f5b18b7"
/>
<img width="576" height="430" alt="image"
src="https://github.com/user-attachments/assets/40c222e8-4935-450d-be7e-5ee9245e9eb1"
/>


**Issue:** dotnet#35334
PureWeen added a commit that referenced this pull request Jun 11, 2026
…xx-sr8 (#35810)

<!-- 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!

## Cut-then-merge step 2 of 2

SR8 was cut from `main` at
[`e02d6b6dc2`](e02d6b6)
(commit "Add gh-aw rerun review scanner (#35685)"). This PR pulls the
SR7 stabilization work into SR8 so SR8 contains everything that's in
SR7.

- **Base:** `release/10.0.1xx-sr8` @
[`e02d6b6dc2`](e02d6b6)
- **Merging in:** `release/10.0.1xx-sr7` @
[`9da598b4a1`](9da598b)
(PatchVersion bump to 71)
- **Merge base:**
[`f8cb875e`](f8cb875eee)
("[Testing] The Windows WebView category is removed from CI…" #35335)
- **Strategy:** non-fast-forward merge commit (preserves both branches'
history)

## Conflict resolution

Two trivial conflicts, both resolved by taking the SR8 (`HEAD`) side:

| File | Why it conflicted | Resolution |
| --- | --- | --- |
|
[`eng/Versions.props`](https://github.com/dotnet/maui/blob/release/10.0.1xx-sr8/eng/Versions.props)
| SR7 bumped `PatchVersion` 70→71 (#35786); SR8 starts at 80 | Keep
`PatchVersion=80` (SR8 is the higher patch band) |
|
`src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs`
| Whitespace-only difference (`false; //` vs `false; //`) in two
comments | Keep SR8's whitespace |

No semantic conflicts.

## Inherited from SR7

26 SR7-only commits land in SR8 via this merge. The source PRs are:

<details>
<summary>Source PRs (43, deduped by commit)</summary>

#35020, #35072, #35092, #35150, #35223, #35299, #35305, #35347, #35356,
#35359, #35360, #35421, #35423, #35424, #35425, #35426, #35427, #35428,
#35430, #35434, #35441, #35447, #35461, #35480, #35503, #35520, #35521,
#35559, #35566, #35585, #35625, #35642, #35664, #35689, #35690, #35691,
#35692, #35693, #35694, #35703, #35744, #35768, #35786

Includes the SR7 revert chain:
- #35689 — Revert PR #30068 (FontImageSource centering on Windows)
- #35694 — Revert TalkBack RadioButton fix
- #35703 — Revert Shell.NavBarIsVisible fix
- #35744 — Revert HybridWebView WebView fix
- #35461, #35503 — additional Android reverts
</details>

After this lands, the release-readiness tracker can survey
`release/10.0.1xx-sr8` directly instead of using `-Candidate
-InheritFromPriorSr` mode against SR7.
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-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-fix-implemented PR author implemented the agent suggested fix 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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants