Ejemplo n.º 1
0
        public static HtmlTextWriter AddTestEvents(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string id = "")
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
            writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            var events = nunitGoTest.Events.OrderBy(x => x.Started);

            foreach (var testEvent in events)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test event: ");
                writer.Write(testEvent.Name);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.Write(Bullet.HtmlCode + "Started: " + testEvent.Started.ToString("dd.MM.yy HH:mm:ss.fff"));
                writer.RenderEndTag();
                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.Write(Bullet.HtmlCode + "Finished: " + testEvent.Finished.ToString("dd.MM.yy HH:mm:ss.fff"));
                writer.RenderEndTag();
                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.Write(Bullet.HtmlCode + "Duration: " + testEvent.DurationString);
                writer.RenderEndTag();
            }
            if (!events.Any())
            {
                writer.Write("There are no test events in this test");
            }
            writer.RenderEndTag();//DIV
            return(writer);
        }
Ejemplo n.º 2
0
        public static HtmlTextWriter AddScreenshots(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string id = "")
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
            writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            var screens = nunitGoTest.Screenshots.OrderBy(x => x.Date);

            foreach (var screenshot in screens)
            {
                writer.Write("Screenshot (Date: " + screenshot.Date.ToString("dd.MM.yy HH:mm:ss.fff") + "):");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, @"./../../Screenshots/" + screenshot.Name);
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
                writer.AddAttribute(HtmlTextWriterAttribute.Src, @"./../../Screenshots/" + screenshot.Name);
                writer.AddAttribute(HtmlTextWriterAttribute.Alt, screenshot.Name);
                writer.RenderBeginTag(HtmlTextWriterTag.Img);
                writer.RenderEndTag(); //IMG
                writer.RenderEndTag(); //A
            }
            if (!screens.Any())
            {
                writer.Write("There are no screenshots in this test");
            }
            writer.RenderEndTag();//DIV
            return(writer);
        }
Ejemplo n.º 3
0
        public static void Send(List<Address> mailFromList, List<Address> targetEmails,
            NunitGoTest nunitGoTest, string screenshotsPath, bool addLinks, 
            bool isEventEmail = false, string eventName = "", TestEvent previousRunEvent = null)
        {
            foreach (var address in targetEmails)
            {
                var fromMails = mailFromList;
                var success = false;
                while (!success && fromMails.Any())
                {
                    using (var message = new MailMessage
                    {
                        IsBodyHtml = true,
                        Subject = MailGenerator.GetMailSubject(nunitGoTest, isEventEmail, eventName),
                        Body = MailGenerator.GetMailBody(nunitGoTest, addLinks, isEventEmail, eventName, previousRunEvent)
                    })
                    {
                        var attachments = MailGenerator.GetAttachmentsFromScreenshots(nunitGoTest, screenshotsPath);
                        message.AddAttachments(attachments);
                        success = SingleSend(fromMails.First(), address, message);
                        if (!success)
                        {
                            fromMails = fromMails.Skip(1).ToList();
                        }

                    }
                }
            }
        }
Ejemplo n.º 4
0
 public static void Send(List <Address> mailFromList, List <Address> targetEmails,
                         NunitGoTest nunitGoTest, string screenshotsPath, bool addLinks,
                         bool isEventEmail = false, string eventName = "", TestEvent previousRunEvent = null)
 {
     foreach (var address in targetEmails)
     {
         var fromMails = mailFromList;
         var success   = false;
         while (!success && fromMails.Any())
         {
             using (var message = new MailMessage
             {
                 IsBodyHtml = true,
                 Subject = MailGenerator.GetMailSubject(nunitGoTest, isEventEmail, eventName),
                 Body = MailGenerator.GetMailBody(nunitGoTest, addLinks, isEventEmail, eventName, previousRunEvent)
             })
             {
                 var attachments = MailGenerator.GetAttachmentsFromScreenshots(nunitGoTest, screenshotsPath);
                 message.AddAttachments(attachments);
                 success = SingleSend(fromMails.First(), address, message);
                 if (!success)
                 {
                     fromMails = fromMails.Skip(1).ToList();
                 }
             }
         }
     }
 }
Ejemplo n.º 5
0
 private void Flush()
 {
     _guid        = Guid.Empty;
     _nunitGoTest = new NunitGoTest();
     _start       = default(DateTime);
     _finish      = default(DateTime);
     NunitGo.TearDown();
 }
Ejemplo n.º 6
0
 public static List <Attachment> GetAttachmentsFromScreenshots(NunitGoTest nunitGoTest, string screenshotsPath)
 {
     return(nunitGoTest.Screenshots.Select(
                screenshot =>
                new Attachment(Path.Combine(screenshotsPath, screenshot.Name))
     {
         ContentId = screenshot.Name
     })
            .ToList());
 }
Ejemplo n.º 7
0
 public static List<Attachment> GetAttachmentsFromScreenshots(NunitGoTest nunitGoTest, string screenshotsPath)
 {
     return nunitGoTest.Screenshots.Select(
         screenshot =>
             new Attachment(Path.Combine(screenshotsPath, screenshot.Name))
             {
                 ContentId = screenshot.Name
             })
             .ToList();
 }
Ejemplo n.º 8
0
 public static HtmlTextWriter AddTestHistory(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string id = "")
 {
     writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
     writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
     writer.RenderBeginTag(HtmlTextWriterTag.Div);
     writer.AddAttribute(HtmlTextWriterAttribute.Id, Output.GetHistoryChartId(nunitGoTest.Guid, nunitGoTest.DateTimeFinish));
     writer.RenderBeginTag(HtmlTextWriterTag.Div);
     writer.RenderEndTag(); //DIV
     writer.RenderEndTag(); //DIV
     return(writer);
 }
Ejemplo n.º 9
0
 public static string GetMailSubject(NunitGoTest nunitGoTest)
 {
     return nunitGoTest.IsSuccess() 
         ? String.Format("Test '{0}' was finished successfully", nunitGoTest.Name) 
         : (nunitGoTest.IsFailed() 
         ? String.Format("Test '{0}' was failed", nunitGoTest.Name) 
         : (nunitGoTest.IsBroken() 
         ? String.Format("Test '{0}' was broken", nunitGoTest.Name)
         : (nunitGoTest.IsIgnored()
         ? String.Format("Test '{0}' was ignored", nunitGoTest.Name)
         : (nunitGoTest.IsInconclusive()
         ? String.Format("Test '{0}' is inconclusive", nunitGoTest.Name)
         : String.Format("Test '{0}' was not successfully finished", nunitGoTest.Name)))));
 }
Ejemplo n.º 10
0
 public static HtmlTextWriter AddOutput(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string testOutput, string id = "")
 {
     writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
     writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
     writer.RenderBeginTag(HtmlTextWriterTag.Div);
     if (nunitGoTest.HasOutput)
     {
         writer.RenderBeginTag(HtmlTextWriterTag.P);
         writer.AddTag(HtmlTextWriterTag.B, "Test output: ");
         writer.Write(NunitTestHtml.GenerateTxtView(testOutput));
         writer.RenderEndTag(); //P
     }
     else
     {
         writer.Write("Test output is empty");
     }
     writer.RenderEndTag();//DIV
     return(writer);
 }
Ejemplo n.º 11
0
 public static string GetMailSubject(NunitGoTest nunitGoTest, bool isEventEmail = false, string eventName = "")
 {
     if (isEventEmail)
     {
         return(string.Format("Test '{0}' has wrong event duration! Event '{1}'",
                              nunitGoTest.Name,
                              nunitGoTest.Events.First(x => x.Name.Equals(eventName)).Name));
     }
     return(nunitGoTest.IsSuccess()
         ? string.Format("Test '{0}' was finished successfully", nunitGoTest.Name)
         : (nunitGoTest.IsFailed()
         ? string.Format("Test '{0}' was failed", nunitGoTest.Name)
         : (nunitGoTest.IsBroken()
         ? string.Format("Test '{0}' was broken", nunitGoTest.Name)
         : (nunitGoTest.IsIgnored()
         ? string.Format("Test '{0}' was ignored", nunitGoTest.Name)
         : (nunitGoTest.IsInconclusive()
         ? string.Format("Test '{0}' is inconclusive", nunitGoTest.Name)
         : string.Format("Test '{0}' was not successfully finished", nunitGoTest.Name))))));
 }
Ejemplo n.º 12
0
        public void AfterTest(ITest test)
        {
            _finish = DateTime.Now;
            _guid   = _guid.Equals(Guid.Empty)
                ? (NunitGo.TestGuid.Equals(Guid.Empty) ? GuidConverter.ToMd5HashGuid(test.FullName) : NunitGo.TestGuid)
                : _guid;
            _testOutput = TestContext.Out.ToString();
            _testName   = _testName.Equals("") ? NunitGo.TestName : _testName;

            var context          = TestContext.CurrentContext;
            var relativeTestHref = "Attachments" + @"/" + _guid + @"/" + Output.Files.GetTestHtmlName(_finish);

            _nunitGoTest = new NunitGoTest
            {
                DateTimeStart    = _start,
                DateTimeFinish   = _finish,
                TestDuration     = (_finish - _start).TotalSeconds,
                FullName         = test.FullName,
                ProjectName      = _projectName.Equals("") ? test.FullName.Split('.').First() : _projectName,
                ClassName        = _className.Equals("") ? test.FullName.Split('.').Skip(1).First() : _className,
                Name             = _testName.Equals("") ? test.Name : _testName,
                TestStackTrace   = context.Result.StackTrace ?? "",
                TestMessage      = context.Result.Message ?? "",
                Result           = context.Result.Outcome?.ToString() ?? "Unknown",
                Guid             = _guid,
                HasOutput        = !_testOutput.Equals(string.Empty),
                AttachmentsPath  = _attachmentsPath + _guid + @"\",
                TestHrefRelative = relativeTestHref,
                TestHrefAbsolute = _configuration.ServerLink + relativeTestHref,
                Events           = NunitGo.GetEvents()
            };

            TakeScreenshotIfFailed();
            AddScreenshots();
            CleanUpTestFiles();
            SaveTestFiles();
            SendEmails(_nunitGoTest.IsSuccess());
            SendEmailsForEvents();
            GenerateReport();
            Flush();
        }
Ejemplo n.º 13
0
 public static void DeleteTestFiles(this NunitGoTest test, string screenshotsPath)
 {
     try
     {
         var finishDate = test.DateTimeFinish;
         var scriptPath = Path.Combine(test.AttachmentsPath, Output.Files.GetTestHistoryScriptName(finishDate));
         var htmlPath   = Path.Combine(test.AttachmentsPath, Output.Files.GetTestHtmlName(finishDate));
         var xmlPath    = Path.Combine(test.AttachmentsPath, Output.Files.GetTestXmlName(finishDate));
         File.Delete(scriptPath);
         File.Delete(htmlPath);
         File.Delete(xmlPath);
         foreach (var screenshot in test.Screenshots)
         {
             File.Delete(Path.Combine(screenshotsPath, screenshot.Name));
         }
     }
     catch (Exception ex)
     {
         Log.Exception(ex, "Exception in CleanUpTestFiles");
     }
 }
Ejemplo n.º 14
0
        public static HtmlTextWriter AddTestResult(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string id = "")
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
            writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            writer.RenderBeginTag(HtmlTextWriterTag.P);
            writer.AddTag(HtmlTextWriterTag.B, "Test full name: ");
            writer.Write(nunitGoTest.FullName);
            writer.RenderEndTag(); //P

            writer.RenderBeginTag(HtmlTextWriterTag.P);
            writer.AddTag(HtmlTextWriterTag.B, "Test name: ");
            writer.Write(nunitGoTest.Name);
            writer.RenderEndTag(); //P

            writer.RenderBeginTag(HtmlTextWriterTag.P);
            writer.AddTag(HtmlTextWriterTag.B, "Test duration: ");
            writer.Write(TimeSpan.FromSeconds(nunitGoTest.TestDuration).ToString(@"hh\:mm\:ss\:fff"));
            writer.RenderEndTag(); //P

            writer.RenderBeginTag(HtmlTextWriterTag.P);
            writer.AddTag(HtmlTextWriterTag.B, "Time period: ");
            var start = nunitGoTest.DateTimeStart.ToString("dd.MM.yy HH:mm:ss.fff");
            var end   = nunitGoTest.DateTimeFinish.ToString("dd.MM.yy HH:mm:ss.fff");

            writer.Write(start + " - " + end);
            writer.RenderEndTag(); //P

            writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, nunitGoTest.GetColor());
            writer.RenderBeginTag(HtmlTextWriterTag.P);
            writer.RenderBeginTag(HtmlTextWriterTag.B);
            writer.Write("Test result: ");
            writer.RenderEndTag(); //B
            writer.Write(nunitGoTest.Result);
            writer.RenderEndTag(); //P

            writer.RenderEndTag(); //DIV
            return(writer);
        }
Ejemplo n.º 15
0
        public static void GenerateTestPage(this NunitGoTest nunitGoTest, string fullPath, string testOutput, string chartFile)
        {
            try
            {
                const string script   = @"
					$(document).ready(function() {
						$("".tabs-menu a"").click(function(event) {
							event.preventDefault();
							$(this).parent().addClass(""current"");
							$(this).parent().siblings().removeClass(""current"");
							var tab = $(this).attr(""href"");
							$("".tab-content"").not(tab).css(""display"", ""none"");
							$(tab).fadeIn();
						});
					});
				"                ;
                var          htmlTest = new NunitTestHtml.NunitTestHtml(nunitGoTest, testOutput);
                var          page     = new HtmlPage("Test page")
                {
                    PageStylePaths = new List <string>
                    {
                        "./../../" + Output.Files.ReportStyleFile,
                        "./../../" + Output.Files.PrimerStyleFile
                    },
                    PageScriptString = script,
                    ScriptFilePaths  = new List <string>
                    {
                        "./../../" + Output.Files.JQueryScriptFile,
                        Output.Files.HighstockScriptFile,
                        chartFile
                    },
                    PageBodyCode = htmlTest.HtmlCode
                };
                page.SavePage(fullPath);
            }
            catch (Exception ex)
            {
                Log.Exception(ex, "Exception while generating test html page");
            }
        }
Ejemplo n.º 16
0
 public static HtmlTextWriter AddFailure(this HtmlTextWriter writer, NunitGoTest nunitGoTest, string id = "")
 {
     writer.AddAttribute(HtmlTextWriterAttribute.Id, id.Equals("") ? "table-cell" : id);
     writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "20px");
     writer.RenderBeginTag(HtmlTextWriterTag.Div);
     if (!nunitGoTest.IsSuccess())
     {
         writer.RenderBeginTag(HtmlTextWriterTag.P);
         writer.AddTag(HtmlTextWriterTag.B, "Message: ");
         writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestMessage));
         writer.RenderEndTag(); //P
         writer.RenderBeginTag(HtmlTextWriterTag.P);
         writer.AddTag(HtmlTextWriterTag.B, "Stack trace: ");
         writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestStackTrace));
         writer.RenderEndTag(); //P
     }
     else
     {
         writer.Write("Test was successful, there is no failure message");
     }
     writer.RenderEndTag();//DIV
     return(writer);
 }
Ejemplo n.º 17
0
        public static string GetMailBody(NunitGoTest nunitGoTest, bool addLinks, 
            bool isEventEmail = false, string eventName = "", TestEvent previousRunEvent = null)
        {
            var strWr = new StringWriter();
            using (var writer = new HtmlTextWriter(strWr))
            {
                writer.Write("<!DOCTYPE html>");
                writer.Write(Environment.NewLine);
                writer.RenderBeginTag(HtmlTextWriterTag.Head);
                writer.Tag(HtmlTextWriterTag.Meta, new Dictionary<string, string>
                {
                    {"http-equiv", "X-UA-Compatible"},
                    {"content", @"IE=edge"},
                    {"charset", "utf-8"}
                });
                writer.Tag(HtmlTextWriterTag.Title, "NUnitGo Email");
                writer.Tag(HtmlTextWriterTag.Style, new Dictionary<HtmlTextWriterAttribute, string>
                {
                    {HtmlTextWriterAttribute.Type, @"text/css"}
                });
                writer.Tag(HtmlTextWriterTag.Link, new Dictionary<HtmlTextWriterAttribute, string>
                {
                    {HtmlTextWriterAttribute.Rel, @"stylesheet"},
                    {HtmlTextWriterAttribute.Type, @"text/css"}
                });
                writer.RenderEndTag(); //HEAD

                writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, Colors.White);
                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddStyleAttribute("border", "10px solid " + Colors.TestBorderColor);
                writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0px");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "Tahoma,Verdana,Segoe,sans-serif");
                writer.RenderBeginTag(HtmlTextWriterTag.Body);

                writer.AddStyleAttribute("box-sizing", "border-box");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Overflow, "auto");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Top, "0%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "test-window");
                writer.AddAttribute(HtmlTextWriterAttribute.Title, "Test");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddAttribute(HtmlTextWriterAttribute.Id, nunitGoTest.Guid.ToString());
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test full name: ");
                writer.Write(nunitGoTest.FullName);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test name: ");
                writer.Write(nunitGoTest.Name);
                writer.RenderEndTag(); //P

                if (isEventEmail && previousRunEvent != null)
                {
                    var currentEvent = nunitGoTest.Events.First(x => x.Name.Equals(eventName));
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Event name: ");
                    writer.Write(currentEvent.Name);
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, string.Format("Current duration (event finished at {0}): ", currentEvent.Finished));
                    writer.Write(TimeSpan.FromSeconds(currentEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, string.Format("Previous duration (event finished at {0}): ", previousRunEvent.Finished));
                    writer.Write(TimeSpan.FromSeconds(previousRunEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Difference: ");
                    writer.Write(TimeSpan.FromSeconds(currentEvent.Duration - previousRunEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                }

                writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, nunitGoTest.GetColor());
                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.RenderBeginTag(HtmlTextWriterTag.B);
                writer.Write("Test result: ");
                writer.RenderEndTag(); //B
                writer.Write(nunitGoTest.Result);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test duration: ");
                writer.Write(TimeSpan.FromSeconds(nunitGoTest.TestDuration).ToString(@"hh\:mm\:ss\:fff"));
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Time period: ");
                var start = nunitGoTest.DateTimeStart.ToString("dd.MM.yy HH:mm:ss.fff");
                var end = nunitGoTest.DateTimeFinish.ToString("dd.MM.yy HH:mm:ss.fff");
                writer.Write(start + " - " + end);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Screenshots: ");
                writer.Write(nunitGoTest.Screenshots.Count);
                writer.RenderEndTag(); //P

                var screens = nunitGoTest.Screenshots.OrderBy(x => x.Date);
                foreach (var screenshot in screens)
                {
                    writer.Write("Screenshot (Date: " + screenshot.Date.ToString("dd.MM.yy HH:mm:ss.fff") + "):");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "inherited");
                    writer.AddAttribute(HtmlTextWriterAttribute.Src, @"cid:" + screenshot.Name);
                    writer.AddAttribute(HtmlTextWriterAttribute.Alt, screenshot.Name);
                    writer.RenderBeginTag(HtmlTextWriterTag.Img);
                    writer.RenderEndTag();//IMG
                    writer.RenderEndTag();//DIV
                }

                if (!nunitGoTest.IsSuccess())
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Stack trace: ");
                    writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestStackTrace));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Message: ");
                    writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestMessage));
                    writer.RenderEndTag(); //P
                }

                if (addLinks)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Test page: ");
                    writer.AddStyleAttribute("background", Colors.OpenLogsButtonBackground);
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.TextDecoration, "none !important");
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, nunitGoTest.TestHrefAbsolute);
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write(Environment.NewLine + "View on site");
                    writer.RenderEndTag(); //A
                    writer.RenderEndTag(); //P

                }

                writer.RenderEndTag(); //DIV
                writer.RenderEndTag(); //DIV

                writer.RenderEndTag(); //BODY

                writer.Write(Environment.NewLine);
                writer.Write("</html>");
                writer.Write(Environment.NewLine);

            }

            return strWr.ToString();
        }
Ejemplo n.º 18
0
 public static string GetMailSubject(NunitGoTest nunitGoTest, bool isEventEmail = false, string eventName = "")
 {
     if (isEventEmail)
     {
         return string.Format("Test '{0}' has wrong event duration! Event '{1}'",
             nunitGoTest.Name,
             nunitGoTest.Events.First(x => x.Name.Equals(eventName)).Name);
     }
     return nunitGoTest.IsSuccess()
         ? string.Format("Test '{0}' was finished successfully", nunitGoTest.Name)
         : (nunitGoTest.IsFailed()
         ? string.Format("Test '{0}' was failed", nunitGoTest.Name)
         : (nunitGoTest.IsBroken()
         ? string.Format("Test '{0}' was broken", nunitGoTest.Name)
         : (nunitGoTest.IsIgnored()
         ? string.Format("Test '{0}' was ignored", nunitGoTest.Name)
         : (nunitGoTest.IsInconclusive()
         ? string.Format("Test '{0}' is inconclusive", nunitGoTest.Name)
         : string.Format("Test '{0}' was not successfully finished", nunitGoTest.Name)))));
 }
Ejemplo n.º 19
0
        public NunitTestHtml(NunitGoTest nunitGoTest, string testOutput = "")
        {
            Style       = GetStyle();
            ResultColor = nunitGoTest.GetColor();

            var strWr = new StringWriter();

            using (var writer = new HtmlTextWriter(strWr))
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Left, "0%");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "test-window");
                writer.AddAttribute(HtmlTextWriterAttribute.Title, Title);
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.WithAttr(HtmlTextWriterAttribute.Id, Id)
                .Tag(HtmlTextWriterTag.Div, () => writer
                     .Css(HtmlTextWriterStyle.TextAlign, "center")
                     .Css(HtmlTextWriterStyle.BackgroundColor, Colors.TestBorderColor)
                     .Css("padding", "20px")
                     .Css("margin", "0")
                     .CssShadow("0 0 20px -5px black")
                     .Tag(HtmlTextWriterTag.H2, () => writer
                          .Text($"{nunitGoTest.Name}. Result: ")
                          .Css("padding", "10px")
                          .Css(HtmlTextWriterStyle.BackgroundColor, ResultColor)
                          .Tag(HtmlTextWriterTag.Span, nunitGoTest.Result))
                     .Css("float", "right")
                     .Css("padding", "10px")
                     .Tag(HtmlTextWriterTag.Div, () => writer
                          .DangerButton("Back", "./../../" + Output.Files.TestListFile))
                     .Css("table-layout", "fixed")
                     .Css("word-break", "break-all")
                     .Css(HtmlTextWriterStyle.Width, "100%")
                     .Css(HtmlTextWriterStyle.BackgroundColor, Colors.BodyBackground)
                     .Css("border-spacing", "0")
                     .CssShadow("0 0 20px 0 " + Colors.TestBorderColor)
                     .Tag(HtmlTextWriterTag.Table, () => writer
                          .Css(HtmlTextWriterStyle.Width, "50%")
                          .Tag(HtmlTextWriterTag.Col)
                          .Css(HtmlTextWriterStyle.Width, "50%")
                          .Tag(HtmlTextWriterTag.Col)
                          .Tag(HtmlTextWriterTag.Tr, () => writer
                               .Css(HtmlTextWriterStyle.Width, "50%")
                               .Css(HtmlTextWriterStyle.BackgroundColor, Colors.White)
                               .Tag(HtmlTextWriterTag.Td, () => writer
                                    .AddTestResult(nunitGoTest))
                               .Css(HtmlTextWriterStyle.Width, "50%")
                               .Css(HtmlTextWriterStyle.BackgroundColor, Colors.White)
                               .Tag(HtmlTextWriterTag.Td, () => writer
                                    .AddTestHistory(nunitGoTest))
                               ))
                     .WithAttr(HtmlTextWriterAttribute.Id, "tabs-container")
                     .Tag(HtmlTextWriterTag.Div, () => writer
                          .WithAttr(HtmlTextWriterAttribute.Class, "tabs-menu")
                          .Tag(HtmlTextWriterTag.Ul, () => writer
                               .WithAttr(HtmlTextWriterAttribute.Class, "current")
                               .Tag(HtmlTextWriterTag.Li, () => writer
                                    .WithAttr(HtmlTextWriterAttribute.Href, "#test-screenshots-href")
                                    .Tag(HtmlTextWriterTag.A, "Screenshots"))
                               .Tag(HtmlTextWriterTag.Li, () => writer
                                    .WithAttr(HtmlTextWriterAttribute.Href, "#test-failure-href")
                                    .Tag(HtmlTextWriterTag.A, "Failure"))
                               .Tag(HtmlTextWriterTag.Li, () => writer
                                    .WithAttr(HtmlTextWriterAttribute.Href, "#test-environment-href")
                                    .Tag(HtmlTextWriterTag.A, "Test environment"))
                               .Tag(HtmlTextWriterTag.Li, () => writer
                                    .WithAttr(HtmlTextWriterAttribute.Href, "#test-output-href")
                                    .Tag(HtmlTextWriterTag.A, "Output"))
                               .Tag(HtmlTextWriterTag.Li, () => writer
                                    .WithAttr(HtmlTextWriterAttribute.Href, "#test-events-href")
                                    .Tag(HtmlTextWriterTag.A, "Test events"))
                               )
                          .WithAttr(HtmlTextWriterAttribute.Class, "test-tab")
                          .Tag(HtmlTextWriterTag.Div, () => writer
                               .WithAttr(HtmlTextWriterAttribute.Id, "test-screenshots-href")
                               .WithAttr(HtmlTextWriterAttribute.Class, "tab-content")
                               .Tag(HtmlTextWriterTag.Div, () => writer
                                    .AddScreenshots(nunitGoTest))
                               .WithAttr(HtmlTextWriterAttribute.Id, "test-failure-href")
                               .WithAttr(HtmlTextWriterAttribute.Class, "tab-content")
                               .Tag(HtmlTextWriterTag.Div, () => writer
                                    .AddFailure(nunitGoTest))
                               .WithAttr(HtmlTextWriterAttribute.Id, "test-environment-href")
                               .WithAttr(HtmlTextWriterAttribute.Class, "tab-content")
                               .Tag(HtmlTextWriterTag.Div, () => writer
                                    .AddEnvironment())
                               .WithAttr(HtmlTextWriterAttribute.Id, "test-output-href")
                               .WithAttr(HtmlTextWriterAttribute.Class, "tab-content")
                               .Tag(HtmlTextWriterTag.Div, () => writer
                                    .AddOutput(nunitGoTest, testOutput))
                               .WithAttr(HtmlTextWriterAttribute.Id, "test-events-href")
                               .WithAttr(HtmlTextWriterAttribute.Class, "tab-content")
                               .Tag(HtmlTextWriterTag.Div, () => writer
                                    .AddTestEvents(nunitGoTest)))
                          )
                     );

                writer.RenderEndTag(); //DIV
            }

            HtmlCode = strWr.ToString();
        }
Ejemplo n.º 20
0
        public static string GetMailBody(NunitGoTest nunitGoTest, bool addLinks,
                                         bool isEventEmail = false, string eventName = "", TestEvent previousRunEvent = null)
        {
            var strWr = new StringWriter();

            using (var writer = new HtmlTextWriter(strWr))
            {
                writer.Write("<!DOCTYPE html>");
                writer.Write(Environment.NewLine);
                writer.RenderBeginTag(HtmlTextWriterTag.Head);
                writer.Tag(HtmlTextWriterTag.Meta, new Dictionary <string, string>
                {
                    { "http-equiv", "X-UA-Compatible" },
                    { "content", @"IE=edge" },
                    { "charset", "utf-8" }
                });
                writer.Tag(HtmlTextWriterTag.Title, "NUnitGo Email");
                writer.Tag(HtmlTextWriterTag.Style, new Dictionary <HtmlTextWriterAttribute, string>
                {
                    { HtmlTextWriterAttribute.Type, @"text/css" }
                });
                writer.Tag(HtmlTextWriterTag.Link, new Dictionary <HtmlTextWriterAttribute, string>
                {
                    { HtmlTextWriterAttribute.Rel, @"stylesheet" },
                    { HtmlTextWriterAttribute.Type, @"text/css" }
                });
                writer.RenderEndTag(); //HEAD

                writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, Colors.White);
                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddStyleAttribute("border", "10px solid " + Colors.TestBorderColor);
                writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0px");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "Tahoma,Verdana,Segoe,sans-serif");
                writer.RenderBeginTag(HtmlTextWriterTag.Body);

                writer.AddStyleAttribute("box-sizing", "border-box");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Overflow, "auto");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Top, "0%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "test-window");
                writer.AddAttribute(HtmlTextWriterAttribute.Title, "Test");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px");
                writer.AddAttribute(HtmlTextWriterAttribute.Id, nunitGoTest.Guid.ToString());
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test full name: ");
                writer.Write(nunitGoTest.FullName);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test name: ");
                writer.Write(nunitGoTest.Name);
                writer.RenderEndTag(); //P

                if (isEventEmail && previousRunEvent != null)
                {
                    var currentEvent = nunitGoTest.Events.First(x => x.Name.Equals(eventName));
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Event name: ");
                    writer.Write(currentEvent.Name);
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, string.Format("Current duration (event finished at {0}): ", currentEvent.Finished));
                    writer.Write(TimeSpan.FromSeconds(currentEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, string.Format("Previous duration (event finished at {0}): ", previousRunEvent.Finished));
                    writer.Write(TimeSpan.FromSeconds(previousRunEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Difference: ");
                    writer.Write(TimeSpan.FromSeconds(currentEvent.Duration - previousRunEvent.Duration).ToString(@"hh\:mm\:ss\:fff"));
                    writer.RenderEndTag(); //P
                }

                writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, nunitGoTest.GetColor());
                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.RenderBeginTag(HtmlTextWriterTag.B);
                writer.Write("Test result: ");
                writer.RenderEndTag(); //B
                writer.Write(nunitGoTest.Result);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Test duration: ");
                writer.Write(TimeSpan.FromSeconds(nunitGoTest.TestDuration).ToString(@"hh\:mm\:ss\:fff"));
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Time period: ");
                var start = nunitGoTest.DateTimeStart.ToString("dd.MM.yy HH:mm:ss.fff");
                var end   = nunitGoTest.DateTimeFinish.ToString("dd.MM.yy HH:mm:ss.fff");
                writer.Write(start + " - " + end);
                writer.RenderEndTag(); //P

                writer.RenderBeginTag(HtmlTextWriterTag.P);
                writer.AddTag(HtmlTextWriterTag.B, "Screenshots: ");
                writer.Write(nunitGoTest.Screenshots.Count);
                writer.RenderEndTag(); //P

                var screens = nunitGoTest.Screenshots.OrderBy(x => x.Date);
                foreach (var screenshot in screens)
                {
                    writer.Write("Screenshot (Date: " + screenshot.Date.ToString("dd.MM.yy HH:mm:ss.fff") + "):");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "inherited");
                    writer.AddAttribute(HtmlTextWriterAttribute.Src, @"cid:" + screenshot.Name);
                    writer.AddAttribute(HtmlTextWriterAttribute.Alt, screenshot.Name);
                    writer.RenderBeginTag(HtmlTextWriterTag.Img);
                    writer.RenderEndTag(); //IMG
                    writer.RenderEndTag(); //DIV
                }

                if (!nunitGoTest.IsSuccess())
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Stack trace: ");
                    writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestStackTrace));
                    writer.RenderEndTag(); //P
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Message: ");
                    writer.Write(NunitTestHtml.GenerateTxtView(nunitGoTest.TestMessage));
                    writer.RenderEndTag(); //P
                }

                if (addLinks)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.P);
                    writer.AddTag(HtmlTextWriterTag.B, "Test page: ");
                    writer.AddStyleAttribute("background", Colors.OpenLogsButtonBackground);
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.TextDecoration, "none !important");
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, nunitGoTest.TestHrefAbsolute);
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write(Environment.NewLine + "View on site");
                    writer.RenderEndTag(); //A
                    writer.RenderEndTag(); //P
                }

                writer.RenderEndTag(); //DIV
                writer.RenderEndTag(); //DIV

                writer.RenderEndTag(); //BODY

                writer.Write(Environment.NewLine);
                writer.Write("</html>");
                writer.Write(Environment.NewLine);
            }

            return(strWr.ToString());
        }
Ejemplo n.º 21
0
 public static void SaveAsXml(this NunitGoTest test, string fullPath)
 {
     test.Save(fullPath);
 }