[iOS] Fix WebView.Reload() with HtmlWebViewSource returns WebNavigationResult.Failure in Navigated event - #30625
Conversation
|
/azp run MAUI-UITests-public |
|
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)) |
There was a problem hiding this comment.
Could you eliminate string allocation and comparison by using direct type checking?
if (webView.Source is HtmlWebViewSource)
There was a problem hiding this comment.
@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.
There was a problem hiding this comment.
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
HtmlWebViewSourceand 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 |
| var sourceType = webView.Source.GetType().Name; | ||
| if (string.Equals(sourceType, "HtmlWebViewSource", StringComparison.Ordinal)) |
There was a problem hiding this comment.
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.
| var sourceType = webView.Source.GetType().Name; | |
| if (string.Equals(sourceType, "HtmlWebViewSource", StringComparison.Ordinal)) | |
| if (webView.Source is HtmlWebViewSource) |
| 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) |
There was a problem hiding this comment.
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.
|
/rebase |
ceb288a to
5257c12
Compare
|
/rebase |
5257c12 to
bea3195
Compare
|
/azp run MAUI-UITests-public |
|
Azure Pipelines successfully started running 1 pipeline(s). |
This comment has been minimized.
This comment has been minimized.
kubaflo
left a comment
There was a problem hiding this comment.
Could you please review the AI's summary?
This reverts commit 138797f.
bea3195 to
5040484
Compare
MauiBot
left a comment
There was a problem hiding this comment.
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.
🗂️ 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 anHtmlWebViewSource; iOS reportsWebNavigationResult.FailurefromNavigatedinstead ofSuccess. - The PR changes
src/Core/src/Platform/iOS/WebViewExtensions.cssoUpdateReloaddetectsHtmlWebViewSourceby type name and callswebView.Source.Load(webViewDelegate)instead of nativeWKWebView.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.Sourceafter 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 throughSource.Load()can reportWebNavigationEvent.NewPagerather thanRefreshbecauseLoadHtmlStringreaches the delegate asWKNavigationType.Other. - ✗
src/Core/src/Platform/iOS/WebViewExtensions.cs:65-81—webView.Sourceremains the original configured source after the user navigates via a link, soReload()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:69—GetType().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;
ghis 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.Sourceis 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 exactlyHtmlWebViewSource. - 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. |
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. |
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. |
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. |
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.Sourceand 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 regressesBaseUrl/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 |
Stronger design than raw PR, but not executable-validated and effectively extends the blocked try-fix-2 direction. |
||
| 3 | try-fix-2 |
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 |
❌ 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 |
❌ 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 |
❌ 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.
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
This comment has been minimized.
This comment has been minimized.
Tests Failure Analysis
Test Failure Review: Not ready - click to expandOverall 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).
Recommended actionInvestigate the 9 regressed-vs-base failures: the Evidence detailsPR scope: 3 files changed — 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: WebView test cluster: 14 WebView UI tests in the macOS iOS Mono Controls (vlatest) WebView leg (check) all time out with Aborted check: macOS UITests Controls Layout (check) was CANCELLED; Device tests: 7 green device-test checks could not have Unmapped check: Build Analysis has no inspectable AzDO build record; review its details URL separately. Baseline note: The base uitests build 1479246 was 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
left a comment
There was a problem hiding this comment.
This pr probably causes a few tests to fail
@kubaflo , I have ensured the failed cases - all tests are passed locally.
|
…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"> |
…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"> |
…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"> |
…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"> |
…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"> |
…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"> |
…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"> |
…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"> |
…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"> |

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.
Before.mov
After.mov