I’m logging the currently executing Scenario in a hook like so:
@Before(order=2) public void logScenarioStarting(Scenario scenario) { logger.debug("Starting scenario {}.", scenario.getName(); }
But, how do I get the name of the Step? I mean, the Given
, When
, Then
lines.
Advertisement
Answer
You would need to implement the ConcurrentEventListener interface and setup the handlers for the event you are looking for, in your case the TestStepStarted event
@Override public void setEventPublisher(EventPublisher publisher) { publisher.registerHandlerFor(TestStepStarted.class, this::handleTestStepStarted); publisher.registerHandlerFor(TestStepFinished.class, this::handleTestStepFinished); }
Then implement the method handTestStepStarted
private void handleTestStepStarted(TestStepStarted testStepStartedEvent) { if(testStepStartedEvent.getTestStep() instanceof PickleStepTestStep) { PickleStepTestStep pickleStepTestStep = (PickleStepTestStep)testStepStartedEvent.getTestStep(); //do what you want with it } }