Untitled
unknown
plain_text
9 months ago
2.6 kB
7
Indexable
using System;
using TechTalk.SpecFlow;
using Allure.Commons;
using SAPAutomation.utils;
namespace SAPAutomation.steps
{
[Binding]
public class Hooks
{
private readonly ScenarioContext _scenarioContext;
private readonly SapHelper sapHelper = new SapHelper();
private const string TestUuidKey = "allureTestUuid"; // Key for storing the UUID in ScenarioContext
public Hooks(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
[BeforeScenario]
public void BeforeScenario()
{
Console.WriteLine($"[Allure] Starting Test: {_scenarioContext.ScenarioInfo.Title}");
string testUuid = Guid.NewGuid().ToString();
_scenarioContext[TestUuidKey] = testUuid; // Store UUID in context
var testResult = new TestResult
{
uuid = testUuid,
name = _scenarioContext.ScenarioInfo.Title,
start = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
};
// Ensure Allure initializes correctly
AllureLifecycle.Instance.StartTestCase(testResult);
}
[AfterScenario]
public void AfterScenario()
{
Console.WriteLine($"[Allure] Finished Test: {_scenarioContext.ScenarioInfo.Title}");
if (!_scenarioContext.TryGetValue(TestUuidKey, out string testUuid))
{
Console.WriteLine("[Allure] Error: Test UUID not found in ScenarioContext.");
return;
}
// Update test result status
AllureLifecycle.Instance.UpdateTestCase(testUuid, tc =>
{
tc.stop = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
if (_scenarioContext.TestError != null)
{
tc.status = Status.failed;
tc.statusDetails = new StatusDetails
{
message = _scenarioContext.TestError.Message,
trace = _scenarioContext.TestError.StackTrace
};
}
else
{
tc.status = Status.passed;
}
});
// Finalize test case in Allure
AllureLifecycle.Instance.StopTestCase(testUuid);
AllureLifecycle.Instance.WriteTestCase(testUuid);
// Close the SAP session
sapHelper.CloseSAP();
}
}
}
Editor is loading...
Leave a Comment