Всем привет. Selenium (WebDriver) тесты на Java не останавливаются через Jenkins. Никто не сталкивался с такой проблемой? Jenkins крутится на линухах. Сами тесты - это maven проект. Тесты запускаются на гриде. Сам грид и его ноды - виндовые виртуалки.
Проблема в том, что когда останавливаю запущенный джоб на Jenkins через его UI, сами тесты на гриде не останавливаются, а продолжают бежать, пока все не добегут. То есть фактически не происходит прерывания выполнения.
Есть идеи почему процессы не останавливаются?
а как вы решили что тесты не останавливаются? Как вы определили что они все еще бегут? по rdp
зашли и видите как там в браузере все скачет и прыгает все еще или на grid hub
видно что на нодах браузеры еще в работе
Полагаю, он видит логи прохождения тестов до конца.
Да, на нодах и в админке хаба тесты продолжат бежать. И отчёт сразу не приходит.
Дженкинс просто не прибивает ваши child процессы при аборте. Даже если вы его заставите это делать, вероятней всего у вас тестовые сессии останутся в висячем состоянии. И до наступления таймаута вы не сможете запустить ничего нового на “мертвых” нодах. Разве что явно отправлять реквест на удаление сессии. Но ее надо еще знать. А при аборте джобы вы вряд ли сможете собрать подобную информацию автоматически. Ну и собственно висячие браузеры / драйвера тоже надо убивать.
Таким образом, самый простой способ подчистить за собой - перезапустить грид каким-то тригерром. Я в свое время писал сервис по управлению окружением: тут можете найти исходники учебной версии.
Оставшиеся висеть браузеры и сессии - не та проблема, которую я хотел бы решить. Повторюсь. Проблема в том, что когда останавливаю запущенный джоб на Jenkins через его UI, сами тесты на гриде не останавливаются, а продолжают бежать, пока все не добегут.
Ок, вместо тысячи слов: