Exemplo n.º 1
0
        public void StepWithAttach()
        {
            var path = Guid.NewGuid().ToString();

            File.WriteAllText(path, "hi there");
            allure.AddAttachment(path);
        }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
 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);
            }
        }
Exemplo n.º 5
0
 public static void FinalizarTeste()
 {
     if (_scenarioContext != null && _scenarioContext.TestError != null)
     {
         var path = _elementUtils.TirarPrint();
         _allureLifecycle.AddAttachment(path);
     }
     AllureHackForScenarioOutlineTests();
     _elementUtils.Finalizar();
 }
Exemplo n.º 6
0
        public void TearDown()
        {
            if (_scenarioContext.TestError != null)
            {
                var path = MakeScreenshot(_driver);
                _allureLifecycle.AddAttachment(path);
            }

            _driver.Close();

            AllureHackForScenarioOutlineTests();
        }
Exemplo n.º 7
0
        public void TearDown()
        {
            if (ScenarioContext.TestError != null)
            {
                var path = Utils.MakeScreenShot(Driver);
                AllureLifecycle.AddAttachment(path);
            }

            Driver.Quit();
            Driver.Dispose();

            AllureHackForScenarioOutlineTests();
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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}");
        }
Exemplo n.º 10
0
        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");
                    }
            }
        }
Exemplo n.º 13
0
        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);
        }