Очарование: Как сделать родительские шаги неудачными, если подшаг неудачен? - PullRequest
3 голосов
/ 21 января 2020

У меня есть прослушиватель Allure, который сообщает обо всех утверждениях селенида, но в случае сбоя только подшаг помечается как сбойный. и неясно из отчета

Слушатель:

@Override
public void beforeEvent(final LogEvent event) {
    lifecycle.getCurrentTestCaseOrStep().ifPresent(parentUuid -> {
        final String uuid = UUID.randomUUID().toString();
        lifecycle.startStep(parentUuid, uuid, new StepResult().setName(event.toString()));
    });
}

@Override
public void afterEvent(final LogEvent event) {
    lifecycle.getCurrentTestCaseOrStep().ifPresent(parentUuid -> {
        switch (event.getStatus()) {
            case PASS:
                lifecycle.updateStep(step -> step.setStatus(Status.PASSED));
                break;
            case FAIL:
                if (saveScreenshots) {
                    getScreenshotBytes()
                            .ifPresent(bytes -> lifecycle.addAttachment("Screenshot", "image/png", "png", bytes));
                }
                if (savePageHtml) {
                    getPageSourceBytes()
                            .ifPresent(bytes -> lifecycle.addAttachment("Page source", "text/html", "html", bytes));
                }
                if (!logTypesToSave.isEmpty()) {
                    logTypesToSave
                        .forEach((logType, level) -> {
                            final byte[] content = getBrowserLogs(logType, level).getBytes(UTF_8);
                            lifecycle.addAttachment("Logs from: " + logType, "application/json", ".txt", content);
                            });
                }
                lifecycle.updateStep(stepResult -> {
                    stepResult.setStatus(getStatus(event.getError()).orElse(Status.BROKEN));
                    stepResult.setStatusDetails(getStatusDetails(event.getError()).orElse(new StatusDetails()));
                });
                break;
            default:
                LOGGER.warn("Step finished with unsupported status {}", event.getStatus());
                break;
        }
        lifecycle.stopStep();
    });
}

}

Снимок экрана отчета:

enter image description here As Вы можете видеть, что родительский шаг помечен как пройденный.

1 Ответ

0 голосов
/ 18 марта 2020

решил эту проблему, несколько раз провалив текущий шаг

Allure.getLifecycle().updateStep(stepResult -> stepResult.setStatus(Status.FAILED));
Allure.getLifecycle().stopStep();
Allure.getLifecycle().updateStep(stepResult -> stepResult.setStatus(Status.FAILED));
Allure.getLifecycle().stopStep();
Allure.getLifecycle().updateStep(stepResult -> stepResult.setStatus(Status.FAILED));
Allure.getLifecycle().stopStep();

не очень хороший способ выполнить работу, но он прекрасно работает для меня

полезное видео https://www.youtube.com/watch?v=d5gjK6hZHE4&feature=youtu.be если вы понимаете русский

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...