Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }