@Override public StepResult withStatusDetails(StatusDetails value) { setStatusDetails(value); return this; }
/** * @deprecated use set method. Scheduled to removal in 3.0 release. */ @Deprecated @Override public StepResult withStatusDetails(final StatusDetails value) { return setStatusDetails(value); }
@AfterThrowing(pointcut = "anyMethod() && withStepAnnotation()", throwing = "e") public void stepFailed(final Throwable e) { getLifecycle().updateStep(s -> s .setStatus(getStatus(e).orElse(Status.BROKEN)) .setStatusDetails(getStatusDetails(e).orElse(null))); getLifecycle().stopStep(); }
/** * Run provided {@link ThrowableRunnable} as step with given name. Takes no effect * if no test run at the moment. * * @param runnable the step's body. */ public static <T> T step(final ThrowableContextRunnable<T, StepContext> runnable) { final String uuid = UUID.randomUUID().toString(); getLifecycle().startStep(uuid, new StepResult().setName("step")); try { final T result = runnable.run(new DefaultStepContext(uuid)); getLifecycle().updateStep(uuid, step -> step.setStatus(Status.PASSED)); return result; } catch (Throwable throwable) { getLifecycle().updateStep(s -> s .setStatus(getStatus(throwable).orElse(Status.BROKEN)) .setStatusDetails(getStatusDetails(throwable).orElse(null))); ExceptionUtils.sneakyThrow(throwable); return null; } finally { getLifecycle().stopStep(uuid); } }
@Override public void onEvent(final LogEvent event) { lifecycle.getCurrentTestCase().ifPresent(uuid -> { final String stepUUID = UUID.randomUUID().toString(); lifecycle.startStep(stepUUID, new StepResult() .setName(event.toString()) .setStatus(Status.PASSED)); lifecycle.updateStep(stepResult -> stepResult.setStart(stepResult.getStart() - event.getDuration())); if (LogEvent.EventStatus.FAIL.equals(event.getStatus())) { if (saveScreenshots) { lifecycle.addAttachment("Screenshot", "image/png", "png", getScreenshotBytes()); } if (savePageHtml) { lifecycle.addAttachment("Page source", "text/html", "html", getPageSourceBytes()); } lifecycle.updateStep(stepResult -> { final StatusDetails details = ResultsUtils.getStatusDetails(event.getError()) .orElse(new StatusDetails()); stepResult.setStatus(ResultsUtils.getStatus(event.getError()).orElse(Status.BROKEN)); stepResult.setStatusDetails(details); }); } lifecycle.stopStep(stepUUID); }); }
protected void fireFixtureStep(final Match match, final Result result, final boolean isBefore) { final String uuid = md5(match.getLocation()); final StepResult stepResult = new StepResult() .setName(match.getLocation()) .setStatus(Status.fromValue(result.getStatus())) .setStart(System.currentTimeMillis() - result.getDuration()) .setStop(System.currentTimeMillis()); if (FAILED.equals(result.getStatus())) { final StatusDetails statusDetails = ResultsUtils.getStatusDetails(result.getError()).get(); stepResult.setStatusDetails(statusDetails); if (isBefore) { final TagParser tagParser = new TagParser(feature, scenario); statusDetails .setMessage("Before is failed: " + result.getError().getLocalizedMessage()) .setFlaky(tagParser.isFlaky()) .setMuted(tagParser.isMuted()) .setKnown(tagParser.isKnown()); lifecycle.updateTestCase(scenario.getId(), scenarioResult -> scenarioResult.setStatus(Status.SKIPPED) .setStatusDetails(statusDetails)); } } lifecycle.startStep(scenario.getId(), uuid, stepResult); lifecycle.stopStep(uuid); } }
protected void fireCanceledStep(final Step unimplementedStep) { final StepResult stepResult = new StepResult(); stepResult.setName(unimplementedStep.getName()) .setStart(System.currentTimeMillis()) .setStop(System.currentTimeMillis()) .setStatus(Status.SKIPPED) .setStatusDetails(new StatusDetails().setMessage("Unimplemented step")); lifecycle.startStep(scenario.getId(), getStepUuid(unimplementedStep), stepResult); lifecycle.stopStep(getStepUuid(unimplementedStep)); final StatusDetails statusDetails = new StatusDetails(); final TagParser tagParser = new TagParser(feature, scenario); statusDetails .setFlaky(tagParser.isFlaky()) .setMuted(tagParser.isMuted()) .setKnown(tagParser.isKnown()); lifecycle.updateTestCase(scenario.getId(), scenarioResult -> scenarioResult.setStatus(Status.SKIPPED) .setStatusDetails(statusDetails .setMessage("Unimplemented steps were found"))); }
private void handleHookStep(final TestStepFinished event) { final String uuid = getHookStepUuid(event.testStep); Consumer<StepResult> stepResult = result -> result.setStatus(translateTestCaseStatus(event.result)); if (!Status.PASSED.equals(translateTestCaseStatus(event.result))) { final StatusDetails statusDetails = getStatusDetails(event.result.getError()).get(); if (event.testStep.getHookType() == HookType.Before) { final TagParser tagParser = new TagParser(currentFeature, currentTestCase); statusDetails .setMessage("Before is failed: " + event.result.getError().getLocalizedMessage()) .setFlaky(tagParser.isFlaky()) .setMuted(tagParser.isMuted()) .setKnown(tagParser.isKnown()); lifecycle.updateTestCase(getTestCaseUuid(currentTestCase), scenarioResult -> scenarioResult.setStatus(Status.SKIPPED) .setStatusDetails(statusDetails)); } stepResult = result -> result .setStatus(translateTestCaseStatus(event.result)) .setStatusDetails(statusDetails); } lifecycle.updateStep(uuid, stepResult); lifecycle.stopStep(uuid); }
private void handleHookStep(final TestStepFinished event) { final String uuid = getHookStepUuid(event.testStep); Consumer<StepResult> stepResult = result -> result.setStatus(translateTestCaseStatus(event.result)); if (!Status.PASSED.equals(translateTestCaseStatus(event.result))) { final StatusDetails statusDetails = getStatusDetails(event.result.getError()).get(); final HookTestStep hookTestStep = (HookTestStep) event.testStep; if (hookTestStep.getHookType() == HookType.Before) { final TagParser tagParser = new TagParser(currentFeature, currentTestCase); statusDetails .setMessage("Before is failed: " + event.result.getError().getLocalizedMessage()) .setFlaky(tagParser.isFlaky()) .setMuted(tagParser.isMuted()) .setKnown(tagParser.isKnown()); lifecycle.updateTestCase(getTestCaseUuid(currentTestCase), scenarioResult -> scenarioResult.setStatus(Status.SKIPPED) .setStatusDetails(statusDetails)); } stepResult = result -> result .setStatus(translateTestCaseStatus(event.result)) .setStatusDetails(statusDetails); } lifecycle.updateStep(uuid, stepResult); lifecycle.stopStep(uuid); }