public static bool SendThroughService(string[] mailConfig, Report.Engine reporter) { string[] serviceAuthDetails = new string[] {}; bool mailstatus = false; serviceAuthDetails = ConfigurationManager.AppSettings.Get("EmailCreds").Split(new char[] { ';' }); // string encodedpass =null; //string encodeduser = null; string decodeduser = null; string decodedpass = null; if (serviceAuthDetails.Length > 0) { //encodeduser = Base64Encode(serviceAuthDetails[0]); //encodedpass = Base64Encode(serviceAuthDetails[1]); if (!IsBase64String(serviceAuthDetails[0])) { decodeduser = serviceAuthDetails[0]; decodedpass = serviceAuthDetails[1]; } else { decodeduser = Base64Decode(serviceAuthDetails[0]); decodedpass = Base64Decode(serviceAuthDetails[1]); } } if (mailConfig.Length > 0 && mailConfig[0].ToUpper() == "TRUE") { String zipFilePath = Path.Combine( Directory.GetParent(reporter.ReportPath).ToString(), reporter.Timestamp + ".zip"); ZipFile.CreateFromDirectory(reporter.ReportPath, zipFilePath); string summary = Path.Combine(reporter.ReportPath, "summary.html"); List <string> attachements = new List <string>() { zipFilePath, summary }; switch (mailConfig[1].ToLower()) { case "gmail": mailstatus = sendEMailThroughHotMail("gmail", attachements, mailConfig, decodeduser, decodedpass); break; case "outlook": mailstatus = sendEMailThroughHotMail("outlook", attachements, mailConfig, decodeduser, decodedpass); break; case "yahoo": mailstatus = sendEMailThroughHotMail("yahoo", attachements, mailConfig, decodeduser, decodedpass); break; } } return(mailstatus); }
public static void RestMailGun(Report.Engine reportEngine, String[] mailConfig) { // Prepare to send reports via Email String zipFilePath = Path.Combine( Directory.GetParent(reportEngine.ReportPath).ToString(), reportEngine.Timestamp + ".zip"); try { ZipFile.CreateFromDirectory(reportEngine.ReportPath, zipFilePath); } catch (Exception e) { Console.WriteLine("Zip already exists"); } // RestClient client = new RestClient(); // client.BaseUrl = new Uri("https://api.mailgun.net/v3"); // //client.Authenticator = new HttpBasicAuthenticator("api", "key-a790236dd7b2bff508eaf13509a2d72a"); // client.Authenticator = new HttpBasicAuthenticator("api", "key-791763ac0781b3909b21c800869e57d9"); // RestRequest request = new RestRequest(); // // request.AddParameter("domain", "sandbox1190ad81def541bc9dfac73ed08c16b8.mailgun.org", ParameterType.UrlSegment); // request.AddParameter("domain", "sandbox25147b835c954cbe9eb486187117518e.mailgun.org", ParameterType.UrlSegment); // request.Resource = "{domain}/messages"; // request.AddParameter("from", "*****@*****.**"); // request.AddParameter("to", mailConfig[2]); // string cc = mailConfig[3]; // if (cc.Contains('@')) // { // request.AddParameter("cc", mailConfig[3]); // } // string bcc = mailConfig[4]; // if (bcc.Contains('@')) // { // request.AddParameter("cc", mailConfig[4]); // } // request.AddParameter("subject", "MetTel Automation Report"); // request.AddParameter("html", File.ReadAllText(Path.Combine(reportEngine.ReportPath, "summary.html"))); // request.AddFile("attachment", Path.Combine(reportEngine.ReportPath, "summary.html")); // request.AddFile("attachment", zipFilePath); // request.Method = Method.POST; // IRestResponse response = client.Execute(request); }
static void Main(string[] args) { string workingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\"; Report.Engine reportEngine = new Report.Engine(Util.EnvironmentSettings["ReportsPath"], Util.EnvironmentSettings["Server"]); // Get all Test Cases (Derived from BaseTestCase) // Have a ClassName vs Qualified ClassName Dictionary // Peformance is not an issue here. Flexibility is needed. // We want to place Test Cases in varying levels of Directories Type typeBaseCase = typeof(BaseCase); foreach (Type type in Assembly.LoadFrom("NationalVision.Automation.Tests.dll").GetTypes().Where(x => x.IsSubclassOf(typeBaseCase))) { qualifiedNames.Add(type.Name, type.AssemblyQualifiedName); } // test cases reading logic from test suites from automation.mercury.engine foreach (DataRow eachRow in Util.ReadCSVContent(workingDirectory, Util.EnvironmentSettings["TestSuite"]).Rows) { try { if (eachRow["Run"].ToString().ToUpper() != "YES") { continue; } String testCaseId = eachRow["TestCaseID"].ToString().Trim(); String testCaseName = eachRow["TestCaseTitle"].ToString().Trim(); String testCaseRequirementFeature = eachRow["RequirementFeature"].ToString().Trim(); Report.TestCase testCaseReporter = new Report.TestCase(testCaseId, testCaseName, testCaseRequirementFeature); testCaseReporter.Summary = reportEngine.Reporter; reportEngine.Reporter.TestCases.Add(testCaseReporter); // browsers in test suite foreach (String browserId in eachRow["Browser"].ToString().Split(new char[] { ';' })) { String overRideBrowserId = String.Empty; if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("DefaultBrowser").ToString())) { overRideBrowserId = ConfigurationManager.AppSettings.Get("DefaultBrowser").ToString(); } Report.Browser browserReporter = new Report.Browser(overRideBrowserId != String.Empty ? overRideBrowserId : browserId); browserReporter.TestCase = testCaseReporter; testCaseReporter.Browsers.Add(browserReporter); // Logic for reading iterative data from the respective test cases (reads from automation.tests)- Changed for project need reads only first iteration foreach (DataRow iterationTestData in Util.GetIterationTestData(Path.Combine(workingDirectory, "Data"), testCaseId).Rows) { if (iterationTestData["Run"].ToString().ToUpper() != "YES") { continue; } Dictionary <String, String> testData = iterationTestData.Table.Columns.Cast <DataColumn>().ToDictionary(col => col.ColumnName, col => iterationTestData.Field <string>(col.ColumnName)); Dictionary <String, String> browserConfig = Util.GetBrowserConfig(overRideBrowserId != String.Empty ? overRideBrowserId : browserId); String iterationId = iterationTestData["TDID"].ToString(); String defectID = iterationTestData["DefectID"].ToString(); String TestcaseID = iterationTestData["TestCaseID"].ToString(); Report.Iteration iterationReporter = new Report.Iteration(TestcaseID, defectID); iterationReporter.Browser = browserReporter; browserReporter.Iterations.Add(iterationReporter); works.Add(new Object[] { browserConfig, testCaseId, iterationId, iterationReporter, testData, reportEngine, TestcaseID }); } } } catch (Exception ex) { continue; } } // Parllel Processing Processor(Int32.Parse(ConfigurationManager.AppSettings.Get("MaxDegreeOfParallelism"))); reportEngine.Summarize(); // generate re-run suite StringBuilder suiteContent = new StringBuilder(); suiteContent.AppendLine("TestCaseID,TestCaseTitle,RequirementFeature,Run,Browser"); foreach (TestCase eachCase in reportEngine.Reporter.TestCases) { if (!eachCase.IsSuccess) { String browsers = String.Empty; foreach (Browser eachBrowser in eachCase.Browsers) { if (!eachBrowser.IsSuccess) { browsers += String.Format("{0};", eachBrowser.Title); } } browsers = browsers.TrimEnd(new char[] { ';' }); suiteContent.AppendLine(String.Format("{0},{1},{2},Yes,{3}", eachCase.Title, eachCase.Name, eachCase.RequirementFeature, browsers)); } } String fileName = Path.Combine(reportEngine.ReportPath, "FailedSuite.csv"); using (StreamWriter output = new StreamWriter(fileName)) { output.Write(suiteContent.ToString()); } String[] mailConfig = ConfigurationManager.AppSettings.Get("EmailReports").Split(new char[] { ';' }); if (mailConfig.Length > 0 && mailConfig[0].ToUpper() == "TRUE") { // Prepare to send reports via Email String zipFilePath = Path.Combine( Directory.GetParent(reportEngine.ReportPath).ToString(), reportEngine.Timestamp + ".zip"); ZipFile.CreateFromDirectory(reportEngine.ReportPath, zipFilePath); // Compose Email RestClient client = new RestClient(); client.BaseUrl = new Uri("https://api.mailgun.net/v2"); client.Authenticator = new HttpBasicAuthenticator("api", "key-a790236dd7b2bff508eaf13509a2d72a"); RestRequest request = new RestRequest(); request.AddParameter("domain", "sandbox1190ad81def541bc9dfac73ed08c16b8.mailgun.org", ParameterType.UrlSegment); request.Resource = "{domain}/messages"; request.AddParameter("from", "*****@*****.**"); request.AddParameter("to", mailConfig[1]); if (mailConfig[2].ToString() != null) { request.AddParameter("cc", mailConfig[2]); request.AddParameter("cc", mailConfig[3]); request.AddParameter("cc", mailConfig[4]); request.AddParameter("bcc", mailConfig[5]); } request.AddParameter("subject", "National Vision Web Portal Test Automation Report"); request.AddParameter("html", File.ReadAllText(Path.Combine(reportEngine.ReportPath, "summary.html"))); //request.AddParameter("html", File.ReadAllText(Path.Combine(reportEngine.ReportPath, "summary.html"))); //request.AddFile("attachment", Path.Combine(reportEngine.ReportPath, "summary.html")); request.AddFile("attachment", zipFilePath); request.Method = Method.POST; IRestResponse response = client.Execute(request); } System.Environment.Exit(0); }
//[DllImport("kernel32.dll")] //static extern IntPtr GetConsoleWindow(); //[DllImport("user32.dll")] //static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); //const int SW_HIDE = 0; //const int SW_SHOW = 5; public static void Main(string[] args) { // var handle = GetConsoleWindow(); // // Hide //ShowWindow(handle, SW_HIDE); // string workingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\"; string workingDirectory = "/home/nvadran/DataExtractor/"; Report.Engine reportEngine = new Report.Engine(Util.EnvironmentSettings["ReportsPath"], Util.EnvironmentSettings["Server"]); DeleteTempFiles(); try { KillPreviousBrowser("phanthom"); } catch (Exception e) { } Type typeBaseCase = typeof(BaseCase); foreach (Type type in Assembly.LoadFrom("BaseProject.Tests.dll").GetTypes().Where(x => x.IsSubclassOf(typeBaseCase))) { qualifiedNames.Add(type.Name, type.AssemblyQualifiedName); } // test cases foreach (DataRow eachRow in Util.ReadCSVContent(workingDirectory, Util.EnvironmentSettings["TestSuite"]).Rows) { try { if (eachRow["Run"].ToString().ToUpper() != "YES") { continue; } String testCaseId = eachRow["TestCaseID"].ToString().Trim(); String testCaseName = eachRow["TestCaseTitle"].ToString().Trim(); String testCaseRequirementFeature = eachRow["RequirementFeature"].ToString().Trim(); Report.TestCase testCaseReporter = new Report.TestCase(testCaseId, testCaseName, testCaseRequirementFeature); testCaseReporter.Summary = reportEngine.Reporter; reportEngine.Reporter.TestCases.Add(testCaseReporter); // browsers foreach (String browserId in eachRow["Browser"].ToString().Split(new char[] { ';' })) { String overRideBrowserId = String.Empty; if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("DefaultBrowser").ToString())) { overRideBrowserId = ConfigurationManager.AppSettings.Get("DefaultBrowser").ToString(); } Report.Browser browserReporter = new Report.Browser(overRideBrowserId != String.Empty ? overRideBrowserId : browserId); browserReporter.TestCase = testCaseReporter; testCaseReporter.Browsers.Add(browserReporter); // iterations foreach (DataRow iterationTestData in Util.GetIterationsTestData(Path.Combine(workingDirectory, "Data"), testCaseId).Rows) { if (iterationTestData["Run"].ToString().ToUpper() != "YES") { continue; } Dictionary <String, String> testData = iterationTestData.Table.Columns.Cast <DataColumn>().ToDictionary(col => col.ColumnName, col => iterationTestData.Field <string>(col.ColumnName)); Dictionary <String, String> browserConfig = Util.GetBrowserConfig(overRideBrowserId != String.Empty ? overRideBrowserId : browserId); String iterationId = iterationTestData["TDID"].ToString(); String defectID = iterationTestData["DefectID"].ToString(); Report.Iteration iterationReporter = new Report.Iteration(iterationId, defectID); iterationReporter.Browser = browserReporter; browserReporter.Iterations.Add(iterationReporter); works.Add(new Object[] { browserConfig, testCaseId, iterationId, iterationReporter, testData, reportEngine }); } } } catch (Exception e) { continue; } } //adding hub control if (ConfigurationManager.AppSettings.Get("DefaultBrowser").ToString().ToUpper().Contains("HUB")) { string[] br = ConfigurationManager.AppSettings.GetValues("DefaultBrowser"); string browser = br[0]; Manager.HubbeforeActions(true, browser); } // Parllel Processing Processor(Int32.Parse(ConfigurationManager.AppSettings.Get("MaxDegreeOfParallelism"))); reportEngine.PublishException(); reportEngine.Summarize(); // generate re-run suite StringBuilder suiteContent = new StringBuilder(); suiteContent.AppendLine("TestCaseID,TestCaseTitle,RequirementFeature,Run,Browser"); foreach (TestCase eachCase in reportEngine.Reporter.TestCases) { if (!eachCase.IsSuccess) { String browsers = String.Empty; foreach (Browser eachBrowser in eachCase.Browsers) { if (!eachBrowser.IsSuccess) { browsers += String.Format("{0};", eachBrowser.Title); } } browsers = browsers.TrimEnd(new char[] { ';' }); suiteContent.AppendLine(String.Format("{0},{1},{2},Yes,{3}", eachCase.Title, eachCase.Name, eachCase.RequirementFeature, browsers)); } } String fileName = Path.Combine(reportEngine.ReportPath, "FailedSuite.csv"); using (StreamWriter output = new StreamWriter(fileName)) { output.Write(suiteContent.ToString()); } //String[] mailConfig = ConfigurationManager.AppSettings.Get("EmailReports").Split(new char[] { ';' }); //if (mailConfig.Length > 0 && mailConfig[0].ToUpper() == "TRUE") //{ // if(!(mailConfig[1].ToLower().Contains("gmail")||mailConfig[1].ToLower().Contains("outlook")||mailConfig[1].ToLower().Contains("yahoo"))) // { // // Compose Email // RestMailGun(reportEngine, mailConfig); // } // else{ // bool status= SendThroughService(mailConfig, reportEngine); // if (!status) // { // RestMailGun(reportEngine, mailConfig); // } // } //} System.Environment.Exit(0); }