Есть задача запуска быстрых смок-тестов UI локально на машинах фронтэнд-разработчиков по требованию. Такова особенность конкретного проекта. Тесты должны запускаться у конечного пользователя быстро и удобно, легко обновляться, время прохождения смок-тестов не более 5 минут.
Самый простой путь, это заставить разработчиков установить мавен и дать им батник, который будет синхронизировать код тестов в локальную папку, и потом через вызов мавена билдовать код автотестов и запускать его. Разработчиков больше 20-ти, с разными навыками и опытом, так что этот вариант не оптимальный. Нужно у каждого мавен поставить, процесс билдования на разных машинах может ломаться. Потенциально в будущем это потребует заметных трудозатрат на поддержание этой системы в рабочем виде.
Я вижу два варианта:
Запуск готового монолитного jar-файла у пользователя через батник. Предварительно в код тестов добавить метод Main, который будет TestNG запускать и прокидывать для него аргументы из командной строки (чтобы каждому не ставить мавен):
public static void main(String[] args) {
org.testng.TestNG.main(args); }
Отсюда - selenium webdriver - how to call testng.xml from java main method? - Stack Overflow
Батник предварительно выполнит проверку версии jar-файла в сетевом хранилище. И запустит - java -jar yourjar.jar -testclass org.test.xyz.java или java -jar yourjar.jar testng.xml
Что смущает: Нет опыта создания монолитного jar файла. Как?
Второй вариант – Jenkins. ПК программистов подключить как ноды. Запуск тестов через джобу.
Что смущает:
- Сначала придется руками подключать каждый ПК в роли ноды.
- Для каждой ноды создать свою джобу Т.к. ряд параметров для запуска тестов могут быть у разных разработчиков свои (ну и нода для запуска – свой ПК), нужно будет создавать для каждого параметры по умолчанию, чтобы запуск был по одному клику. Если нужно будет обновить общие параметры запуска джоб, придется каждую отдельно редактировать. Так?
- Jenkins нужно связать с ActiveDirectory компании (через LDAP плагин?), чтобы каждый пользователь заходил под своей учеткой и мог запустить только свою джобу.
Если обозначенные проблемы относительно Jenkins легко решаются, то я склоняюсь ко второму варианту – он позволит централизованно управлять всем процессом и заодно прокачать свои навыки по Jenkins ))
Посоветуйте пожалуйста, какой подход лучше использовать или предложите другой. Спасибо.