Untitled
unknown
plain_text
8 months ago
4.2 kB
8
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