Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/steps propagation into shell for marathon #165

Conversation

PStrelchenko
Copy link
Contributor

Всем привет.
Создаю PR, чтобы наконец-то затащить наш hh-шный способ проброса step-ов в Marathon из Kaspresso.

Что я сделал: чтобы корректно отловить сигналы об окончании теста и пробросить какие-то данные, я отправляю сигналы в Marathon через ddmlib. Для этого я создал специальный TestWatcher, который:
а) слушает события success / failed / skipped
б) при наступлении этих событий отправляет специальный INSTRUMENTATION_STATUS с прикрепленным JSON-ом от step-ов

В Marathon-е мы ловим эти сигналы и трансформируем их в step-ы Allure-а (ссылочка на наш hh-форк и нужную ветку для запуска тестов -- https://github.com/hhru/marathon/tree/fork_develop)

Чтобы пробросить такие сигналы, чтобы пробросить JSON, мне пришлось сделать инициализацию Kaspresso отложенной, сделать объект kaspresso как lateinit var, чтобы я мог его инициализировать в другом TestWatcher-е в методе starting. Это мне нужно для корректного получения идентификатора теста, который есть в модели Description.

Дальше дело техники. Я пробрасываю повсюду вместо testName-а идентификатор теста, а в конце теста, когда Kaspresso завершает тест, он пробрасывает сформированный JSON в мой test watcher.

Реализация, в целом, работает нормально, за исключением двух пунктов. Одного важного, второго - не очень.

  1. Не проходят тесты-наследники DocLocScreenshotTestCase
    — важный пункт.
    Не понимаю, как пофиксить.

В этом TestCase-е есть тестовый rule, которому при инициализации нужен объект класса Kaspresso, который будет сформирован чуть позже =/ Не знаю, что с этим делать пока что =(
В hh не словили эту штуку, потому что не пользовались.

  1. Когда ты запустишь марафон на тестах, ты увидишь, что у тебя каждый тест как будто завершается дважды. Это происходит как раз из-за того, что я отправляю "уточняющий" INSTRUMENTATION_STATUS через ddmlib. Жить не мешает, но с толку может сбить. Из-за этого в логах марафона ты можешь увидеть, что процесс выполнения тестов > 100%, в аллюровских репортах дважды прикрепляются файлы с логами.

Тут надо просто сидеть и дорабатывать марафон, но мы в hh как-то уже свыклись с этим и нам это не мешает.

…lts consumer for propagating steps information into adb's shell
…ifier into Kaspresso object declaration and propagate it into steps manager
…tCase for applying steps consumer and building Kaspresso object with test identifier
@matzuk matzuk requested review from matzuk, eakurnikov and RuslanMingaliev and removed request for matzuk and eakurnikov June 18, 2020 13:10
@matzuk matzuk requested a review from eakurnikov June 28, 2020 04:33
@matzuk
Copy link
Member

matzuk commented Jun 28, 2020

@PStrelchenko Паша, спасибо большое за контрибьют!
Нужно думать, много тут моментов, над которыми нужно посидеть.

@matzuk
Copy link
Member

matzuk commented Oct 12, 2021

Allure support is introduced in #286

@matzuk matzuk closed this Oct 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants