public void TestAll() { if (_browser != null) { // If an assignment has pages defined, assume that we should ONLY test // the pages defined for that assignment. Helps to find missing pages. if (_assignment.Pages.Any()) { foreach (var page in _assignment.Pages) { var pageUri = new Uri(_repo.FileUri, page.PageName); string pageText = null; if (RequestHelper.GetPageText(pageUri, out pageText)) { _validator.ValidatePage(page.PageName, pageText); foreach (var device in _allDevices) { _browser.SetWindowSize(device.ViewportWidth, device.ViewportHeight); _presubmissionResults.AppendResults(TestPage(pageUri, page, true)); _fullResults.AppendResults(TestPage(pageUri, page, false)); } } else { _presubmissionResults.Exceptions.Add($"{page.PageName} not found"); _fullResults.Exceptions.Add($"{page.PageName} not found"); } } } // If an assignment has no pages defined, assume that we should test // ALL pages in the repository. else { var folder = _repo.GetFolder(); _TestFolder(folder); } _presubmissionResults.AppendResults(_validator.Results); _fullResults.AppendResults(_validator.Results); _presubmissionResults.DomTestComplete = true; _fullResults.DomTestComplete = true; } _submission.PreSubmissionResults = _presubmissionResults; _submission.FullResults = _fullResults; }
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); }