Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
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);
        }