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; }
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; }
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; }
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; }
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; }
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; }
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(); }
private void Flush() { _guid = Guid.Empty; _nunitGoTest = new NunitGoTest(); _start = default(DateTime); _finish = default(DateTime); NunitGo.TearDown(); }
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(); }