Varun Patil
Varun Patil

Reputation: 165

Karate - How to add Junit RunListener to KarateParallel Runner

I am trying to add RunListener to Karate ParallelRunner class. I have done this for Karate runner using @Karate.class and add a custom runner. I am writing the data to infuxdb and generating reports is grafana, I am able to successfully achieve it in karate runner. Below is the code snippet for the same. I am running my karate runner using this custom runner where I have added this listener. I want to achieve the same for parallel runner.

 @Override
public void run(RunNotifier notifier) {
    notifier.addListener(new ExecutionListener());
    super.run(notifier);

Upvotes: 2

Views: 272

Answers (2)

Varun Patil
Varun Patil

Reputation: 165

Thanks for your suggestion peter. I was able to send scenario and test run details to influx db in order to generate reports in grafana. I just made use of karate results extracted all the values required and called it in Junit @After.

 public void writeScenarioResults(List<ScenarioResult> results){
    String status;
    for (ScenarioResult a:results) {
        status=((a.isFailed()==true)?"FAIL":"PASS");
        gb.sendTestMethodStatus(a.getScenario().getName(),status,build);
    }
}

Upvotes: 1

Peter Thomas
Peter Thomas

Reputation: 58058

This is not directly possible, the parallel runner is a very specific implementation and has nothing to do with JUnit by design.

Since you seem to be experienced in adding JUnit listeners and the like, you can refer to this code in case it gives you any ideas.

CliExecutionHook.java.

For more details about the "ExecutionHook" refer this: https://github.com/intuit/karate/issues/970#issuecomment-557443551

But let me say I think you are un-necessary trying to put effort into reports that will not really get you any benefit in the long run except for "looking good" :) And if you feel something needs to change in Karate, please contribute, it is open-source.

Upvotes: 2

Related Questions