public void StepWithAttach() { var path = Guid.NewGuid().ToString(); File.WriteAllText(path, "hi there"); allure.AddAttachment(path); }
public void AfterScenarioSteps() { if (_scenarioContext.TestError != null) { foreach (var failedScreen in Directory.GetFiles(FileProvider.GetFailedScreensDirectory())) { _allureLifecycle.AddAttachment(failedScreen); } _allureLifecycle.AddAttachment(MakeScreenshot()); } Browser.GetInstance().Quit(); _allureLifecycle.AddAttachment(Logger.GetLogLocation()); }
public static void Equal(string expected, string actual, string passedMessage = "Assert passed", string failedMessage = "Assert failed") { if (!expected.Equals(actual)) { string screenshotName = BrowserContext.Instance.Browser.TakeScreenshot(); Logger.Error($"{failedMessage}. Actual '{actual}' is different from expected '{expected}'."); Logger.Info($"Screenshot saved to {screenshotName.Replace(@"\\", @"\")}"); allure.AddAttachment(screenshotName); } else { Logger.Info($"{passedMessage}. Actual equals to expected '{expected}'."); } }
private static void StartStep(StepInfo stepInfo, string containerId) { var stepResult = new StepResult { name = $"{stepInfo.StepDefinitionType} {stepInfo.Text}" }; allure.StartStep(containerId, AllureHelper.NewId(), stepResult); if (stepInfo.Table != null) { var csvFile = $"{Guid.NewGuid().ToString()}.csv"; using (var csv = new CsvWriter(File.CreateText(csvFile))) { foreach (var item in stepInfo.Table.Header) { csv.WriteField(item); } csv.NextRecord(); foreach (var row in stepInfo.Table.Rows) { foreach (var item in row.Values) { csv.WriteField(item); } csv.NextRecord(); } } allure.AddAttachment("table", "text/csv", csvFile); } }
public static void FinalizarTeste() { if (_scenarioContext != null && _scenarioContext.TestError != null) { var path = _elementUtils.TirarPrint(); _allureLifecycle.AddAttachment(path); } AllureHackForScenarioOutlineTests(); _elementUtils.Finalizar(); }
public void TearDown() { if (_scenarioContext.TestError != null) { var path = MakeScreenshot(_driver); _allureLifecycle.AddAttachment(path); } _driver.Close(); AllureHackForScenarioOutlineTests(); }
public void TearDown() { if (ScenarioContext.TestError != null) { var path = Utils.MakeScreenShot(Driver); AllureLifecycle.AddAttachment(path); } Driver.Quit(); Driver.Dispose(); AllureHackForScenarioOutlineTests(); }
private static void StartStep(StepInstance stepInstance) { var stepResult = new StepResult() { name = $"{stepInstance.Keyword} {stepInstance.Text}" }; var table = stepInstance.TableArgument; // add step params for 1 row table if (table != null && table.RowCount == 1) { var paramNames = table.Header.ToArray(); var parameters = new List <Parameter>(); for (int i = 0; i < table.Header.Count; i++) { parameters.Add(new Parameter() { name = paramNames[i], value = table.Rows[0][i] }); } stepResult.parameters = parameters; } allure.StartStep(AllureHelper.NewId(), stepResult); // add csv table for multi-row table if (table != null && table.RowCount != 1) { var csvFile = $"{Guid.NewGuid().ToString()}.csv"; using (var csv = new CsvWriter(File.CreateText(csvFile))) { foreach (var item in table.Header) { csv.WriteField(item); } csv.NextRecord(); foreach (var row in table.Rows) { foreach (var item in row.Values) { csv.WriteField(item); } csv.NextRecord(); } } allure.AddAttachment("table", "text/csv", csvFile); } }
public static void TakeScreenshot(this IWebDriver driver, string path) { Directory.CreateDirectory(path); var testName = TestContext.CurrentContext.Test.Name; var correctTestName = string.Join("", testName.Split(Path.GetInvalidFileNameChars())); var fileName = $"{Path.Combine(path, correctTestName)}_{DateTime.Now.ToString("yyyy.MM.dd HH.mm.ss")}.png"; var screenShot = ((ITakesScreenshot)driver).GetScreenshot(); screenShot.SaveAsFile(fileName, ScreenshotImageFormat.Png); AllureLifecycle cycle = AllureLifecycle.Instance; cycle.AddAttachment(fileName, $"{correctTestName}"); }
public void TearDown() { if (IsUiTest()) { if (_scenarioContext.TestError != null) { var path = WebElementsUtils.MakeScreenshot(_driver); _allureLifecycle.AddAttachment(path); } Logger.Info("WebDriver termination."); _driver.DriverTermination(); } AllureHackForScenarioOutlineTests(); }
public override void TearDown() { _allure.UpdateTestCase(test => { var packageName = TestContext.CurrentContext.Test.ClassName; var className = packageName.Substring(packageName.LastIndexOf('.') + 1); test.labels.AddRange(new List <Label> { Label.Suite(TestRunner.FeatureContext?.FeatureInfo.Title.Trim()), Label.Feature(TestRunner.FeatureContext?.FeatureInfo.Title), Label.TestClass(className), Label.Package(packageName) }); if (Driver != null) { test.labels.Add(Label.ParentSuite(BrowserName)); try { test.parameters.Add(new Parameter { name = "Screen", value = string.Concat(Driver.Manage().Window.Size.Width, "x", Driver.Manage().Window.Size.Height) }); } catch (Exception) { // } } else { test.labels.Add(Label.ParentSuite(test.statusDetails.message)); } if (TestRunner.ScenarioContext != null) { var tags = PluginHelper.GetTags(TestRunner.FeatureContext?.FeatureInfo, TestRunner.ScenarioContext?.ScenarioInfo); test.labels.Add(Label.SubSuite(TestRunner.ScenarioContext?.ScenarioInfo.Title)); test.labels.AddRange(tags.Item1); test.links = tags.Item2; } }); if (TestContext.CurrentContext.Result.Outcome.Status != TestStatus.Passed) { if (Driver != null) { try { var screen = ((ITakesScreenshot)Driver).GetScreenshot(); _allure.AddAttachment("ScreenShot", "image/png", screen.AsByteArray); } catch (Exception e) { _allure.UpdateTestCase(test => test.parameters.Add(new Parameter { name = "ScreenShotError", value = e.Message })); } } } else { _allure.UpdateTestCase(x => x.status = Status.passed); } _allure.StopTestCase(TestResultId); _allure.WriteTestCase(TestResultId); _allure.StartAfterFixture(TestContainerId, Guid.NewGuid().ToString(), new FixtureResult()); if (Driver != null) { if (Driver is PaidWebDriver driver) { _allure.WrapInStep(UpdateApi, $"Updating {driver.Name} results through API"); } _allure.WrapInStep(KillWebDriver, $"Killing {BrowserName}"); } _allure.StopFixture(fixture => { fixture.stage = Stage.finished; }); _allure.UpdateTestContainer(TestContainerId, testContainer => testContainer.stop = DateTimeOffset.Now.ToUnixTimeMilliseconds()); _allure.StopTestContainer(TestContainerId); _allure.WriteTestContainer(TestContainerId); }
private void StartStep(StepInstance stepInstance) { var stepResult = new StepResult { name = $"{stepInstance.Keyword} {stepInstance.Text}" }; // parse MultilineTextArgument if (stepInstance.MultilineTextArgument != null) { allure.AddAttachment( "multiline argument", "text/plain", Encoding.ASCII.GetBytes(stepInstance.MultilineTextArgument), ".txt"); } var table = stepInstance.TableArgument; bool isTableProcessed = (table == null); // parse table as step params if (table != null) { var header = table.Header.ToArray(); if (pluginConfiguration.ConvertToParameters) { var parameters = new List <Parameter>(); // convert 2 column table into param-value if (table.Header.Count == 2) { var paramNameMatch = pluginConfiguration.ParamNameRegex?.IsMatch(header[0]); var paramValueMatch = pluginConfiguration.ParamValueRegex?.IsMatch(header[1]); if (paramNameMatch.HasValue && paramValueMatch.HasValue && paramNameMatch.Value && paramValueMatch.Value) { for (int i = 0; i < table.RowCount; i++) { parameters.Add(new Parameter { name = table.Rows[i][0], value = table.Rows[i][1] }); } isTableProcessed = true; } } // add step params for 1 row table else if (table.RowCount == 1) { for (int i = 0; i < table.Header.Count; i++) { parameters.Add(new Parameter { name = header[i], value = table.Rows[0][i] }); } isTableProcessed = true; } stepResult.parameters = parameters; } } allure.StartStep(AllureHelper.NewId(), stepResult); // add csv table for multi-row table if was not processed as params already if (!isTableProcessed) { using (var sw = new StringWriter()) using (var csv = new CsvWriter(sw)) { foreach (var item in table.Header) { csv.WriteField(item); } csv.NextRecord(); foreach (var row in table.Rows) { foreach (var item in row.Values) { csv.WriteField(item); } csv.NextRecord(); } allure.AddAttachment("table", "text/csv", Encoding.ASCII.GetBytes(sw.ToString()), ".csv"); } } }
private void StartStep(StepInstance stepInstance) { var stepResult = new StepResult { name = $"{stepInstance.Keyword} {stepInstance.Text}" }; // parse MultilineTextArgument if (stepInstance.MultilineTextArgument != null) { Allure.AddAttachment( "multiline argument", "text/plain", Encoding.ASCII.GetBytes(stepInstance.MultilineTextArgument), ".txt"); } var table = stepInstance.TableArgument; var isTableProcessed = table == null; // parse table as step params if (table != null) { var header = table.Header.ToArray(); if (PluginConfiguration.stepArguments.convertToParameters) { var parameters = new List <Parameter>(); // convert 2 column table into param-value if (table.Header.Count == 2) { var paramNameMatch = Regex.IsMatch(header[0], PluginConfiguration.stepArguments.paramNameRegex); var paramValueMatch = Regex.IsMatch(header[1], PluginConfiguration.stepArguments.paramValueRegex); if (paramNameMatch && paramValueMatch) { for (var i = 0; i < table.RowCount; i++) { parameters.Add(new Parameter { name = table.Rows[i][0], value = table.Rows[i][1] }); } isTableProcessed = true; } } // add step params for 1 row table else if (table.RowCount == 1) { for (var i = 0; i < table.Header.Count; i++) { parameters.Add(new Parameter { name = header[i], value = table.Rows[0][i] }); } isTableProcessed = true; } stepResult.parameters = parameters; } } Allure.StartStep(Guid.NewGuid().ToString(), stepResult); }