public void Run(WebBrowser webBrowser, string rootUrl, string pageTypes, string languageBranch, string testIDs, int maxPages = -1) { IEnumerable<string> pageUrls = GetDescendantPages( webBrowser, rootUrl, pageTypes, string.IsNullOrWhiteSpace(languageBranch) ? null : languageBranch); IEnumerable<ITest> tests = GetTestCases(testIDs); SetupErrorPages(webBrowser, rootUrl, languageBranch); var typeDictionary = new PageTypeDictionary(webBrowser.BaseUrl, maxPages); foreach (var pageUrl in pageUrls) { if (typeDictionary.ShouldProcess(pageUrl)) { webBrowser.NavigateToPage(pageUrl); foreach (var test in tests) { try { test.Initialize(this, webBrowser); test.Execute(webBrowser); _results.Add(new TestResult() {Passed = true, TestID = test.ID, PageUrl = pageUrl}); } catch (Exception ex) { _results.Add(new TestResult() { Passed = false, TestID = test.ID, PageUrl = pageUrl, Message = ex.Message, InnerException = ex.InnerException }); } } } } foreach (var test in tests) { try { test.FinalExecute(webBrowser); } catch (Exception ex) { _results.Add(new TestResult() { Passed = false, TestID = test.ID, PageUrl = string.Empty, Message = ex.Message, InnerException = ex.InnerException }); } } }