Skip to content
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 @@ -40,6 +40,7 @@ protected async Task RunTest(string? defaultFile, Func<HybridWebView, Task> test
HybridRoot = "HybridTestRoot",
DefaultFile = defaultFile ?? "index.html",
};

await RunTest(hybridWebView, (handler, view) => test(view));
}

Expand All @@ -58,7 +59,12 @@ await AttachAndRun(hybridWebView, async handler =>
{
await WebViewHelpers.WaitForHybridWebViewLoaded(hybridWebView);

await test((HybridWebViewHandler)handler, hybridWebView);
// Use a cancellation token with a timeout
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(15));

var testWrapper = test((HybridWebViewHandler)handler, hybridWebView);

await testWrapper.WaitAsync(cts.Token);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,56 @@ namespace Microsoft.Maui.DeviceTests;
public partial class HybridWebViewTests_EvaluateJavaScriptAsync : HybridWebViewTestsBase
{
[Fact]
public Task EvaluateJavaScriptAndGetResult() =>
public Task EvaluateJavaScriptAsync_WithStringParameters() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to call a method and get result
var result1 = await hybridWebView.EvaluateJavaScriptAsync("EvaluateMeWithParamsAndReturn('abc', 'def')");
Assert.Equal("abcdef", result1);
});

[Fact]
public Task EvaluateJavaScriptAsync_WithNumberParameters() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to call a method and get result
var result1 = await hybridWebView.EvaluateJavaScriptAsync("EvaluateMeWithParamsAndReturn(1, 2)");
Assert.Equal("3", result1);
});

[Fact]
public Task EvaluateJavaScriptAsync_GetsProperty() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to get an arbitrary result by running JavaScript
var result2 = await hybridWebView.EvaluateJavaScriptAsync("window.TestKey");
Assert.Equal("test_value", result2);
});

[Fact]
public Task EvaluateJavaScriptAsync_HandlesDoubleQuotes() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to call a method and get result
var result1 = await hybridWebView.EvaluateJavaScriptAsync("EvaluateMeWithParamsAndReturn('\"Hel', 'lo!\"')");
Assert.Equal("\"Hello!\"", result1);
});

[Fact]
public Task EvaluateJavaScriptAsync_HandlesSingleQuotes() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to call a method and get result
var result1 = await hybridWebView.EvaluateJavaScriptAsync("EvaluateMeWithParamsAndReturn('\\'Hel', 'lo!\\'')");
Assert.Equal("'Hello!'", result1);
});

[Fact]
public Task EvaluateJavaScriptAsync_HandlesDoubleAndSingleQuotes() =>
RunTest(async (hybridWebView) =>
{
// Run some JavaScript to call a method and get result
var result1 = await hybridWebView.EvaluateJavaScriptAsync("EvaluateMeWithParamsAndReturn('\"Hel', 'lo!\\'')");
Assert.Equal("\"Hello!'", result1);
});
}
Loading
Loading