private void StartFixture(HookBinding hook, string containerId) { if (hook.HookType.ToString().StartsWith("Before")) { allure.StartBeforeFixture(containerId, PluginHelper.NewId(), PluginHelper.GetFixtureResult(hook)); } else { allure.StartAfterFixture(containerId, PluginHelper.NewId(), PluginHelper.GetFixtureResult(hook)); } }
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); }