Here is my reusable implementation using karate-1.0#retry-framework-experimental,
Results retryFailedTests(Results results) {
System.out.println("======== Retrying failed tests ========");
Results initialResults = results;
List<ScenarioResult> retryResult = results.getScenarioResults().filter(ScenarioResult::isFailed)
.parallel()
.map(scenarioResult -> initialResults.getSuite().retryScenario(scenarioResult.getScenario()))
.collect(Collectors.toList());
for (ScenarioResult scenarioResult : retryResult) {
results = results.getSuite().updateResults(scenarioResult);
}
return results;
}
This java function takes care of retrying failed scenarios in parallel. You can check karate-timeline.html
report to verify if the failed scenarios are retried in parallel.