Skip to content

chore: Disable When_ListViewNestedAndSwipeUpThenFlickDown_Then_ScrollThenShowIndicatorButDoNotRequest for iOS #20610

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ public async Task When_ListViewNestedAndFlickDown_Then_RefreshRequested()
Assert.AreEqual(1, requested);
}

[ConditionalTest(IgnoredPlatforms = RuntimeTestPlatforms.SkiaAndroid)] // Very flaky on Skia Android #9080
[ConditionalTest(IgnoredPlatforms = RuntimeTestPlatforms.SkiaAndroid | RuntimeTestPlatforms.SkiaIOS)] // Very flaky on Skia Android/iOS #9080
#if __WASM__
[Ignore("Scrolling is handled by native code and InputInjector is not yet able to inject native pointers.")]
#elif !HAS_INPUT_INJECTOR
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,99 +38,114 @@ public class Given_WebView2
#endif
public async Task When_Navigate()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
await webView.EnsureCoreWebView2Async();
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.CoreWebView2.Navigate(uri.ToString());
Assert.IsNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 1000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 30000);
Assert.IsNotNull(webView.Source);
Assert.IsTrue(webView.Source.OriginalString.StartsWith("https://platform.uno/", StringComparison.OrdinalIgnoreCase));
async Task Do()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
await webView.EnsureCoreWebView2Async();
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.CoreWebView2.Navigate(uri.ToString());
Assert.IsNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 1000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 30000);
Assert.IsNotNull(webView.Source);
Assert.IsTrue(webView.Source.OriginalString.StartsWith("https://platform.uno/", StringComparison.OrdinalIgnoreCase));
}

await TestHelper.RetryAssert(Do, 3);
}

[TestMethod]
public async Task When_NavigateToString()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
await webView.EnsureCoreWebView2Async();
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.Source = uri;
Assert.IsNotNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.IsNotNull(webView.Source);
navigationStarting = false;
navigationDone = false;
webView.NavigateToString("<html></html>");
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.AreEqual(new Uri("about:blank"), webView.Source);
async Task Do()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
await webView.EnsureCoreWebView2Async();
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.Source = uri;
Assert.IsNotNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.IsNotNull(webView.Source);
navigationStarting = false;
navigationDone = false;
webView.NavigateToString("<html></html>");
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.AreEqual(new Uri("about:blank"), webView.Source);
}

await TestHelper.RetryAssert(Do, 3);
}


[TestMethod]
public async Task When_GoBack()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
bool navigated = false;
await TestServices.WindowHelper.WaitForLoaded(border);
await webView.EnsureCoreWebView2Async();
async Task Do()
{
var border = new Border();
var webView = new WebView2();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
bool navigated = false;
await TestServices.WindowHelper.WaitForLoaded(border);
await webView.EnsureCoreWebView2Async();

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CoreWebView2.CanGoForward);
Assert.IsFalse(webView.CanGoForward);
Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CoreWebView2.CanGoForward);
Assert.IsFalse(webView.CanGoForward);

webView.NavigationCompleted += (sender, e) => navigated = true;
webView.CoreWebView2.Navigate("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);
webView.NavigationCompleted += (sender, e) => navigated = true;
webView.CoreWebView2.Navigate("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CoreWebView2.CanGoForward);
Assert.IsFalse(webView.CanGoForward);

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CoreWebView2.CanGoForward);
Assert.IsFalse(webView.CanGoForward);
navigated = false;
webView.CoreWebView2.Navigate("https://platform.uno");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

navigated = false;
webView.CoreWebView2.Navigate("https://platform.uno");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);
Assert.IsTrue(webView.CoreWebView2.CanGoBack);
Assert.IsTrue(webView.CanGoBack);

Assert.IsTrue(webView.CoreWebView2.CanGoBack);
Assert.IsTrue(webView.CanGoBack);
navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);
Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsTrue(webView.CoreWebView2.CanGoForward);
Assert.IsTrue(webView.CanGoForward);
}

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsTrue(webView.CoreWebView2.CanGoForward);
Assert.IsTrue(webView.CanGoForward);
await TestHelper.RetryAssert(Do, 3);
}

#if __ANDROID__ || __IOS__
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public async Task Setup()
}

#if HAS_UNO
[TestMethod]
[ConditionalTest(IgnoredPlatforms = RuntimeTestPlatforms.Android | RuntimeTestPlatforms.IOS)]
#if __ANDROID__ || __APPLE_UIKIT__
[Ignore("Fails on Android and iOS")]
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
using Microsoft.UI.Xaml.Controls;
using System.Linq;
using Microsoft.Web.WebView2.Core;
using Uno.UI.RuntimeTests.Helpers;




Expand All @@ -30,14 +32,19 @@ public class Given_WebView
#if __IOS__
[Ignore("iOS is disabled https://github.com/unoplatform/uno/issues/9080")]
#endif
public void When_Navigate()
public async Task When_Navigate()
{
var webView = new WebView();
var uri = new Uri("https://bing.com");
webView.Navigate(uri);
Assert.IsNotNull(webView.Source);
Assert.AreEqual("https://bing.com/", webView.Source.OriginalString);
Assert.AreEqual("https://bing.com", uri.OriginalString);
async Task Do()
{
var webView = new WebView();
var uri = new Uri("https://bing.com");
webView.Navigate(uri);
Assert.IsNotNull(webView.Source);
Assert.AreEqual("https://bing.com/", webView.Source.OriginalString);
Assert.AreEqual("https://bing.com", uri.OriginalString);
}

await TestHelper.RetryAssert(Do, 3);
}

#if __ANDROID__ || __IOS__ || __WASM__
Expand All @@ -56,28 +63,33 @@ public void When_NavigateWithHttpRequestMessage()
[TestMethod]
public async Task When_NavigateToString()
{
var border = new Border();
var webView = new WebView();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.Source = uri;
Assert.IsNotNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
Assert.IsNotNull(webView.Source);
navigationStarting = false;
navigationDone = false;
webView.NavigateToString("<html></html>");
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
async Task Do()
{
var border = new Border();
var webView = new WebView();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
await TestServices.WindowHelper.WaitForLoaded(border);
var uri = new Uri("https://platform.uno/");
bool navigationStarting = false;
bool navigationDone = false;
webView.NavigationStarting += (s, e) => navigationStarting = true;
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.Source = uri;
Assert.IsNotNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
Assert.IsNotNull(webView.Source);
navigationStarting = false;
navigationDone = false;
webView.NavigateToString("<html></html>");
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
}

await TestHelper.RetryAssert(Do, 3);
}

#if __ANDROID__ || __IOS__
Expand Down Expand Up @@ -129,37 +141,42 @@ public async Task When_IsScrollable()
[TestMethod]
public async Task When_GoBack()
{
var border = new Border();
var webView = new WebView();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
bool navigated = false;
await TestServices.WindowHelper.WaitForLoaded(border);

Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CanGoForward);

webView.NavigationCompleted += (sender, e) => navigated = true;
webView.Navigate(new Uri("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CanGoForward);

navigated = false;
webView.Navigate(new Uri("https://platform.uno"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsTrue(webView.CanGoBack);

navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsTrue(webView.CanGoForward);
async Task Do()
{
var border = new Border();
var webView = new WebView();
webView.Width = 200;
webView.Height = 200;
border.Child = webView;
TestServices.WindowHelper.WindowContent = border;
bool navigated = false;
await TestServices.WindowHelper.WaitForLoaded(border);

Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CanGoForward);

webView.NavigationCompleted += (sender, e) => navigated = true;
webView.Navigate(new Uri("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CanGoForward);

navigated = false;
webView.Navigate(new Uri("https://platform.uno"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsTrue(webView.CanGoBack);

navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsTrue(webView.CanGoForward);
}

await TestHelper.RetryAssert(Do, 3);
}

#if !HAS_UNO
Expand Down
Loading