void (Result result) { stepCount++; Step currentStep = currentSteps.poll(); outCommand(TEMPLATE_TEST_STARTED, true, getCurrentTime(), uri + ":" + currentStep.getLine(), getName(currentStep)); String stepFullName = getName(currentStep); if (result.getStatus().equals(Result.FAILED)) { failedStepCount++; scenarioPassed = false; String fullMessage = result.getErrorMessage().replace("\r", "").replace("\t", " "); String[] messageInfo = fullMessage.split("\n", 2); final String message; final String details; if (messageInfo.length == 2) { message = messageInfo[0].trim(); details = messageInfo[1].trim(); } else { message = fullMessage; details = ""; } outCommand(TEMPLATE_TEST_FAILED, true, getCurrentTime(), details, message, stepFullName, ""); } else if (result.getStatus().equals(RESULT_STATUS_PENDING)) { pendingStepCount++; scenarioPassed = false; outCommand(TEMPLATE_TEST_PENDING, true, stepFullName, getCurrentTime()); } else if (result.equals(Result.UNDEFINED)) { undefinedStepCount++; scenarioPassed = false; String message = "Undefined step: " + getName(currentStep); String details = ""; outCommand(TEMPLATE_TEST_FAILED, true, getCurrentTime(), details, message, stepFullName, ""); } else if (result.equals(Result.SKIPPED)) { skippedStepCount++; scenarioPassed = false; outCommand(TEMPLATE_TEST_PENDING, true, stepFullName, getCurrentTime()); } else { passedStepCount++; } final String currentTime = getCurrentTime(); final Long duration = result.getDuration(); long durationInSeconds = (duration == null ? 0 : duration.longValue()) / MILLION; outCommand(TEMPLATE_TEST_FINISHED, true, currentTime, String.valueOf(durationInSeconds), stepFullName); }