public static TestRunModel GetTestRun(string connectionString, int id) { var list = new List <TestRunModel>(); using (SqlConnection connection = new SqlConnection(connectionString)) { var query = string.Format("SELECT * FROM dbo.TestRun WHERE RunId = {0};", id); using (SqlCommand command = new SqlCommand(query, connection)) { connection.Open(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var dict = new Dictionary <string, object>(); var model = new TestRunModel(reader.GetString(0), reader.GetString(1), reader.GetInt32(2), reader.GetInt32(3), reader.GetInt32(4), reader.GetInt32(5), reader.GetDateTime(6)); list.Add(model); } if (list.Count > 1) { throw new Exception("Error: should return max 1 record"); } } } } return(list[0]); }
public async Task <TestRunDto> AddTestRun(TestRunModel model) { var content = new StringContent(Json.Serialize(model), Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("http://localhost:5000/api/TestRun", content); var result = await response.Content.ReadAsStringAsync(); return(Json.Deserialize <TestRunDto>(result)); }
public TestRunModel NextStatus(TestRunModel testRun, RunStatus.Status status) { testRun.TestRunStatus = status.ToString(); Api api = new Api("api/CreateTestRun"); api.PostApi(JsonConvert.SerializeObject(testRun)); return(testRun); }
public Teardown(TestRunModel testRun) { Debug.WriteLine("Starting Teardown."); testRun.TestRunStatus = RunStatus.Status.Pass.ToString(); testRun.EndDateTime = DateTime.Now; foreach (var item in TestRunModel.Results) { if (item.ResultStatus == RunStatus.Status.Fail.ToString() || item.ResultStatus == RunStatus.Status.Fatal.ToString()) { // TODO: This will only set the result status to fail, but will never show fatals/warnings ect. // TODO: Consider making a prioritized list of which failure is highest pri (Pass - 1, Info - 2, Warning - 3, Fatal - 4, Critical - 5, ect). testRun.TestRunStatus = RunStatus.Status.Fail.ToString(); break; } } if (TestRunModel.IsApiTest == false) { if (testRun.Browser.ToUpper() == "CHROME") { Debug.WriteLine("Writing Chrome driver logs to end of test run."); if (TestRunModel.Driver.Manage().Logs.GetLog(LogType.Browser) != null) { var logs = TestRunModel.Driver.Manage().Logs.GetLog(LogType.Browser); for (int i = 0; i < logs.Count; i++) { if (logs.Count - 1 == i) { break; } TestResultModel result = new TestResultModel { ValidationKey = logs[i].Message, ValidationValue = logs[i].Level.ToString(), ResultStatus = RunStatus.Status.Warning.ToString() }; WriteResult(result); } } } TestRunModel.Driver?.Quit(); Debug.WriteLine($"{TestRunModel.Driver} closed."); } Api api = new Api("api/CreateTestRun"); _TeardownData = api.UpdateTestRun(testRun); }
public async Task <ActionResult <TestRunDto> > Post([FromBody] TestRunModel model) { if (ModelState.IsValid) { var testRunDto = await _runService.AddTestRunAsync(model.ProjectId, model.Name, model.Description, model.TestCasesIds); return(Created("", testRunDto)); } return(BadRequest()); }
/// <summary> /// Get Test Result from for a release /// </summary> public static TestRunModel GetReleaseTestRunDataModel(string vso, string project, string releaseEnvId, int releaseId, DateTime creationTime, string token) { var url = string.Format(RELEASE_TEST_RUN_QUERY_TEMPLATE, vso, project, releaseEnvId, releaseId); var rawResponse = VSOApiUtil.GetResponse(url, token); var response = JsonConvert.DeserializeObject <ResultSummaryResponse>(rawResponse); TestRunModel result = null; if (response != null && response.aggregatedResultsAnalysis != null && response.aggregatedResultsAnalysis.resultsByOutcome != null) { var outcome = response.aggregatedResultsAnalysis.resultsByOutcome; var failed = (outcome.Failed != null) ? outcome.Failed.count : 0; var passed = (outcome.Passed != null) ? outcome.Passed.count : 0; result = new TestRunModel(vso, project, releaseId, releaseId, passed, failed + passed, creationTime); } return(result); }
/// <summary> /// Get Test Result from for a build /// </summary> public static List <TestRunModel> GetBuildTestRunDataModel(string vso, string project, int buildId, string token) { var url = string.Format(BUILD_TEST_RUN_QUERY_TEMPLATE, vso, project, buildId); var result = new List <TestRunModel>(); var rawResponse = VSOApiUtil.GetResponse(url, token); var response = JsonConvert.DeserializeObject <TestRunListResponse>(rawResponse); if (response.value.Count > 0) { foreach (var item in response.value) { var model = new TestRunModel(vso, project, buildId, item.id, item.passedTests, item.totalTests, item.startedDate); result.Add(model); } } return(result); }
public ActionResult TestRun(TestRunModel testRunModel) { try { testRunModel.TestResult.SavedTime = DateTime.Now; int id = testResultFacade.CreateTestResult(testRunModel.TestResult, testRunModel.MarkedAnswers); var testResultViewModel = new TestResultViewModel() { TestResult = testResultFacade.getTestResultByID(id) }; return(RedirectToAction("TestResultView", testResultViewModel)); //return View("TestRunView",testRunModel); } catch { return(View()); } }
/* * // POST: Test/Delete/5 * [HttpPost] * public ActionResult Delete(int id, FormCollection collection) * { * try * { * // TODO: Add delete logic here * * return RedirectToAction("Index"); * } * catch * { * return View(); * } * } */ public ActionResult TestRun(int id) { TestDTO test = testFacade.GetTestByID(id); if (test.TimeFrom <= DateTime.Now && test.TimeTo >= DateTime.Now) { var testRunModel = new TestRunModel() { Test = testFacade.GetTestByID(id) }; foreach (var item in testRunModel.Test.Questions) { foreach (var answer in item.Answers) { testRunModel.MarkedAnswers.Add(answer.AnswerID, false); } } testRunModel.TestResult.OpenedTime = DateTime.Now; testRunModel.TestResult.Test = testRunModel.Test; return(View(testRunModel)); } return(View("TestCannotRun")); }
public RestResponse UpdateTestRun(TestRunModel testRun) { return(PostApi(JsonConvert.SerializeObject(testRun))); }
public Initialize(string appName, out TestRunModel testRun) { try { Api prefs; Preferences preferences; if (Dns.GetHostName() == "VDI-Automation0") { // Get Queued User Prefs prefs = new Api($"api/GetPreferences/{appName}/{Environment.UserName}/{true}"); JsonReader reader = new JsonTextReader(new StringReader(prefs.GetApi().Content)); preferences = new NewtonSoftSerializer().Deserialize <Preferences>(reader); } else { // Get Normal User Prefs prefs = new Api($"api/GetPreferences/{appName}/{Environment.UserName}/{false}"); JsonReader reader = new JsonTextReader(new StringReader(prefs.GetApi().Content)); preferences = new NewtonSoftSerializer().Deserialize <Preferences>(reader); preferences.TesterName = Environment.UserName; } //preferences.RemoteDriver = false; var appKeyRequest = new Api($"api/GetAppKey/{appName}"); var appKey = int.Parse(appKeyRequest.GetApi().Content); Debug.WriteLine($"Initializing Application: {appName} - Key: {appKey}"); var testName = ""; Debug.WriteLine("Initializing Test: " + GetTestName()); var testKey = new Api($"api/GetTestKey/{appName}/{GetTestName()}"); var testKeyContent = testKey.GetApi().Content; if (testKeyContent.Contains("Test name not found")) { Test newTest = new Test { ApplicationKey = appKey, Active = true, TestName = GetTestName() }; testName = newTest.TestName; Debug.WriteLine($"{GetTestName()} not found.. Creating new test."); // Do some logic to create a new test for this test name. var createTestRequest = new Api("api/CreateTest"); testKeyContent = createTestRequest.PostApi(JsonConvert.SerializeObject(newTest)).Content;; // Set key to newly created test key Debug.WriteLine($"Initializing Test: {GetTestName()} - Key: {testKeyContent}"); } testRun = new TestRunModel { ApplicationKey = appKey, TestRunStatus = RunStatus.Status.Initializing.ToString(), Environment = preferences.Environment, EnvironmentUrl = preferences.EnvironmentUrl, TestKey = int.Parse(testKeyContent), TesterKey = preferences.TesterKey, Browser = preferences.BrowserName, }; var createTestRunKey = new Api("api/CreateTestRun"); testRun.TestRunKey = int.Parse(createTestRunKey.PostApi(JsonConvert.SerializeObject(testRun)).Content); TestRunKey = testRun.TestRunKey; if (testName != string.Empty && !testName.ToUpper().Contains("API")) { WebDriver driverData = new WebDriver(); TestRunModel.Driver = driverData.GetWebDriver(preferences); Debug.WriteLine("Started Driver type: " + TestRunModel.Driver.GetType()); TestRunModel.Driver.Manage().Window.Maximize(); TestRunModel.Driver.Navigate().GoToUrl(testRun.EnvironmentUrl); Debug.WriteLine($"Went to URL: {TestRunModel.Driver.Url}"); } else { TestRunModel.IsApiTest = true; Debug.WriteLine("Started API Test."); } } catch (Exception exception) { Debug.WriteLine(exception.Message); throw; } }
/// <summary> /// Runs tests in all assemblies in the temporary directory /// </summary> public IActionResult Test() { try { var reports = TestRunner.RunTests($"{environment.WebRootPath}/Temp"); var dateTime = DateTime.Now; var results = new List <AssemblyReportModel>(); foreach (var testClassReport in reports) { var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName); var assemblyReport = assemblyReports.FirstOrDefault(); if (assemblyReports.Count() == 0) { assemblyReport = new AssemblyReportModel { Name = testClassReport.AssemblyName, Id = dateTime.ToString() + testClassReport.AssemblyName }; currentState.AssemblyReports.Add(assemblyReport); results.Add(assemblyReport); } foreach (var test in testClassReport.Reports) { var newTestReportModel = new TestReportModel { ClassName = testClassReport.ClassName, Valid = true, Name = test.Name, Passed = test.Ignored ? null : test.Passed, Time = test.Ignored ? null : test.Time, Message = test.Message, Id = dateTime.ToString() + test.Name + testClassReport.ClassName }; if (test.Passed == true) { assemblyReport.Passed++; } else if (test.Passed == false) { assemblyReport.Failed++; } else { assemblyReport.Ignored++; } assemblyReport.TestReports.Add(newTestReportModel); } } var newRunReport = new TestRunModel { DateTime = DateTime.Now, AssemblyReports = results }; archive.Add(newRunReport); archive.SaveChanges(); } catch (InvalidAssemlyException e) { var reports = e.InvalidClasses; foreach (var testClassReport in reports) { var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName); var assemblyReport = assemblyReports.FirstOrDefault(); if (assemblyReports.Count() == 0) { assemblyReport = new AssemblyReportModel { Name = testClassReport.AssemblyName }; currentState.AssemblyReports.Add(assemblyReport); } foreach (var test in testClassReport.InvalidMethods) { var newTestReportModel = new TestReportModel { ClassName = testClassReport.Name, Valid = false, Name = test.Name, Passed = null, Time = null, Message = String.Join("\n", test.Errors) }; assemblyReport.TestReports.Add(newTestReportModel); } } } return(View("Index", currentState)); }