Skip to content

Commit dadb4fa

Browse files
committed
Test - Add CanEvaluateScriptAsPromiseAsyncReturnObject
Promise return complex object Issue #3251
1 parent fe4c0b6 commit dadb4fa

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,36 @@ public async Task CanEvaluateScriptAsPromiseAsync(string script, bool success, s
228228
}
229229
}
230230

231+
[Theory]
232+
[InlineData("return { a: 'CefSharp', b: 42, };", true, "CefSharp", "42")]
233+
[InlineData("return new Promise(function(resolve, reject) { resolve({ a: 'CefSharp', b: 42, }); });", true, "CefSharp", "42")]
234+
[InlineData("return new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); });", true, "CefSharp", "42")]
235+
public async Task CanEvaluateScriptAsPromiseAsyncReturnObject(string script, bool success, string expectedA, string expectedB)
236+
{
237+
using (var browser = new ChromiumWebBrowser("http://www.google.com"))
238+
{
239+
await browser.LoadPageAsync();
240+
241+
var mainFrame = browser.GetMainFrame();
242+
Assert.True(mainFrame.IsValid);
243+
244+
var javascriptResponse = await browser.EvaluateScriptAsPromiseAsync(script);
245+
246+
Assert.Equal(success, javascriptResponse.Success);
247+
248+
if (success)
249+
{
250+
dynamic result = javascriptResponse.Result;
251+
Assert.Equal(expectedA, result.a.ToString());
252+
Assert.Equal(expectedB, result.b.ToString());
253+
}
254+
else
255+
{
256+
throw new System.Exception("Failed");
257+
}
258+
}
259+
}
260+
231261
[Fact]
232262
public async Task CanMakeFrameUrlRequest()
233263
{

0 commit comments

Comments
 (0)