public TestResults TestPage(Uri pageUri, Page page, bool preTest = true) { TestResults results = new TestResults(); var script = preTest ? GetPreTestScript(_assignment, page, _browser.WindowSize.Width) : GetTestScript(_assignment, page, _browser.WindowSize.Width); if (string.IsNullOrWhiteSpace(script)) { return(results); } script = $@" var callback = arguments[arguments.length - 1]; Auger.Init(function () {{ {script} Auger.RunTestEmbedded(callback); }}); "; _browser.LoadPage(pageUri.ToString()); try { _browser.ExecuteAsyncScript(_augerScriptLoader); var junkResult = _browser.ExecuteAsyncScript(script); // seriously, I really JUST want a string folks var json = JsonConvert.SerializeObject(junkResult); results.AppendResults(JsonConvert.DeserializeObject <TestResults>(json)); } catch (WebDriverTimeoutException ex) { results.Exceptions.Add($"Timeout encounterd while running test script for {pageUri.Segments.LastOrDefault()}"); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } catch (Exception ex) { results.Exceptions.Add($"Unexpected error while running test script for {pageUri.Segments.LastOrDefault()}: {ex.Message}"); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } finally { foreach (var entry in _browser.BrowserLog) { System.Diagnostics.Debug.WriteLine(entry.Message); results.DebugMessages.Add(entry.Message); } } return(results); }