Untitled
unknown
plain_text
2 months ago
4.2 kB
7
Indexable
using Allure.Commons; using System; using TechTalk.SpecFlow; using SAPAutomation.utils; namespace SAPAutomation.steps { [Binding] public class Hooks { private readonly ScenarioContext _scenarioContext; private readonly FeatureContext _featureContext; private readonly SapHelper _sapHelper = new SapHelper(); private const string TestUuidKey = "AllureTestUuid"; private const string FeatureContainerKey = "AllureFeatureContainer"; public Hooks(ScenarioContext scenarioContext, FeatureContext featureContext) { _scenarioContext = scenarioContext; _featureContext = featureContext; } [BeforeFeature] public static void BeforeFeature(FeatureContext featureContext) { string containerId = Guid.NewGuid().ToString(); featureContext[FeatureContainerKey] = containerId; var container = new TestResultContainer { uuid = containerId, name = featureContext.FeatureInfo.Title }; AllureLifecycle.Instance.StartTestContainer(container); Console.WriteLine($"[Allure] Started container for feature: {featureContext.FeatureInfo.Title}"); } [BeforeScenario] public void BeforeScenario() { Console.WriteLine($"[Allure] Starting Test: {_scenarioContext.ScenarioInfo.Title}"); string testUuid = Guid.NewGuid().ToString(); _scenarioContext[TestUuidKey] = testUuid; var testResult = new TestResult { uuid = testUuid, name = _scenarioContext.ScenarioInfo.Title, start = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() }; AllureLifecycle.Instance.StartTestCase(testResult); // Attach test to feature container if (_featureContext.TryGetValue(FeatureContainerKey, out string featureContainerId)) { AllureLifecycle.Instance.UpdateTestContainer(featureContainerId, container => { container.children.Add(testUuid); }); } } [AfterScenario] public void AfterScenario() { Console.WriteLine($"[Allure] Finished Test: {_scenarioContext.ScenarioInfo.Title}"); if (_scenarioContext.TryGetValue(TestUuidKey, out string testUuid)) { if (_scenarioContext.TestError != null) { AllureLifecycle.Instance.UpdateTestCase(testUuid, tc => { tc.status = Status.failed; tc.statusDetails = new StatusDetails { message = _scenarioContext.TestError.Message }; }); } else { AllureLifecycle.Instance.UpdateTestCase(testUuid, tc => { tc.status = Status.passed; }); } AllureLifecycle.Instance.StopTestCase(testUuid); AllureLifecycle.Instance.WriteTestCase(testUuid); } else { Console.WriteLine("[Allure] ERROR: No Test UUID found in ScenarioContext."); } _sapHelper.CloseSAP(); } [AfterFeature] public static void AfterFeature(FeatureContext featureContext) { if (featureContext.TryGetValue(FeatureContainerKey, out string containerId)) { AllureLifecycle.Instance.StopTestContainer(containerId); AllureLifecycle.Instance.WriteTestContainer(containerId); Console.WriteLine($"[Allure] Closed container for feature: {featureContext.FeatureInfo.Title}"); } else { Console.WriteLine("[Allure] ERROR: No container context found in FeatureContext."); } } } }
Editor is loading...
Leave a Comment