Skip to content

[iOS] Fix WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event - #30625

Merged
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix-30515
Jun 29, 2026
Merged

[iOS] Fix WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event#30625
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix-30515

Conversation

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Issue Details

Reloading HtmlWebViewSource on iOS causes the Navigated event to return Failure due to WKWebView not supporting .reload() for HTML strings.

Description of Change

Added a check for HtmlWebViewSource and reloaded the HTML manually to ensure successful navigation.

Issues Fixed

Fixes #30515

Tested the behavior in the following platforms.

  • Android
  • Windows
  • iOS
  • Mac
Before After
iOS
Before.mov
iOS
After.mov

@dotnet-policy-service dotnet-policy-service Bot added community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration labels Jul 15, 2025
@jsuarezruiz

Copy link
Copy Markdown
Contributor

/azp run MAUI-UITests-public

@azure-pipelines

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

// If the source is an HTML source, we need to reload from the source
// since WKWebView.Reload() doesn't work properly with LoadHtmlString
var sourceType = webView.Source.GetType().Name;
if (string.Equals(sourceType, "HtmlWebViewSource", StringComparison.Ordinal))

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.

Could you eliminate string allocation and comparison by using direct type checking?

if (webView.Source is HtmlWebViewSource)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@jsuarezruiz, We can't check the type directly because HtmlWebViewSource belongs to the Controls project, whereas the Extensions are defined in the Core project. So accessed the type using GetType().Name.

@devanathan-vaithiyanathan
devanathan-vaithiyanathan marked this pull request as ready for review July 18, 2025 10:39
@devanathan-vaithiyanathan
devanathan-vaithiyanathan requested a review from a team as a code owner July 18, 2025 10:39
@jfversluis
jfversluis requested a review from Copilot August 24, 2025 20:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR fixes an issue where WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in the Navigated event on iOS, caused by WKWebView not properly supporting the .reload() method for HTML strings loaded via LoadHtmlString.

Key Changes:

  • Modified the reload logic to detect HtmlWebViewSource and reload from the source instead of using WKWebView's native reload method
  • Added comprehensive UI tests to verify the fix works correctly

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/Core/src/Platform/iOS/WebViewExtensions.cs Enhanced UpdateReload method to handle HtmlWebViewSource by reloading from source instead of using native WKWebView reload
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs Added NUnit test to verify WebView HTML source reload returns Success status
src/Controls/tests/TestCases.HostApp/Issues/Issue30515.cs Created UI test page with WebView using HtmlWebViewSource and reload functionality for testing

Comment on lines +68 to +69
var sourceType = webView.Source.GetType().Name;
if (string.Equals(sourceType, "HtmlWebViewSource", StringComparison.Ordinal))

Copilot AI Aug 24, 2025

Copy link

Choose a reason for hiding this comment

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

Using string comparison with type name is fragile and could break if the type is renamed or if there are similar named types. Consider using is HtmlWebViewSource pattern matching or webView.Source is HtmlWebViewSource for type checking instead.

Suggested change
var sourceType = webView.Source.GetType().Name;
if (string.Equals(sourceType, "HtmlWebViewSource", StringComparison.Ordinal))
if (webView.Source is HtmlWebViewSource)

Copilot uses AI. Check for mistakes.
Comment on lines 56 to +64
public static void UpdateReload(this WKWebView platformWebView, IWebView webView)
{
platformWebView?.Reload();
if (platformWebView == null)
{
return;
}

// Check if we have a source and platformWebView implements IWebViewDelegate
if (webView.Source != null && platformWebView is IWebViewDelegate webViewDelegate)

Copilot AI Aug 24, 2025

Copy link

Choose a reason for hiding this comment

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

The cast platformWebView is IWebViewDelegate seems incorrect since platformWebView is of type WKWebView, not an IWebViewDelegate. This cast will likely always fail. You should either get the delegate from the WebView handler or use a different approach to access the Load method.

Copilot uses AI. Check for mistakes.
@jsuarezruiz

Copy link
Copy Markdown
Contributor

/rebase

@jsuarezruiz

Copy link
Copy Markdown
Contributor

/rebase

@jsuarezruiz

Copy link
Copy Markdown
Contributor

/azp run MAUI-UITests-public

@azure-pipelines

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

@MauiBot

This comment has been minimized.

@MauiBot MauiBot added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues 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 Mar 21, 2026

@kubaflo kubaflo 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.

Could you please review the AI's summary?

@MauiBot MauiBot added s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-gate-failed AI could not verify tests catch the bug s/agent-fix-win AI found a better alternative fix than the PR labels Jun 25, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

AI Review Summary

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

Gate Passed Confidence Medium Platform iOS


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

Gate Result: ✅ PASSED

Platform: IOS · Base: main · Merge base: 5ec887fa

Test Without Fix (expect FAIL) With Fix (expect PASS)
🖥️ Issue30515 Issue30515 ✅ FAIL — 335s ✅ PASS — 125s
🔴 Without fix — 🖥️ Issue30515: FAIL ✅ · 335s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 695 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 665 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 5.82 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Foldable/src/Controls.Foldable.csproj (in 4.97 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 6.38 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 6.38 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj (in 6.4 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 6.4 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 6.41 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 6.4 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/maps/src/Maps.csproj (in 6.42 sec).
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
  Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
  Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
  Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
  Detected signing identity:
    Code Signing Key: "" (-)
    Provisioning Profile: "" () - no entitlements
    Bundle Id: com.microsoft.maui.uitests
    App Id: com.microsoft.maui.uitests
  Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Optimizing assemblies for size. This process might take a while.

Build succeeded.

/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
    1 Warning(s)
    0 Error(s)

Time Elapsed 00:03:02.93
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/CustomAttributes/Controls.CustomAttributes.csproj (in 823 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 828 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 831 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils/VisualTestUtils.csproj (in 1 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Core/UITest.Core.csproj (in 12 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 932 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 951 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 242 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.NUnit/UITest.NUnit.csproj (in 1.17 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Appium/UITest.Appium.csproj (in 2.1 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Analyzers/UITest.Analyzers.csproj (in 2.77 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils.MagickNet/VisualTestUtils.MagickNet.csproj (in 3.22 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.iOS.Tests/Controls.TestCases.iOS.Tests.csproj (in 3.25 sec).
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
  UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
  VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
  UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
  VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
  UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
  UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
  Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)

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.07]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.21]   Discovered:  Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/25/2026 10:15:15 AM FixtureSetup for Issue30515(iOS)
>>>>> 6/25/2026 10:15:21 AM VerifyWebViewHTMLSourceReloadStatus Start
>>>>> 6/25/2026 10:15:22 AM VerifyWebViewHTMLSourceReloadStatus Stop
>>>>> 6/25/2026 10:15:22 AM Log types: syslog, crashlog, performance, safariConsole, safariNetwork, server
  Failed VerifyWebViewHTMLSourceReloadStatus [1 s]
  Error Message:
     Assert.That(App.FindElement("NavigationStatusLabel").GetText(), Is.EqualTo("Success"))
  Expected string length 7 but was 12. Strings differ at index 0.
  Expected: "Success"
  But was:  "Reloading..."
  -----------^

  Stack Trace:
     at Microsoft.Maui.TestCases.Tests.Issues.Issue30515.VerifyWebViewHTMLSourceReloadStatus() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:line 21

1)    at Microsoft.Maui.TestCases.Tests.Issues.Issue30515.VerifyWebViewHTMLSourceReloadStatus() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:line 21


NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue30515.trx

Test Run Failed.
Total tests: 1
     Failed: 1
 Total time: 1.4923 Minutes
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue30515.trx

🟢 With fix — 🖥️ Issue30515: PASS ✅ · 125s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 394 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 356 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 409 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 458 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 475 ms).
  6 of 11 projects are up-to-date for restore.
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
  Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
  Detected signing identity:
    Code Signing Key: "" (-)
    Provisioning Profile: "" () - no entitlements
    Bundle Id: com.microsoft.maui.uitests
    App Id: com.microsoft.maui.uitests
  Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Optimizing assemblies for size. This process might take a while.

Build succeeded.

/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
    1 Warning(s)
    0 Error(s)

Time Elapsed 00:01:04.25
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 339 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 389 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 394 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 413 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 437 ms).
  8 of 13 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
  Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14486957
  Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
  VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
  UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
  VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
  UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
  UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
  UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
  Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)

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.05]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.20]   Discovered:  Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/25/2026 10:17:21 AM FixtureSetup for Issue30515(iOS)
>>>>> 6/25/2026 10:17:26 AM VerifyWebViewHTMLSourceReloadStatus Start
>>>>> 6/25/2026 10:17:27 AM VerifyWebViewHTMLSourceReloadStatus Stop
  Passed VerifyWebViewHTMLSourceReloadStatus [926 ms]
NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue30515.trx

Test Run Successful.
Total tests: 1
     Passed: 1
 Total time: 25.7806 Seconds
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue30515.trx

📁 Fix files reverted (1 files)
  • src/Core/src/Platform/iOS/WebViewExtensions.cs

📱 UI Tests — ViewBaseTests,WebView

Detected UI test categories: ViewBaseTests,WebView

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

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
ViewBaseTests 13/112 (99 ❌) 198 diff PNGs
WebView 37/48 (10 ❌) 14 diff PNGs
ViewBaseTests — 99 failed tests
VisualTransform_RotationXWithScaleX
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See 
...
LightTheme_EditorAndPlaceholderColor_VerifyVisualState
System.InvalidOperationException : 
Snapshot different than baseline: LightTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: LightTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a a bug)
...
BoxView_ClipWithRotation
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.BoxView_ClipWithRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 1110
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Runti
...
Border_ClipWithStrokeShapeRoundRectangle
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeShapeRoundRectangle() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 109
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.R
...
DefaultContentWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 146
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Ref
...
ImageButton_ClipWithEllipseGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.ImageButton_ClipWithEllipseGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 625
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflec
...
FirstCustomPageWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 216
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at 
...
LightTheme_RadioButton_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.LightTheme_RadioButton_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 114
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
ContentView_ClipWithRectangleGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.ContentView_ClipWithRectangleGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 533
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Refl
...
VisualTransform_RotationXWithRotationY
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_RotationXWithRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_RotationXWithRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image
...
BoxView_ClipWithColorGreen
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.BoxView_ClipWithColorGreen() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 156
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Runt
...
Image_ClipNull_NoCrash
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipNull_NoCrash() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 725
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeM
...
ImageButton_ClipWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.ImageButton_ClipWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 662
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Runt
...
DarkTheme_CheckBox_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_CheckBox_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 67
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
BoxView_ClipWithCornerRadius
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.BoxView_ClipWithCornerRadius() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 176
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Ru
...
FirstCustomPageWithIconImageChanged
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithIconImageChanged() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 274
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at
...
Image_ClipWithRectangleGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithRectangleGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 287
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection
...
LightTheme_SearchBarAndPlaceholderColor_VerifyVisualState
System.InvalidOperationException : 
Snapshot different than baseline: LightTheme_SearchBarAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: LightTheme_SearchBarAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a 
...
Border_ClipWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 130
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMe
...
LightTheme_CheckBox_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.LightTheme_CheckBox_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 55
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
LightTheme_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.LightTheme_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 31
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Border_ClipWithStrokeColorBlue
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeColorBlue() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 71
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
Border_ClipWithRotationAndScale
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithRotationAndScale() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 1086
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflectio
...
Image_ClipWithComplexPolyBezierAndRotation
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithComplexPolyBezierAndRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 1052
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syste
...
VisualTransform_AnchorXWithAnchorY
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_AnchorXWithAnchorY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_AnchorXWithAnchorY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See te
...
Button_ClipWithScale
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithScale() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 892
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMet
...
Button_ClipWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 264
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMe
...
VisualTransform_RotationY
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_RotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_RotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or d
...
ContentView_ClipWithRoundRectangleGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.ContentView_ClipWithRoundRectangleGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 565
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System
...
DarkTheme_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 40
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

(+69 more — see TRX in artifact)

WebView — 10 failed tests
WebViewBackgroundColorShouldBeApplied
System.InvalidOperationException : 
Snapshot different than baseline: WebViewBackgroundColorShouldBeApplied.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: WebViewBackgroundColorShouldBeApplied.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.

...
CookiesCorrectlyLoadWithMultipleWebViews
The app was expected to be running still, investigate as possible crash
TearDown : The app was expected to be running still, investigate as possible crash
at UITest.Appium.NUnit.UITestBase.UITestBaseTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 159
   at UITest.Appium.NUnit.UITestBase.TestTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 45

--TearDown
   at UITest.Appium.NUnit.UITestBase.UITestBaseTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 159
   at UITest.Appium.NUnit.UITestBase.TestTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 45

1)    at UITest.Appium.NUnit.UITestBase.UITestBaseTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 159
   at UITest.Appium.NUnit.UITestBase.TestTearDown() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 45
VerifyWebViewBackgroundColor
System.InvalidOperationException : 
Snapshot different than baseline: VerifyWebViewBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyWebViewBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachmen
...
VerifyWebViewWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.WebViewFeatureTests.VerifyWebViewWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/WebViewFeatureTests.cs:line 310
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
WebViewEvaluateJavaScriptReturnsCorrectResults
String evaluation should return the correct string value
Assert.That(stringResult, Does.Contain("Hello World"))
  Expected: String containing "Hello World"
  But was:  "String result will appear here"
at Microsoft.Maui.TestCases.Tests.Issues.Issue20288.WebViewEvaluateJavaScriptReturnsCorrectResults() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20288.cs:line 25

1)    at Microsoft.Maui.TestCases.Tests.Issues.Issue20288.WebViewEvaluateJavaScriptReturnsCorrectResults() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20288.cs:line 25
VerifyWebViewDynamicBackgroundColor
System.InvalidOperationException : 
Snapshot different than baseline: VerifyWebViewDynamicBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyWebViewDynamicBackgroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See 
...
ValidateWebViewScreenshot
System.InvalidOperationException : 
Snapshot different than baseline: ValidateWebViewScreenshot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: ValidateWebViewScreenshot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or d
...
WebViewShouldNotMirrored
System.InvalidOperationException : 
Snapshot different than baseline: WebViewShouldNotMirrored.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
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


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: WebViewShouldNotMirrored.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
VerifyWebViewHTMLSourceReloadStatus
Assert.That(App.FindElement("NavigationStatusLabel").GetText(), Is.EqualTo("Success"))
  Expected string length 7 but was 12. Strings differ at index 0.
  Expected: "Success"
  But was:  "Reloading..."
  -----------^
at Microsoft.Maui.TestCases.Tests.Issues.Issue30515.VerifyWebViewHTMLSourceReloadStatus() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:line 21

1)    at Microsoft.Maui.TestCases.Tests.Issues.Issue30515.VerifyWebViewHTMLSourceReloadStatus() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:line 21
VerifyHybridWebViewWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.HybridWebViewFeatureTests.VerifyHybridWebViewWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/HybridWebViewFeatureTests.cs:line 126
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

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


📋 Pre-Flight — Context & Validation

Issue: #30515 - [iOS] WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event
PR: #30625 - [iOS] Fix WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event
Platforms Affected: iOS (file also compiles for MacCatalyst)
Files Changed: 1 implementation, 2 test

Key Findings

  • The issue repro calls WebView.Reload() on an HtmlWebViewSource; iOS reports WebNavigationResult.Failure from Navigated instead of Success.
  • The PR changes src/Core/src/Platform/iOS/WebViewExtensions.cs so UpdateReload detects HtmlWebViewSource by type name and calls webView.Source.Load(webViewDelegate) instead of native WKWebView.Reload().
  • Regression coverage added a WebView UI test under Issue30515 with category WebView.
  • Gate result supplied by caller: ✅ PASSED — tests fail without fix and pass with the PR fix. Gate was not re-run.
  • Independent code review found unresolved correctness concerns around navigation event semantics, stale webView.Source after in-WebView navigation, and fragile type-name detection.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: medium
Errors: 3 | Warnings: 1 | Suggestions: 1

Key code review findings:

  • src/Core/src/Platform/iOS/WebViewExtensions.cs:73 — reloading HTML through Source.Load() can report WebNavigationEvent.NewPage rather than Refresh because LoadHtmlString reaches the delegate as WKNavigationType.Other.
  • src/Core/src/Platform/iOS/WebViewExtensions.cs:65-81webView.Source remains the original configured source after the user navigates via a link, so Reload() can discard the current URL page and re-render the original HTML.
  • src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:21 — the test reads the status immediately after tapping reload; the supplied gate result says gate passed, but the review still recommends waiting for the navigated status deterministically.
  • src/Core/src/Platform/iOS/WebViewExtensions.cs:69GetType().Name == "HtmlWebViewSource" misses subclasses and is brittle/trimming-unfriendly.
  • ℹ A delegate-polymorphic or platform-view state approach can remove the type-name check, but each has tradeoffs documented in try-fix attempts.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #30625 Detect HtmlWebViewSource by source type name in iOS UpdateReload and call Source.Load() for HTML; native Reload() otherwise. ✅ PASSED (Gate) src/Core/src/Platform/iOS/WebViewExtensions.cs, 2 UI test files Original PR; gate supplied by caller.

🔬 Code Review — Deep Analysis

Code Review — PR #30625

Independent Assessment

What this changes: iOS UpdateReload() no longer blindly calls WKWebView.Reload(). It checks whether the virtual WebView has a source and whether the platform view implements IWebViewDelegate; if the source type name equals HtmlWebViewSource, it reloads by calling webView.Source.Load(webViewDelegate), otherwise it uses native reload.

Inferred motivation: WKWebView.Reload() does not reliably reload content originally loaded with LoadHtmlString, so the PR tries to re-render the configured HTML source and make Navigated report success.

Reconciliation with PR Narrative

Author claims: The PR fixes WebView.Reload() for HtmlWebViewSource on iOS so the Navigated event reports success.
Agreement/disagreement: The supplied gate result indicates the PR fix passes the regression gate. Code review still found correctness concerns with event classification, stale source behavior after link navigation, and brittle source detection.

Prior Review Reconciliation

Prior ❌ Error Finding Source Status Evidence
HTML source reload can discard the current page after user navigates away via an in-WebView link. Independent code review / expert review ❌ Unresolved Current PR still branches from webView.Source, which remains the original configured source.
HTML reload through LoadHtmlString can report NewPage instead of Refresh. Independent code review / expert review ❌ Unresolved MauiWebViewNavigationDelegate.DecidePolicy maps WKNavigationType.Other to NewPage.
Type-name check is fragile for subclasses. Independent code review / expert review ❌ Unresolved Current PR uses webView.Source.GetType().Name == "HtmlWebViewSource".

Blast Radius Assessment

  • Runs for all instances: No — only explicit WebView.Reload() calls on iOS/MacCatalyst.
  • Startup impact: No.
  • Static/shared state: No new static state in the PR fix.

CI Status

  • Required-check result: undetermined locally; gh is unauthenticated in this environment.
  • Classification: Gate result was supplied by caller as ✅ PASSED; CI status was not re-queried.
  • Action taken: Did not rerun gate per instructions; confidence capped by platform-specific code and local CI/tooling limitations.

Findings

❌ Error — HTML reload can report NewPage instead of Refresh

src/Core/src/Platform/iOS/WebViewExtensions.cs:73 calls webView.Source.Load(webViewDelegate). For HtmlWebViewSource, this reaches MauiWKWebView.LoadHtml() and LoadHtmlString(). The iOS navigation delegate maps WKNavigationType.Other to WebNavigationEvent.NewPage, so consumers expecting Refresh on reload can observe the wrong navigation event.

❌ Error — Reload after in-WebView link navigation can discard the current page

src/Core/src/Platform/iOS/WebViewExtensions.cs:65-81 decides from webView.Source, but webView.Source is the configured source and is not updated when a user clicks a link inside the WebView. If the user navigates from the original HTML to https://... and then calls Reload(), the PR can re-render the original HTML instead of refreshing the current URL.

❌ Error — Test should wait for the async navigation result

src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs:21 taps and immediately reads the label. Even though the supplied gate result says this test gated the PR successfully, the test should wait until the label reaches the expected navigated result to avoid timing-dependent outcomes.

⚠️ Warning — Type-name string comparison misses subclasses

src/Core/src/Platform/iOS/WebViewExtensions.cs:69 uses GetType().Name. A subclass of HtmlWebViewSource would fall through to native reload and reproduce the original failure.

💡 Suggestion — Prefer dispatch/state over source-name inspection

The alternative attempts explored delegate-polymorphic dispatch, platform-view HTML state, and custom URL scheme loading to remove the string type check.

Failure-Mode Probing

  • User navigates from HTML to a URL and calls reload: PR fix can reload original HTML because it uses stale webView.Source.
  • webView.Source is null: PR falls back to native reload.
  • Custom source/subclass that calls LoadHtml: PR falls back to native reload because the type name is not exactly HtmlWebViewSource.
  • Repeated reload taps: PR re-enters LoadHtmlString; no static state accumulation, but event classification remains questionable.

Verdict: NEEDS_CHANGES

Confidence: medium
Summary: The PR fix is targeted and gate-passed per supplied result, but the current implementation still has correctness risks. The best alternative direction is the platform-view state approach, but local executable validation was blocked, so no replacement fix was selected.


🛠️ Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix Delegate recovery after native reload failure: keep native Reload() and recover HTML reload failures in MauiWebViewNavigationDelegate. ⚠️ Blocked 1 file Still has stale-source and type-name findings.
2 try-fix Track loaded HTML in MauiWKWebView, reload from platform-view state, clear state on URL navigation, and map HTML reload to Refresh. ⚠️ Blocked 3 files Most promising alternative, but needs full navigation-path audit and memory consideration.
3 try-fix Use a reload-specific IWebViewDelegate so IWebViewSource.Load() dispatches HTML vs URL reload without type-name checks. ⚠️ Blocked 3 files Cleaner dispatch, but still uses stale virtual Source.
4 try-fix Load HTML via a custom maui-html:// WKURLSchemeHandler so native Reload() has a real URL. ⚠️ Blocked 1 file Architectural option, but currently loses BaseUrl semantics and needs binding/API validation.
PR PR #30625 Detect HtmlWebViewSource by type name in UpdateReload and call Source.Load(); native reload otherwise. ✅ PASSED (Gate) 1 implementation + 2 test files Original PR; gate supplied by caller.

Cross-Pollination

Model Round New Ideas? Details
maui-expert-reviewer 1 Yes Proposed delegate recovery, platform-view state tracking, and custom URL scheme strategies.
maui-expert-reviewer 2 No NO NEW IDEAS after reviewing attempts 1-4.

Attempt Details

try-fix-1 — Delegate recovery after native reload failure

  • Result: ⚠️ Blocked by environment; initial iOS test command failed because MAUI build tasks were not built.
  • Learning: Recovery-after-failure preserves native URL reload until WKWebView proves native reload cannot work, but this implementation still uses stale webView.Source and a fragile type-name check.

try-fix-2 — Platform-view HTML reload state

  • Result: ⚠️ Blocked by environment.
  • Learning: This is the strongest candidate conceptually because it removes source type-name inspection and can avoid stale virtual source decisions if all URL navigation paths clear the HTML state. It requires a careful audit of link, form, target-frame, file, and programmatic URL loads.

try-fix-3 — Reload-specific IWebViewDelegate

  • Result: ⚠️ Blocked by environment.
  • Learning: Existing source polymorphism can distinguish HTML and URL sources without reflection or string checks, but this still asks the configured virtual source what to reload, so it does not solve reload-after-link navigation.

try-fix-4 — Custom reloadable HTML URL scheme

  • Result: ⚠️ Blocked by environment.
  • Learning: Making HTML content addressable could let native reload work naturally and preserve Refresh, but the naive implementation regresses BaseUrl/relative resource behavior and needs binding/API validation.

Environment blocker: The first test reached .github/scripts/BuildAndRunHostApp.ps1 -Platform ios -TestFilter "VerifyWebViewHTMLSourceReloadStatus", but HostApp build failed because required MAUI build tasks were not built. The one allowed setup attempt (dotnet build Microsoft.Maui.BuildTasks.slnf --no-restore) failed on macOS due missing net472 reference assemblies and missing restored assets. Subsequent test runs were skipped as the same environment blocker.

Exhausted: Yes
Selected Fix: PR's fix for now — it is the only fix with a supplied passing gate result. Candidate #2 is the best alternative direction, but none of the alternatives could be executable-validated here or shown demonstrably better than the PR fix.


📝 Recommended PR Title & Description

Assessment: ✏️ Recommend updating — the current title and description are broadly accurate, but the title does not follow the component-focused formula and the description omits the concrete code path, test coverage, and important WebKit/HtmlWebViewSource terminology.

Recommended title

[iOS] WebView: Reload HtmlWebViewSource content without WKWebView.Reload()

Recommended description

### Issue Details

Reloading an `HtmlWebViewSource` on iOS causes the `Navigated` event to return `WebNavigationResult.Failure` because `WKWebView.Reload()` does not support reloading content originally loaded from an HTML string.

### Description of Change

Updated the iOS WebView reload path so `WebView.Reload()` detects `HtmlWebViewSource` content and reloads the HTML manually through the existing `IWebViewDelegate` source-loading path instead of calling native `WKWebView.Reload()`.

URL-based WebView sources continue to use the standard native reload path.

### Test Coverage

Added issue regression coverage for #30515:

- `src/Controls/tests/TestCases.HostApp/Issues/Issue30515.cs`
- `src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs`

The test verifies that tapping Reload for a WebView backed by `HtmlWebViewSource` reports `Success` through the navigation status UI.

### Issues Fixed

Fixes #30515

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac

| Before  | After  |
|---------|--------|
| **iOS**<br> <video src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d" width="300" height="600"> | **iOS**<br> <video src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707" width="300" height="600"> |

🏁 Report — Final Recommendation

Comparative Fix Report — PR #30625

Candidate ranking

Rank Candidate Regression status Review status Assessment
1 pr ✅ Passed supplied gate ❌ 3 major expert findings Best available validated candidate. It fixes the reported repro according to the gate, but should still be improved before merge.
2 pr-plus-reviewer ⚠️ Not run per instruction ⚠️ Addresses expert findings conceptually, introduces state-audit risk Stronger design than raw PR, but not executable-validated and effectively extends the blocked try-fix-2 direction.
3 try-fix-2 ⚠️ Blocked by environment ⚠️ 2 moderate findings Best alternative direction: platform-view HTML reload state avoids type-name checks and stale virtual-source decisions if state invalidation is complete.
4 try-fix-3 ⚠️ Blocked by environment ❌ 1 major, 1 moderate finding Cleaner polymorphic dispatch than the PR, but still reloads from stale virtual Source after in-WebView navigation.
5 try-fix-1 ⚠️ Blocked by environment ❌ 1 major, 1 moderate finding Recovery-after-native-failure preserves native reload until failure, but still uses stale source logic and brittle type-name detection.
6 try-fix-4 ⚠️ Blocked by environment ❌ 1 major, 1 moderate finding Architecturally interesting but currently regresses BaseUrl/relative-resource semantics and needs binding/API verification.

Candidate details

pr

The PR changes iOS UpdateReload() to detect the concrete HtmlWebViewSource runtime type name and call webView.Source.Load(webViewDelegate) instead of native WKWebView.Reload(). The supplied gate shows the issue test fails without the fix and passes with the fix on iOS.

The expert review still found major correctness gaps: the concrete type-name check misses derived HTML sources, reloading the configured source can reset the WebView back to its original HTML after link navigation, and the UI test does not wait deterministically for reload completion.

pr-plus-reviewer

This sandbox candidate applies expert-review feedback by moving the reload decision toward platform-view state/polymorphic loading, mapping HTML reloads to Refresh, and making the UI test wait for initial and post-reload navigation states. It is more complete than the raw PR on paper, but it was not validated because the instruction explicitly said not to re-run gate verification and the existing try-fix environment had already blocked iOS candidate validation.

Because this candidate adds stateful WebKit behavior, it needs a full navigation-path audit before it can outrank the validated PR: link activation, form submission/resubmission, target-frame manual loads, file loads, programmatic URL loads, back/forward navigation, and failure paths must all clear or preserve HTML reload state correctly.

try-fix-1

This candidate keeps native reload first and recovers in MauiWebViewNavigationDelegate after a failed HTML reload. It was blocked by the local build environment and still has stale-source and type-name issues, so it ranks below the passing PR.

try-fix-2

This candidate tracks the last HTML loaded in MauiWKWebView, reloads from platform-view state, clears state on URL/file navigation, and maps HTML reloads to Refresh. It is the strongest alternative conceptually, but validation was blocked and reviewer findings identified duplicated HTML retention and incomplete state-clearing audit risk.

try-fix-3

This candidate uses a reload-specific IWebViewDelegate to let source polymorphism choose HTML-vs-URL reload behavior. It removes the PR's string comparison but still asks the configured virtual source what to reload, so reload after in-WebView navigation can still replace the current page with the original HTML.

try-fix-4

This candidate serves HTML through a custom maui-html:// URL scheme so native WKWebView.Reload() has a reloadable request. It is a possible long-term architecture, but the current diff drops BaseUrl semantics and needs WebKit binding/API validation.

Winner

Winner: pr

The raw PR fix is the only candidate with supplied fail-without/pass-with-fix regression evidence. The expert review means the PR should not be considered code-review-clean yet, but among the available candidates it is the only empirically validated fix; all alternatives and the reviewer-applied sandbox candidate remain blocked or unvalidated.


🧭 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 Jun 25, 2026
@kubaflo

kubaflo commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

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

@kubaflo

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

Tests Failure Analysis

@devanathan-vaithiyanathan — test-failure review results are available based on commit 5040484.
To request a fresh review after new comments, commits, or CI runs, comment /review tests.

Overall Not ready Failures 35 Baseline 0 on base Platform ios

Test Failure Review: Not ready - click to expand

Overall verdict: Not ready

9 failures are deterministically regressed vs the most recent base build (legs green on base, red on this PR), classified as Likely PR-caused; 0 of 35 distinct failures exactly match the base branch by test+platform. The remaining 26 indeterminate failures are primarily WebView/macOS UI test timeouts documented as recurring on base by ci-scan, but attribution cannot be resolved without a confirmed exact-match baseline.

Coverage: 162 checks · 150 passing · 12 failing · 0 pending · 0 inaccessible · 1 unmapped · 13 unexplained build legs · 0 unaccounted failing checks · 1 aborted failing checks · 0 canceled-build checks · 7 device-test unverified · 26 unattributed · 9 regressed-vs-base · 2 demoted by ci-scan. Deterministic ceiling: Not ready — 9 legs regressed vs base (forbids Ready to merge/No failures found); 13 unexplained failed legs; 26 unattributed failures; 1 aborted failing check (macOS UITests Controls Layout, CANCELLED); 7 device-test checks unverified (XHarness exits 0 even when device tests fail); 1 unmapped failing check (Build Analysis).

Failure Verdict On base? Evidence
Bugzilla1023Test Likely PR-caused regressed regressed-vs-base: macOS UITests Controls ListView leg succeeded on base (1479246), now TimeoutException
PickerShouldDismissWhenClickOnOutside Likely PR-caused regressed regressed-vs-base: macOS UITests Controls (Page,Performance,Picker,ProgressBar) leg succeeded on base; VisualTestFailedException
DisplayAlertAsyncShouldNotCrashWhenPageUnloaded Likely PR-caused regressed regressed-vs-base: macOS UITests leg succeeded on base; TimeoutException
PickerDialogDoesNotCrashWhenPagePoppedWhileDialogOpen Likely PR-caused regressed regressed-vs-base: macOS UITests leg succeeded on base; TimeoutException
NavEvents_ShellItemChanged_NavigatingEvent_SourceIsShellItemChanged Likely PR-caused regressed regressed-vs-base: Android CoreCLR Controls (API 30) Navigation leg (check) succeeded on base; TimeoutException (2 occurrences)
NavEvents_ShellItemChanged_NavigatedEvent_CurrentIsPage2PreviousIsMain Likely PR-caused regressed regressed-vs-base: Android CoreCLR Navigation leg succeeded on base; TimeoutException (2 occurrences)
NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged Likely PR-caused regressed regressed-vs-base: Android CoreCLR Navigation leg succeeded on base; assertion Expected: String containing "Source=ShellItemChanged" (2 occurrences)
NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged Likely PR-caused regressed regressed-vs-base: Android CoreCLR Navigation leg succeeded on base; assertion Expected: String containing "Source=ShellItemChanged" (2 occurrences)
Publish the winui_ui_tests_controls test results - build error Likely PR-caused regressed regressed-vs-base: WinUI UITests Controls Shell leg (check) succeeded on base; ##[error]There are one or more test failures detected
MemoryLeakB42329 Needs human investigation regressed regressed-vs-base demoted by ci-scan #35957 (recurring/test, 4/10 base builds, macOS ListView); TimeoutException
Issue1939Test Needs human investigation regressed regressed-vs-base demoted by ci-scan #35957 (recurring/test, 4/10 base builds); TimeoutException
DeviceTestsWindows (Windows) - build error Needs human investigation also-red indeterminate: Windows device test leg also red on base; PowerShell exited with code '1'; leg-level only, not test-level dismissal
CookiesCorrectlyLoadWithMultipleWebViews Needs human investigation no indeterminate: leg absent on base; ci-scan #36117 (recurring/test, 2/10 base builds); TimeoutException (4 occurrences); PR area (WebView)
WebViewDoesntCrashWhenLoadingAHeavyPageAndUsingExecutionModeSeparateProcess Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg, 2/10 base builds); app became unresponsive (2 occurrences); PR area
WebView_SetUrlSource_VerifyNavigatedEvent Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area (navigation events)
WebView_SetHtmlSource_VerifyNavigatingEvent Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR directly changes HtmlWebViewSource navigation behavior
WebView_SetHtmlSource_VerifyNavigatedEvent Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR directly changes HtmlWebViewSource navigation behavior
VerifyWebViewWithShadow Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_SetIsVisibleFalse_VerifyWebViewHidden Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestClearCookies_VerifyCookiesCleared Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestCookieManagement_VerifyAddCookie Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestCookieManagement_VerifyAddCookieAndEvaluateJavaScript Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestCookieManagement_VerifyAddCookieWithUrlSource Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestEvaluateJavaScriptAsync_VerifyJavaScriptExecution Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestEvaluateJavaScriptAsync_VerifyJavaScriptExecutionWithMultiplePages Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException (2 occurrences); PR area
WebView_TestReloadMethod_VerifyReloadFunctionality Needs human investigation no indeterminate: leg absent on base; ci-scan #36037 (recurring/leg); TimeoutException + Cake exit 1 (2 occurrences); PR directly changes WebView.Reload() behavior
WebViewEvaluateJavaScriptReturnsCorrectResults Needs human investigation no indeterminate: leg absent on base; Expected: String containing "Hello World"; PR area (WebView JS execution); no ci-scan hit
to find package 'platform-tools;35.0.2' (unknown) Needs human investigation no indeterminate: leg absent on base; Android avdmanager provision failure (SdkToolFailedExitException); infrastructure/nondeterministic
to find package 'platform-tools;35.0.2' (android) Needs human investigation no indeterminate: leg absent on base; Android SDK provisioning warning; infrastructure
Bugzilla31688Test Needs human investigation no indeterminate: leg absent on base; TimeoutException: PopAsync during ScrollToAsync throws NullReferenceException; fixture setup failure
Issue35472PopAsyncDuringAnimatedScrollToAsync Needs human investigation no indeterminate: leg absent on base; Android setup failure chain (TimeoutException)
CanRemoveIntermediatePagesAndPopToFirstPage Needs human investigation no indeterminate: leg absent on base; Android setup failure chain
Bugzilla31255Test Needs human investigation no indeterminate: leg absent on base; UnknownErrorException: ADB socket hang up; infrastructure
Publish the mac_ui_tests_controls test results - build error Needs human investigation no indeterminate: leg absent on base; unexplained build leg; "test failures detected in result files"; macOS UITests Controls (check)
Publish the android_ui_tests_controls_30 test results - build error Needs human investigation no indeterminate: leg absent on base; unexplained build leg; "test failures detected in result files"; Android UITests Controls (API 30) CollectionView (check)

Recommended action

Investigate the 9 regressed-vs-base failures: the NavEvents_GoToAsyncAbsoluteRoute_* assertion failures ("Expected: String containing Source=ShellItemChanged") in the Android CoreCLR Navigation leg and the WinUI Controls Shell build error are the highest priority — both legs were green on the most recent base build and are now red. The iOS WebView fix only changes src/Core/src/Platform/iOS/WebViewExtensions.cs, but the shared test files (Issue30515.cs) compile for all platforms and may introduce test-order interference or state leakage in multi-platform legs. Additionally, WebView_SetHtmlSource_VerifyNavigatingEvent, WebView_SetHtmlSource_VerifyNavigatedEvent, and WebView_TestReloadMethod_VerifyReloadFunctionality directly exercise the HtmlWebViewSource navigation path this PR modifies; while ci-scan #36037 documents that leg as recurring on base, their direct overlap with the PR's code path warrants manual confirmation before merge.

Evidence details

PR scope: 3 files changed — src/Core/src/Platform/iOS/WebViewExtensions.cs (iOS-only platform code), src/Controls/tests/TestCases.HostApp/Issues/Issue30515.cs, src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30515.cs. The platform code change is iOS-only; the test files are shared across all platforms and compile into every platform's test run.

Builds: PR uitests 1482083 · PR devicetests 1482084 · Base uitests 1479246 (06/24/2026, failed/completed) · Base devicetests 1479247 (06/24/2026, failed/completed).

Regressed-vs-base legs (9): macOS UITests ListView, macOS UITests Controls (Page,Performance,Picker,ProgressBar), Android CoreCLR Controls (API 30) Navigation, WinUI UITests Controls Shell, and macOS UITests Controls WebView (from which the WebView timeout cluster and the WinUI build error are extracted). All succeeded on uitests base build 1479246.

NavEvents assertion failures: NavEvents_GoToAsyncAbsoluteRoute_NavigatingEvent_SourceIsShellItemChanged and NavEvents_GoToAsyncAbsoluteRoute_NavigatedEvent_SourceIsShellItemChanged fail with Expected: String containing "Source=ShellItemChanged" in the Android CoreCLR Controls (API 30) Navigation leg — a different platform and area from the iOS WebView fix, but the leg was definitively green on base and is now red on this PR.

WebView test cluster: 14 WebView UI tests in the macOS iOS Mono Controls (vlatest) WebView leg (check) all time out with System.TimeoutException. The leg was absent on the most recent base build, so no leg-level comparison is available; ci-scan #36037 documents this leg pattern as recurring (2/10 base builds). The WebView_SetHtmlSource_* tests directly exercise the navigation-event code path changed by this PR.

Aborted check: macOS UITests Controls Layout (check) was CANCELLED; MemoryLeakB42329 and Issue1939Test (ci-scan #35957, 4/10 base builds) are extracted from this leg.

Device tests: 7 green device-test checks could not have Failed == 0 positively confirmed (no AzDO token; XHarness exits 0 even on device test failure). The failing devicetests check (1482084) shows a Windows build error (PowerShell exited with code '1'); that leg was also red on the base build.

Unmapped check: Build Analysis has no inspectable AzDO build record; review its details URL separately.

Baseline note: The base uitests build 1479246 was failed/completed but no test failures could be extracted from its logs — the uitests baseline is inconclusive. The base devicetests build 1479247 extracted 3 baseline failures; none of the 35 PR failures matched exactly by test+platform.

Limitations: No AzDO token was available; authenticated test-run APIs were skipped. All build metadata, timelines, and logs were queried from the public AzDO REST API.

@kubaflo kubaflo 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.

This pr probably causes a few tests to fail

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor Author

This pr probably causes a few tests to fail

@kubaflo , I have ensured the failed cases - all tests are passed locally.
The CI failure in CookiesCorrectlyLoadWithMultipleWebViews occurs both with and without this fix. Therefore, it is unrelated to the changes introduced in this PR.

image

@kubaflo
kubaflo changed the base branch from main to inflight/current June 29, 2026 11:52
@kubaflo
kubaflo merged commit 51ab9b2 into dotnet:inflight/current Jun 29, 2026
148 of 168 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR9 milestone Jun 29, 2026
kubaflo pushed a commit that referenced this pull request Jul 3, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
@kubaflo kubaflo mentioned this pull request Jul 6, 2026
kubaflo pushed a commit that referenced this pull request Jul 6, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
kubaflo pushed a commit that referenced this pull request Jul 10, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
kubaflo pushed a commit that referenced this pull request Jul 15, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
kubaflo pushed a commit that referenced this pull request Jul 22, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
kubaflo pushed a commit that referenced this pull request Jul 28, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
kubaflo pushed a commit that referenced this pull request Jul 29, 2026
…onResult.Failure in Navigated event (#30625)

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

<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Issue Details
Reloading HtmlWebViewSource on iOS causes the Navigated event to return
Failure due to WKWebView not supporting .reload() for HTML strings.

### Description of Change

<!-- Enter description of the fix in this section -->
Added a check for HtmlWebViewSource and reloaded the HTML manually to
ensure successful navigation.

### Issues Fixed

<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->

Fixes #30515 

<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->

**Tested the behavior in the following platforms.**
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac





| Before  | After  |
|---------|--------|
| **iOS**<br> <video
src="https://github.com/user-attachments/assets/dd8cf28d-7081-4d29-8058-0d4f97916f1d"
width="300" height="600"> | **iOS**<br> <video
src="https://github.com/user-attachments/assets/7a448500-07f9-48d2-843a-095656d44707"
width="300" height="600"> |
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-controls-webview WebView community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration platform/ios s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) 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.

[iOS] WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event

8 participants