public async Task PerformXmlHttpRequestAsynchronousToDelayedResponseShouldWork() { var message = "Hi!"; var req = new DelayedRequester(10, message); var cfg = Configuration.Default.WithJs().With(req).WithDefaultLoader(); var script = @" var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://example.com/'); xhr.addEventListener('load', function (ev) { var res = document.querySelector('#result'); res.textContent = xhr.responseText; res.dispatchEvent(new CustomEvent('xhrdone')); }, false); xhr.send();"; var html = "<!doctype html><div id=result></div><script>" + script + "</script>"; var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); var result = document.QuerySelector("#result"); Assert.AreEqual("", result.TextContent); Assert.IsTrue(req.IsStarted); await result.AwaitEventAsync("xhrdone").ConfigureAwait(false); Assert.AreEqual(message, result.TextContent); }
public async Task JqueryWithAjaxToDelayedResponse() { var message = "Hi!"; var req = new DelayedRequester(10, message); var cfg = Configuration.Default.WithJs().With(req).WithDefaultLoader(); var sources = new [] { Constants.Jquery2_1_4, @" $.ajax('http://example.com/', { success: function (data, status, xhr) { var res = document.querySelector('#result'); res.textContent = xhr.responseText; res.dispatchEvent(new CustomEvent('xhrdone')); } });" }; var scripts = String.Join("</script><script>", sources); var html = "<!doctype html><div id=result></div><script>" + scripts + "</script>"; var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); var result = document.QuerySelector("#result"); Assert.AreEqual("", result.TextContent); Assert.IsTrue(req.IsStarted); await result.AwaitEventAsync("xhrdone").ConfigureAwait(false); Assert.AreEqual(message, result.TextContent); }
public async Task PerformXmlHttpRequestSynchronousToDelayedResponseShouldWork() { var message = "Hi!"; var req = new DelayedRequester(10, message); var cfg = Configuration.Default.WithJs().With(req).WithDefaultLoader(); var script = @" var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://example.com/', false); xhr.send(); document.querySelector('#result').textContent = xhr.responseText;"; var html = "<!doctype html><div id=result></div><script>" + script + "</script>"; var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); var result = document.QuerySelector("#result"); Assert.AreEqual(message, result.TextContent); }