private void LoadDataSet() { Cursor.Current = Cursors.WaitCursor; try { communicatorDataSet.EnforceConstraints = false; SymbolTableAdapter symbolAdapter = new SymbolTableAdapter(); symbolAdapter.Fill(communicatorDataSet.Symbol); ScenarioTableAdapter scenarioAdapter = new ScenarioTableAdapter(); scenarioAdapter.Fill(communicatorDataSet.Scenario); TextTableAdapter textAdapter = new TextTableAdapter(); textAdapter.Fill(communicatorDataSet.Text); communicatorDataSet.EnforceConstraints = true; communicatorDataSet.AcceptChanges(); } catch (Exception ex) { ReportError(ex.Message.ToString()); } RefreshScenarioListView(); this.EnableButtons(); Cursor.Current = Cursors.Default; }
private void LoadDataSet() { Cursor.Current = Cursors.WaitCursor; try { adaScenarioDataSet1.EnforceConstraints = false; SymbolTableAdapter symbolAdapter = new SymbolTableAdapter(); symbolAdapter.Fill(adaScenarioDataSet1.Symbol); ScenarioTableAdapter scenarioAdapter = new ScenarioTableAdapter(); scenarioAdapter.Fill(adaScenarioDataSet1.Scenario); TextTableAdapter textAdapter = new TextTableAdapter(); textAdapter.Fill(adaScenarioDataSet1.Text); adaScenarioDataSet1.EnforceConstraints = true; } catch (Exception ex) { ReportError(ex); } RefreshViews(); Cursor.Current = Cursors.Default; }
internal bool ExecuteOneScenario(string scenarioId, IWebDriver driver) { if (scenarioId == string.Empty) { MessageBox.Show("Select Scenario first", "Applenium"); return(false); } _flowId = Convert.ToInt32(scenarioId); var sql = new Sql(); DataTable dtScenario = sql.GetDataTable(Constants.StrScenarioTestsToSelenium, scenarioId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterScenario.GetProjectID(_flowId)); string scenarioname = adapterScenario.GetScenarioName(_flowId); LogResult(_runExecutionId, _batchId, _flowId, 0, 0, scenarioname + " Scenario Started", Constants.Done, "0", _projectId, 0); Singleton myInstance = Singleton.Instance; // Will always be the same instance... bool scenarioresult = true; foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { scenarioresult = false; break; } string testId = row["GuiTestID"].ToString(); bool testresult = ExecuteOneTest(testId, row["InputDataRow"].ToString(), driver); if (testresult == false) { scenarioresult = false; } } if (scenarioresult) { LogResult(_runExecutionId, _batchId, _flowId, 0, 0, scenarioname + " Scenario Passed", Constants.Passed, "0", _projectId, 0); } else { LogResult(_runExecutionId, _batchId, _flowId, 0, 0, scenarioname + " Scenario Failed", Constants.Failed, "0", _projectId, 0); //LogFailiure(_runExecutionID, flowID, scenario_name, 0, null, "Description in the test"); } return(scenarioresult); }
private void SaveDataSet() { Cursor.Current = Cursors.WaitCursor; try { communicatorDataSet.EnforceConstraints = false; ScenarioTableAdapter scenarioAdapter = new ScenarioTableAdapter(); scenarioAdapter.Update(communicatorDataSet); TextTableAdapter textAdapter = new TextTableAdapter(); textAdapter.Update(communicatorDataSet); communicatorDataSet.EnforceConstraints = true; communicatorDataSet.AcceptChanges(); } catch (Exception ex) { ReportError(ex.Message.ToString()); } Cursor.Current = Cursors.Default; }
/// <summary> /// Unitest will cal this one /// </summary> /// <param name="batchId"></param> /// <returns></returns> public bool ExecuteOneBatch(string batchId) { try { var jp = new JsonParser(); //VSH: clean global configuration before ExecuteOneBatch Boolean res = jp.AddConfigToMemory(""); string remote = Constants.MemoryConf["RemoteNode"]; int timeoutAllScenarios = Convert.ToInt32(Constants.MemoryConf["TimeoutAllScenarios"]) * 1000; var sel = new Selenium(); if (batchId == string.Empty) { MessageBox.Show("Select Batch first", "Applenium"); return(false); } var sql = new Sql(); _batchId = Convert.ToInt32(batchId); DataTable dtScenario = sql.GetDataTable(Constants.StrBatchScenariosToSelenium, _batchId.ToString(CultureInfo.InvariantCulture)); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.Pending); var adapterBatches = new BatchesTableAdapter(); var adapterBatchLogic = new BatchLogicTableAdapter(); var adapterBrowser = new BrowsersTableAdapter(); _batchname = adapterBatches.GetBatchName(_batchId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterBatches.GetProjectID(Convert.ToInt32(_batchId))); LogObject logObject = new LogObject(); logObject.ExecutionID = _runExecutionId; logObject.BatchID = _batchId; logObject.Description = Constants.LogBatchStatus + "=" + Constants.PROGRESS_STARTED; logObject.BatchName = _batchname; logObject.BatchProgress = Constants.PROGRESS_STARTED; logObject.StatusTag = Constants.DONE; logObject.ProjectID = _projectId; logger.Print(logObject); Singleton myInstance = Singleton.Instance; myInstance.BatchResult = true; var threadFinishEvents = new List <EventWaitHandle>(); foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { myInstance.BatchResult = false; break; } var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); string BrowserID = row["BrowserID"].ToString(); string batchLogicId = row["BatchLogicID"].ToString(); int executionStatus = Convert.ToInt32(row["ExecutionStatusID"].ToString()); if (executionStatus == 1) //run only selected scenarios { threadFinishEvents.Add(threadFinish); _browserName = adapterBrowser.GetBrowserName(Convert.ToInt32(BrowserID)); ThreadStart ts = delegate { //wait till hub return available browser RemoteWebDriver driver = null; driver = sel.SetWebDriverBrowser(null, BrowserID, false); driver.Manage().Window.Maximize(); string scenarioId = row["ScenarioID"].ToString(); // adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId),Constants.Running, Convert.ToInt32(batchLogicId)); string scenarioname = adapterScenario.GetScenarioName(Convert.ToInt32(scenarioId)); if (guiInstance != null && isBatchRun == true) { guiInstance.UpdateProgressLabel("", "", Constants.UpdateProgress_REGULAR); } LogObject logObject2 = new LogObject(); logObject2.ExecutionID = _runExecutionId; logObject2.BatchID = _batchId; logObject2.ScenarioID = Convert.ToInt32(scenarioId); logObject2.ScnearioName = scenarioname; logObject2.Browser = _browserName; logObject2.ProjectID = _projectId; logObject2.ProjectName = _projectName; logObject2.BatchName = _batchname; logObject2.ProjectPageID = _projectPageId; logObject2.StatusTag = Constants.DONE; logObject2.Browser = _browserName; logger.Print(logObject2); // Do long work here bool scanearioresult = ExecuteOneScenario(scenarioId, driver); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, (EventHandler) delegate { if (scanearioresult == false) { myInstance.BatchResult = false; //adapterBatchLogic.Update(_batchId,Convert.ToInt32(scenarioId),Convert.ToInt32(browserId),Constants.Failed,Convert.ToInt32(batchLogicId)); } driver.Quit(); threadFinish.Set(); }, null, null); }; try { ts.BeginInvoke(delegate(IAsyncResult aysncResult) { ts.EndInvoke(aysncResult); }, null); } catch (Exception exc) { MessageBox.Show("An exception has occoured when trying to execute a scenario - " + exc.TargetSite); } if (remote == "no") { WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); } } } WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); string description; int status; string bStatus = Constants.PROGRESS_FAILED; if (myInstance.BatchResult) { description = string.Format("{0}={1}", Constants.LogBatchName, "Passed"); status = Constants.PASSED; bStatus = Constants.PROGRESS_PASSED; //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Passed",Constants.Passed, "0", _projectId, 0); } else { //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Failed",Constants.Failed, "0", _projectId, 0); description = string.Format("{0}={1}", Constants.LogBatchStatus, "Failed"); status = Constants.FAILED; bStatus = Constants.PROGRESS_FAILED; } LogObject logObject3 = new LogObject(); logObject3.ExecutionID = _runExecutionId; logObject3.BatchID = Convert.ToInt32(_batchId); logObject3.Description = description; logObject3.StatusTag = status; logObject3.BatchStatus = bStatus; logObject3.ProjectID = _projectId; logger.Print(logObject3); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.NotRunnig); return(myInstance.BatchResult); } catch (Exception exception) { LogObject exceptionLog = new LogObject(); exceptionLog.Description = exception.Message; exceptionLog.StatusTag = Constants.ERROR; logger.Print(exceptionLog); return(false); } }
internal bool ExecuteOneScenario(string scenarioId, RemoteWebDriver driver) { //clean global configuration before ExecuteOneScenario var jp = new JsonParser(); Boolean res = jp.AddConfigToMemory(""); //init test status count var testStatus = new Dictionary <string, int>(); if (testStatus.ContainsKey("PassedTests")) { testStatus["PassedTests"] = 0; } else { testStatus.Add("PassedTests", 0); } if (testStatus.ContainsKey("FailedTests")) { testStatus["FailedTests"] = 0; } else { testStatus.Add("FailedTests", 0); } if (testStatus.ContainsKey("TotalTests")) { testStatus["TotalTests"] = 0; } else { testStatus.Add("TotalTests", 0); } try { if (scenarioId == string.Empty) { MessageBox.Show("Select Scenario first", "Applenium"); return(false); } _flowId = Convert.ToInt32(scenarioId); var sql = new Sql(); DataTable dtScenario = sql.GetDataTable(Constants.StrScenarioTestsToSelenium, scenarioId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterScenario.GetProjectID(_flowId)); _scenarioname = adapterScenario.GetScenarioName(_flowId); string scenariodescription = adapterScenario.GetScenarioDescription(_flowId); if (guiInstance != null && isBatchRun == false) { guiInstance.UpdateProgressLabel(_scenarioname, _testname, Constants.UpdateProgress_REGULAR); } LogObject logObject = new LogObject(); logObject.Description = "-------------------------------------------------------------------------------------------------------------\n" + "\t\t\t\t\t\t\t\t\t\t" + _scenarioname + " Scenario Started\n-------------------------------------------------------------------------------------------------------------\n"; logObject.StatusTag = Constants.INFO; logger.Print(logObject); // AppleniumLogger.LogResult(string.Empty, //"-------------------------------------------------------------------------------------------------------------\n" + "\t\t\t\t\t\t\t\t\t\t" + scenarioname + " Scenario Started\n-------------------------------------------------------------------------------------------------------------\n", Constants.Info, null); LogObject logObject2 = new LogObject(); logObject2.ExecutionID = _runExecutionId; logObject2.BatchID = _batchId; logObject2.BatchName = _batchname; logObject2.ProjectName = _projectName; logObject2.ScenarioID = _flowId; logObject2.ScenarioStatus = Constants.PROGRESS_STARTED; logObject2.StatusTag = Constants.DONE; logObject2.Description = Constants.LogScenarioStatus + "=" + Constants.PROGRESS_STARTED; logger.Print(logObject2); Singleton myInstance = Singleton.Instance; // Will always be the same instance... bool scenarioresult = true; LogObject result = new LogObject(); foreach (DataRow row in dtScenario.Rows) { // Check if we got a warning message, if we did skip all tests in the scenario if (Applenium._4____Infrustructure.Utilities.skipSCN == true) { break; } if (myInstance.StopExecution) { scenarioresult = false; break; } string testId = row["GuiTestID"].ToString(); bool testresult = ExecuteOneTest(testId, row["InputDataRow"].ToString(), driver, ref testStatus); if (testresult == false) { scenarioresult = false; } } string description; if (scenarioresult == true && Applenium._4____Infrustructure.Utilities.skipSCN == false) { description = String.Format("{0}={1}", Constants.LogScenarioStatus, "Passed"); result.ScenarioStatus = Constants.PROGRESS_PASSED; result.StatusTag = Constants.PASSED; } else if (scenarioresult == false && Applenium._4____Infrustructure.Utilities.skipSCN == false) { result.ScenarioStatus = Constants.PROGRESS_FAILED; result.StatusTag = Constants.FAILED; } else if (scenarioresult == true && Applenium._4____Infrustructure.Utilities.skipSCN == true) { scenarioresult = true; result.StatusTag = Constants.DEBUG; } result.ExecutionID = _runExecutionId; result.BatchID = _batchId; result.BatchName = _batchname; result.ScenarioID = _flowId; result.ScnearioName = _scenarioname; result.ProjectName = _projectName; result.ProjectID = _projectId; result.ProjectPageID = _projectPageId; result.BatchName = _batchname; result.Description = scenariodescription + " | PassedTest=" + testStatus["PassedTests"] + " | FailedTest=" + testStatus["FailedTests"] + " | TotalTest=" + testStatus["TotalTests"]; result.ProjectID = _projectId; result.Browser = _browserName; logger.Print(result); Applenium._4____Infrustructure.Utilities.skipSCN = false; return(scenarioresult); } catch (Exception exception) { LogObject logObject3 = new LogObject(); logObject3.Exception = exception; logObject3.StatusTag = Constants.ERROR; logObject3.Description = exception.Message; logger.Print(logObject3); return(false); } }
internal int LogResult(int runExecutionId, int batchId, int scenarioId, int testId, int stepId, string description, int status, string outOfFlow, int projectId, int projectPageId) { try { int result; string batchName = string.Empty; string scenarioName = string.Empty; string testName = string.Empty; string stepName = string.Empty; string projectName = string.Empty; string projectPageName = string.Empty; DateTime occurred = DateTime.Now.ToUniversalTime(); using (var adapterLogresult = new TestResultsTableAdapter()) { result = adapterLogresult.Insert(runExecutionId, batchId, scenarioId, testId, stepId, description, status, outOfFlow, projectId, projectPageId, occurred); } using (var adapterBatch = new BatchesTableAdapter()) { if (batchId != 0) { batchName = adapterBatch.GetBatchName(batchId); } else { batchName = Constants.LogNothing; } } using (var adapterScenario = new ScenarioTableAdapter()) { if (scenarioId != 0) { scenarioName = adapterScenario.GetScenarioName(scenarioId); } else { scenarioName = Constants.LogNothing; } } using (var adapterTest = new TestTableAdapter()) { if (testId != 0) { testName = adapterTest.GetTestName(testId); } else { testName = Constants.LogNothing; } } using (var adapterGuiMap = new GuiMapTableAdapter()) { if (stepId != 0) { stepName = adapterGuiMap.GetGuiMapName(stepId).Trim(); } else { stepName = Constants.LogNothing; } } using (var adapterProject = new ProjectsTableAdapter()) { if (projectId != 0) { projectName = adapterProject.GetProjectName(projectId); } else { projectName = Constants.LogNothing; } } using (var adapterProjectPage = new GuiProjectPageTableAdapter()) { if (projectPageId != 0) { projectPageName = adapterProjectPage.GetProjectPageName(projectPageId); } else { projectPageName = Constants.LogNothing; } } string logString = String.Format("{0}={1}\t{2}={3}\t{4}={5}\t{6}={7}\t{8}={9}\t{10}=( {11} )\t{12}={13}\t{14}={15}", Constants.LogExecutionId, runExecutionId, Constants.LogBatchName, batchName, Constants.LogScenarioName, scenarioName, Constants.LogTestName, testName, Constants.LogStepName, stepName, Constants.LogDescription, description, Constants.LogProjectName, projectName, Constants.LogProjectPageName, projectPageName); if (status == Constants.Passed) { Logger.Passed(logString); } if (status == Constants.Done) { Logger.Done(logString); } if (status == Constants.Failed) { Logger.Failed(logString); } return(result); } catch (Exception exception) { Logger.Error(exception.Message, exception); return(0); } }
/// <summary> /// Unitest will cal this one /// </summary> /// <param name="batchId"></param> /// <returns></returns> public bool ExecuteOneBatch(string batchId) { try { var jp = new JsonParser(); string remote = jp.ReadJson("RemoteNode"); int timeoutAllScenarios = Convert.ToInt32(jp.ReadJson("TimeoutAllScenarios")) * 1000; var sel = new Selenium(); if (batchId == string.Empty) { MessageBox.Show("Select Batch first", "Applenium"); return(false); } var sql = new Sql(); _batchId = Convert.ToInt32(batchId); DataTable dtScenario = sql.GetDataTable(Constants.StrBatchScenariosToSelenium, _batchId.ToString(CultureInfo.InvariantCulture)); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.Pending); var adapterBatches = new BatchesTableAdapter(); var adapterBatchLogic = new BatchLogicTableAdapter(); var adapterBrowser = new BrowsersTableAdapter(); string batchname = adapterBatches.GetBatchName(_batchId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterBatches.GetProjectID(Convert.ToInt32(_batchId))); LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, Constants.LogBatchStatus + "=Started", Constants.Done, "0", _projectId, 0); Singleton myInstance = Singleton.Instance; myInstance.BatchResult = true; var threadFinishEvents = new List <EventWaitHandle>(); foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { myInstance.BatchResult = false; break; } var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); string browserId = row["BrowserID"].ToString(); string batchLogicId = row["BatchLogicID"].ToString(); int executionStatus = Convert.ToInt32(row["ExecutionStatusID"].ToString()); if (executionStatus == 1) //run only selected scenarios { threadFinishEvents.Add(threadFinish); string browserName = adapterBrowser.GetBrowserName(Convert.ToInt32(browserId)); ThreadStart ts = delegate { //wait till hub return available browser RemoteWebDriver driver = null; int elapsed = 0; while ((driver == null) && (elapsed < timeoutAllScenarios)) { //generate random number 30-60 Random r = new Random(); int rInt = r.Next(30000, 60000); //for ints Thread.Sleep(rInt); driver = sel.SetWebDriverBrowser(null, browserId, false); elapsed += rInt; } string scenarioId = row["ScenarioID"].ToString(); // adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId),Constants.Running, Convert.ToInt32(batchLogicId)); string scenarioname = adapterScenario.GetScenarioName(Convert.ToInt32(scenarioId)); if (guiInstance != null && isBatchRun == true) { guiInstance.UpdateProgressLabel(scenarioname); } LogResult(_runExecutionId, Convert.ToInt32(_batchId), Convert.ToInt32(scenarioId), 0, 0, scenarioname + " ScenarioBrowser=" + browserName, Constants.Done, "0", _projectId, _projectPageId); // Do long work here bool scanearioresult = ExecuteOneScenario(scenarioId, driver); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, (EventHandler) delegate { if (scanearioresult == false) { myInstance.BatchResult = false; //adapterBatchLogic.Update(_batchId,Convert.ToInt32(scenarioId),Convert.ToInt32(browserId),Constants.Failed,Convert.ToInt32(batchLogicId)); } driver.Quit(); threadFinish.Set(); }, null, null); }; ts.BeginInvoke(delegate(IAsyncResult aysncResult) { ts.EndInvoke(aysncResult); }, null); if (remote == "no") { WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); } } } WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); string description; int status; if (myInstance.BatchResult) { description = string.Format("{0}={1}", Constants.LogBatchName, "Passed"); status = Constants.Passed; //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Passed",Constants.Passed, "0", _projectId, 0); } else { //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Failed",Constants.Failed, "0", _projectId, 0); description = string.Format("{0}={1}", Constants.LogBatchStatus, "Failed"); status = Constants.Failed; } LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, description, status, "0", _projectId, 0); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.NotRunnig); return(myInstance.BatchResult); } catch (Exception exception) { Logger.Error(exception.Message, exception); return(false); } }
internal bool ExecuteOneScenario(string scenarioId, RemoteWebDriver driver) { //init test status count var testStatus = new Dictionary <string, int>(); if (testStatus.ContainsKey("PassedTests")) { testStatus["PassedTests"] = 0; } else { testStatus.Add("PassedTests", 0); } if (testStatus.ContainsKey("FailedTests")) { testStatus["FailedTests"] = 0; } else { testStatus.Add("FailedTests", 0); } if (testStatus.ContainsKey("TotalTests")) { testStatus["TotalTests"] = 0; } else { testStatus.Add("TotalTests", 0); } try { if (scenarioId == string.Empty) { MessageBox.Show("Select Scenario first", "Applenium"); return(false); } _flowId = Convert.ToInt32(scenarioId); var sql = new Sql(); DataTable dtScenario = sql.GetDataTable(Constants.StrScenarioTestsToSelenium, scenarioId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterScenario.GetProjectID(_flowId)); string scenarioname = adapterScenario.GetScenarioName(_flowId); LogResult(_runExecutionId, _batchId, _flowId, 0, 0, String.Format("{0}={1}", Constants.LogScenarioStatus, "Started"), Constants.Done, "0", _projectId, _projectPageId); Singleton myInstance = Singleton.Instance; // Will always be the same instance... bool scenarioresult = true; foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { scenarioresult = false; break; } string testId = row["GuiTestID"].ToString(); bool testresult = ExecuteOneTest(testId, row["InputDataRow"].ToString(), driver, ref testStatus); if (testresult == false) { scenarioresult = false; } } string description; int status; if (scenarioresult) { description = String.Format("{0}={1}", Constants.LogScenarioStatus, "Passed"); status = Constants.Passed; // LogResult(_runExecutionId, _batchId, _flowId, 0, 0, scenarioname + " Scenario Passed",Constants.Passed,"0", _projectId, 0); } else { //LogResult(_runExecutionId, _batchId, _flowId, 0, 0, scenarioname + " Scenario Failed",Constants.Failed,"0", _projectId, 0); description = String.Format("{0}={1}", Constants.LogScenarioStatus, "Failed"); status = Constants.Failed; } LogResult(_runExecutionId, _batchId, _flowId, 0, 0, description + " : PassedTest=" + testStatus["PassedTests"] + " FailedTest=" + testStatus["FailedTests"] + " TotalTest=" + testStatus["TotalTests"], status, "0", _projectId, 0); return(scenarioresult); } catch (Exception exception) { Logger.Error(exception.Message, exception); return(false); } }
/// <summary> /// Unitest will cal this one /// </summary> /// <param name="batchId"></param> /// <returns></returns> public bool ExecuteOneBatch(string batchId) { var jp = new JsonParser(); string remote = jp.ReadJson("RemoteNode"); int timeoutAllScenarios = Convert.ToInt32(jp.ReadJson("TimeoutAllScenarios")) * 1000; var sel = new Selenium(); if (batchId == string.Empty) { MessageBox.Show("Select Batch first", "Applenium"); return(false); } var sql = new Sql(); _batchId = Convert.ToInt32(batchId); DataTable dtScenario = sql.GetDataTable(Constants.StrBatchScenariosToSelenium, _batchId.ToString(CultureInfo.InvariantCulture)); SetAllScenariusStatusToRunorNot(dtScenario, Constants.Pending); var adapterBatches = new BatchesTableAdapter(); var adapterBatchLogic = new BatchLogicTableAdapter(); var adapterBrowser = new BrowsersTableAdapter(); string batchname = adapterBatches.GetBatchName(_batchId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterBatches.GetProjectID(Convert.ToInt32(_batchId))); LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Started", Constants.Done, "0", _projectId, 0); Singleton myInstance = Singleton.Instance; myInstance.BatchResult = true; var threadFinishEvents = new List <EventWaitHandle>(); foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { myInstance.BatchResult = false; break; } var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); threadFinishEvents.Add(threadFinish); string browserId = row["BrowserID"].ToString(); string batchLogicId = row["BatchLogicID"].ToString(); string browserName = adapterBrowser.GetBrowserName(Convert.ToInt32(browserId)); IWebDriver driver = null; ThreadStart ts = delegate { driver = sel.SetWebDriverBrowser(driver, browserId, false); if (driver == null) { return; } string scenarioId = row["ScenarioID"].ToString(); adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId), Constants.Running, Convert.ToInt32(batchLogicId)); string scenarioname = adapterScenario.GetScenarioName(Convert.ToInt32(scenarioId)); LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, scenarioname + " Scenario will run on " + browserName + " browser.", Constants.Done, "0", _projectId, 0); // Do long work here bool scanearioresult = ExecuteOneScenario(scenarioId, driver); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, (EventHandler) delegate { if (scanearioresult == false) { myInstance.BatchResult = false; adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId), Constants.Failed, Convert.ToInt32(batchLogicId)); } else { adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId), Constants.Passed, Convert.ToInt32(batchLogicId)); } driver.Quit(); threadFinish.Set(); }, null, null); }; ts.BeginInvoke(delegate(IAsyncResult aysncResult) { ts.EndInvoke(aysncResult); }, null); if (remote == "no") { WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); } } WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); if (myInstance.BatchResult) { LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Passed", Constants.Passed, "0", _projectId, 0); } else { LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Failed", Constants.Failed, "0", _projectId, 0); //LogFailiure(_runExecutionID, 0, null, 0, null, "Description in the scenario"); } SetAllScenariusStatusToRunorNot(dtScenario, Constants.NotRunnig); return(myInstance.BatchResult); }