Skip to content

Commit a9ac70e

Browse files
committed
Test - Add IntegrationTestFacts.LoadJavaScriptBindingAsyncTaskQunitTestsSuccessfulCompletion
- Runs the AsyncTask binding tests
1 parent 02c3991 commit a9ac70e

File tree

4 files changed

+87
-5
lines changed

4 files changed

+87
-5
lines changed

CefSharp.Example/Properties/Resources.Designer.cs

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CefSharp.Example/Resources/BindingTestsAsyncTask.html

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,5 +209,37 @@
209209
});
210210
</script>
211211

212+
<script type="text/javascript">
213+
QUnit.done(function (details)
214+
{
215+
CefSharp.PostMessage({ "Type": "QUnitExecutionComplete", "Details": details });
216+
});
217+
218+
QUnit.log(function (details)
219+
{
220+
if (details.result)
221+
{
222+
return;
223+
}
224+
225+
let output = `[FAILED] ${details.module} > ${details.name}`;
226+
227+
if (details.message)
228+
{
229+
output += `: ${details.message}`;
230+
}
231+
if (details.actual)
232+
{
233+
output += `\nexpected: ${details.expected}\nactual: ${details.actual}`;
234+
}
235+
if (details.source)
236+
{
237+
output += `\n${details.source}`;
238+
}
239+
240+
CefSharp.PostMessage({ "Type": "QUnitTestFailed", "Output": output });
241+
});
242+
</script>
243+
212244
</body>
213245
</html>

CefSharp.Test/JavascriptBinding/IntegrationTestFacts.cs

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,53 @@ public async Task LoadJavaScriptBindingQunitTestsSuccessfulCompletion()
9999
}
100100
};
101101

102-
browser.CreateBrowser();
103-
var response = await browser.WaitForQUnitTestExeuctionToComplete();
102+
var response = await browser.CreateBrowserAndWaitForQUnitTestExeuctionToComplete();
103+
104+
if (!response.Success)
105+
{
106+
output.WriteLine("QUnit Passed : {0}", response.Passed);
107+
output.WriteLine("QUnit Total : {0}", response.Total);
108+
}
109+
110+
Assert.True(response.Success);
111+
112+
output.WriteLine("QUnit Tests result: {0}", response.Success);
113+
}
114+
}
115+
116+
[Fact]
117+
public async Task LoadJavaScriptBindingAsyncTaskQunitTestsSuccessfulCompletion()
118+
{
119+
CefSharpSettings.ConcurrentTaskExecution = true;
120+
121+
using (var browser = new ChromiumWebBrowser(CefExample.BindingTestsAsyncTaskUrl, automaticallyCreateBrowser: false))
122+
{
123+
CefSharpSettings.ConcurrentTaskExecution = false;
124+
125+
//TODO: Extract this into some sort of helper setup method
126+
var bindingOptions = BindingOptions.DefaultBinder;
127+
var repo = browser.JavascriptObjectRepository;
128+
129+
repo.Register("boundAsync", new AsyncBoundObject(), isAsync: true, options: bindingOptions);
130+
131+
browser.JavascriptMessageReceived += (s, e) =>
132+
{
133+
dynamic msg = e.Message;
134+
var type = (string)msg.Type;
135+
136+
if (type == "QUnitTestFailed")
137+
{
138+
var testOutput = (string)msg.Output;
139+
output.WriteLine(testOutput);
140+
}
141+
};
142+
143+
browser.LoadError += (s, e) =>
144+
{
145+
var err = e.ErrorCode;
146+
};
147+
148+
var response = await browser.CreateBrowserAndWaitForQUnitTestExeuctionToComplete();
104149

105150
if (!response.Success)
106151
{
@@ -140,8 +185,7 @@ public async Task LoadLegacyJavaScriptBindingQunitTestsSuccessfulCompletion()
140185
}
141186
};
142187

143-
browser.CreateBrowser();
144-
var response = await browser.WaitForQUnitTestExeuctionToComplete();
188+
var response = await browser.CreateBrowserAndWaitForQUnitTestExeuctionToComplete();
145189

146190
if(!response.Success)
147191
{

CefSharp.Test/WebBrowserTestExtensions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System;
66
using System.Threading.Tasks;
7+
using CefSharp.OffScreen;
78

89
namespace CefSharp.Test
910
{
@@ -76,7 +77,7 @@ public static Task<LoadUrlAsyncResponse> LoadRequestAsync(this IWebBrowser brows
7677
return tcs.Task;
7778
}
7879

79-
public static Task<QUnitTestResult> WaitForQUnitTestExeuctionToComplete(this IWebBrowser browser)
80+
public static Task<QUnitTestResult> CreateBrowserAndWaitForQUnitTestExeuctionToComplete(this ChromiumWebBrowser browser)
8081
{
8182
//If using .Net 4.6 then use TaskCreationOptions.RunContinuationsAsynchronously
8283
//and switch to tcs.TrySetResult below - no need for the custom extension method
@@ -101,6 +102,8 @@ public static Task<QUnitTestResult> WaitForQUnitTestExeuctionToComplete(this IWe
101102

102103
browser.JavascriptMessageReceived += handler;
103104

105+
browser.CreateBrowser();
106+
104107
return tcs.Task;
105108
}
106109
}

0 commit comments

Comments
 (0)