Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Allure 2 - атачменти сохрянаються в allure-results но не крепяться в репорту. Иногда работает, иногда нет

maven
allure
testng
Теги: #<Tag:0x00007fedb97c7398> #<Tag:0x00007fedb97c7230> #<Tag:0x00007fedb97c70c8>

(Taras) #1

Проблема (Вопрос) заключается …
Очень странное поведение при собирании репорта.
В папку з результатами атачменти видни, правильного формата, файли откриваються, итд. После команди mvn allure:report иногда они атачаться к репорту, иногда нет.
Сами атачменти генеряться в testng лисенере, которий добавлен в surefire-plugin-е

Сам allure-testng добавлен в parent проекте для 3 мавеновских модулей, которие как депенденси добавлени в проект с тестами.

Я попытался сделать …
Поменять версии плагина, testng, aspectj, пробовал атачить через Allure.addAttachment(…), @Attachment аннотацию

Я залогал баг в гите Allure 2:

и прикрепил .zip с папкой репорта allure-results которая сгенерилась, - если ету папку натравить на mvn allure:report - атачменти не видни в репорте просто напросто.


При падении на ассертах от TestNG не прикрепляются скриншоты в Allure2
(Sergey Korol) #2

Сам я с таким не сталкивался, но чисто теоретически такое может происходить, если ваш screenshot taking event выполняется после stop test case Allure event. Т.е. на момент снятия скрина для Allure вы уже находитесь out of test scope.

И root cause тут скорее всего связан с тем, что TestNG не гарантирует порядок выполнения слушателей. Т.е. если алюровский слушатель выполняется раньше вашего, то результаты финализируются до непосредственного снятия скриншота.

Чисто технически, перенос события снятия скриншота из onTestFailure в afterInvocation должен помочь, ибо afterInvocation выполняется раньше. А финализация теста как раз таки происходит в переопределенных алюровских onTest[Status].

Лично я всю жизнь снимаю скрины в afterInvocation. И таких проблем не замечал. Пробуйте.


(Taras) #3

по хоже на ету проблему.
по хоже что InvoketionListener проблему решил… но хотелось б понять, если атачмент есть в allure-results но после allure:report команди не крепиться в репорт , то проблема в том что он “фигово” попал таки в allure-results из-за проблеми с listener-ом ?


(Sergey Korol) #4

Атачмент не “фигово” попал в репорт, а вообще не попал туда. Уже ответил в issue.

Вкратце, если заглянуть в ваши json results, там нет attachment нодов в принципе, что говорит о том, что результаты были сохранены раньше, чем вы сняли скриншот.

Вы можете посмотреть на реализацию Allure TestNG слушателя. Там test closure активности происходят в onTestFailure и подобных методах. Т.е. если ваш слушатель сработал после аллюровского, результаты сохранились без ссылок на скриншоты.

П.С. Мейвен плагин, впрочем, как и другие, не отвечает за логику сбора данных. Он лишь генерит репорт из указанной папки. И если в этой папке с результатами нет ссылок на скриншоты, естественно вы их нигде в итоге не увидите.

UPDATE:

Вот так выглядит результат с атачментами:

  "steps": [
    {
      "name": "Type username = Sergey",
      "status": "passed",
      "stage": "finished",
      "start": 1503241354266,
      "stop": 1503241354286,
      "attachments": [
        {
          "name": "test",
          "source": "9690d1ac-a7b8-4adf-908d-82e8f0bd1693-attachment.txt",
          "type": "text/plain"
        }
      ],
      "parameters": [
        {
          "name": "username",
          "value": "Sergey"
        }
      ]
    }

(Taras) #5

ну типа “фигово” я как раз наверное и имел в виду что оно сгенерило файли но не линкануло их никуда в aggregation json-е


Allure - подборка типичных проблем возникающих в процессе использования и их решения