public Boolean TestRunner() { try { driver = new DriverClassLib(Int32.Parse(Utility.getDriverType)); InsDictRec("CurRow_" + fileName, 0); InsDictRec("MaxRow_" + fileName, 0); InsDictRec("ModuleVal_" + fileName, null); InsDictRec("nullElemTS_" + fileName, null); InsDictRec("nullElemFlag_" + fileName, false); InsDictRec("stopRequestFlag" + fileName, false); InsDictRec("object_" + fileName, new Object()); InsDictRecDriver("driver" + fileName, driver); InsDictRec("pauseflag_" + fileName, false); int startingRow = 1; int worksheetRange = GetTestCases(fileName); InsDictRec("MaxRow_" + fileName, worksheetRange); maxRange = (float)worksheetRange; Logger.Info(maxRange); //Backup previous report Report.BackUp(sheetName, fileName); //For showing execution progress in FAST application //Report.WriteRunTimeStepsMax(sheetName, fileName, worksheetRange); //Removed as obsolete #region Execute test cases //Execute each test case foreach (string tc in testCasesList) { List <Boolean> tempResults = new List <Boolean>(); for (int row = startingRow; row < worksheetRange; row++) { #region for loop //Locking mechanism lock (ExcelReaderGlobal.getMonitoringObj["object_" + fileName]) { } InsDictRec("CurRow_" + fileName, row); //Get row data GetRowData(fileName, row); //Check if the step is intended to be skipped if (action.Equals("skip")) { continue; } //Set element to be interacted upon IWebElement elem = driver.LocateByType(locator, locvalue, attribute, attrvalue); #region Stop flag check //Stop test if flag is true if (ExcelReaderGlobal.getRunningFlag["stopRequestFlag"]) { Boolean result = GetTestCaseResult(tempResults); DataFlush(); return(result); } #endregion #region Execute test steps //Execute test case steps if (tc.Equals(testcase)) { Boolean result = RunSteps(elem, row); tempResults.Add(result); //Log test steps if (!result && elem == null && exitIfNull) { //Do the following if elem is null string err = "<br>Unable to locate element for this step [" + locator + "=" + locvalue + "]"; Report.WriteTestStepResult(sheetName, fileName, testModule, tc, stepnumber, stepdescription + err, result); //try //{ // dbConn.testResultsInsert(fileName, testModule, tc, stepnumber, stepdescription + err, result == true ? "Pass" : "Fail"); //} //catch (Exception e) //{ // Console.WriteLine(e.ToString()); //} //nullElemFlag = true; //removed InsDictRec("nullElemFlag_" + fileName, true); InsDictRec("nullElemTS_" + fileName, fileName); //nullElemTS = fileName; // removed as when calling a thread, should not access via static result = GetTestCaseResult(tempResults); testCaseResultsList.Add(result); tcDictionary.Add(tc, result); Report.WriteTestCaseResult(sheetName, fileName, testModule, tc, result); //Report.WriteModuleValue(sheetName, fileName, testModule); InsDictRec("ModuleVal_" + fileName, testModule); try { Report.GenerateReport(sheetName, fileName); } catch (Exception e) { Logger.Error("Unable to generate report!" + e.ToString()); } DataFlush(); driver.Shutdown(); return(result); } else { exitIfNull = true; Report.WriteTestStepResult(sheetName, fileName, testModule, tc, stepnumber, stepdescription, result); //try //{ // dbConn.testResultsInsert(fileName, testModule, tc, stepnumber, stepdescription, result == true ? "Pass" : "Fail"); //} //catch (Exception e) //{ // Console.WriteLine(e.ToString()); //} } //For showing execution progress in FAST application //Report.WriteRunTimeSteps(sheetName, fileName, row); //Obsolete } #endregion #region Move to next TC within the file //Log test case result and move to next test case if (!tc.Equals(testcase) || row.Equals(worksheetRange - 1)) { Boolean result = GetTestCaseResult(tempResults); testCaseResultsList.Add(result); tcDictionary.Add(tc, result); //Log test case result Report.WriteTestCaseResult(sheetName, fileName, testModule, tc, result); //Set starting row for next test case startingRow = row; break; } #endregion #endregion for loop } //Clear data //Report.WriteModuleValue(sheetName, fileName, testModule); InsDictRec("ModuleVal_" + fileName, testModule); DataFlush(); } #endregion //Generate Report try { Report.GenerateReport(sheetName, fileName); } catch (Exception ex) { Logger.Error(String.Format("TestRunner Error {0},{1},{2}", sheetName, fileName, ex.ToString())); } //Return overall test scenario result overallResult = GetTestCaseResult(testCaseResultsList); //Close WebDriver instance driver.Shutdown(); return(overallResult); } catch (Exception e) { driver.Shutdown(); Logger.Error("TestRunner Error: " + e.ToString()); return(false); } }