Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Создаются attachemts но не прикрепляются к Allure репорту

screenshot
java
allure
Теги: #<Tag:0x00007f7b65486ba0> #<Tag:0x00007f7b65486a38> #<Tag:0x00007f7b654868f8>

(qa_in_gene_qa_in_gene) #1

Всем привет)
Такая проблема: создаются скриншоты для зафейленных тестов в папке allure-results, но они отсутствуют на странице allure-репорта
http://imgur.com/TSD0U0T

Из-за чего это может происходить?


(Alexey Lakovych) #2

Можете предоставить пример кода как вы его вызываете в тесте ?


(qa_in_gene_qa_in_gene) #3

@alexey_lakovych

@RunWith(Suite.class)
@Suite.SuiteClasses({CukesFeaturesRunner.class})

public class MainRun extends BaseStep {

@BeforeClass
public static void beforeSuite(){
    setUniqueValue(Common.generateRandomValue());
    setRandomString();
}

@Before
public static void setUp(){
    getCleanState();
}

@After
public static void tearDown(Scenario scenario){

    if(scenario.isFailed()) {
        byte [] screenshot = getSuite().getDriver().makeScreenshot();
        saveScreenshotForAllure(screenshot);
        scenario.embed(screenshot, "image/png");
    }
}

@AfterClass
public static void afterSuite(){
    getSuite().getDriver().quit();
}

@Attachment(value = "screenshot", type = "image/png")
private static byte[] saveScreenshotForAllure(byte[] screenshot){
    return screenshot;
}

}


(Alexey Lakovych) #4

Вы уверены в том что ваш @After отрабатывает после теста, а конкретно его условие scenario.isFailed()?
Сделайте вывод в консоль в данном блоке, или с помощью дебага проверьте.

  • ко всему у вас аттачмент стоит в аннотации After. Не уверен что он будет отображаться в тесте при таком случае.

(qa_in_gene_qa_in_gene) #5

@alexey_lakovych, точно уверен. Проверено: если тест проходит без ошибок - скриншота нет в папке allure-report; если тест фэйлится - создается скриншот


(Alexey Lakovych) #6

Значит вам нужно реализовать слушатель который будет цеплять скриншот к тесту. Аннотация @After не является тестом. Соответственно в тесте у вас нет никакого аттачмента.

Для проверки “работоспособности” в методе с аннотацией Test вызовите метод аттачмента. и посмотрите есть ли в отчете скриншот.


(qa_in_gene_qa_in_gene) #7

@alexey_lakovych, вы правы на счет аннотации @After - я добавил вызов метода аттачмента в один из степов сценария и скриншот появился в репорте:)

Я создал класс, который наследуется от RunListener’a.
Я попытался подключить его через конструктор CukesFeaturesRunner класса
( JUnitCore jUnitCore = new JUnitCore();
jUnitCore.addListener(new ExecutionListener())
Но логи, которые говорят, что листенер был не правильно подключен - логи не высвечиваются на консоли.

Не могли бы вы подсказать как правильно, подключить листенер в сьют в связке с кукумбером?

http://imgur.com/MR2PAog


(qa_in_gene_qa_in_gene) #8

Скорее всего через pom.xml в maven-surefire-plugin плагине.
По аналогии с AllureRunListener


(qa_in_gene_qa_in_gene) #9

@alexey_lakovych, благодарю за помощь, очень помогли:)