Feature/steps propagation into shell for marathon #165
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Всем привет.
Создаю 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.
Реализация, в целом, работает нормально, за исключением двух пунктов. Одного важного, второго - не очень.
— важный пункт.
Не понимаю, как пофиксить.
В этом TestCase-е есть тестовый rule, которому при инициализации нужен объект класса Kaspresso, который будет сформирован чуть позже =/ Не знаю, что с этим делать пока что =(
В hh не словили эту штуку, потому что не пользовались.
Тут надо просто сидеть и дорабатывать марафон, но мы в hh как-то уже свыклись с этим и нам это не мешает.