Найти в Дзене

Как запустить тесты через браузер Docker в Intellij IDEA JAVA. Часть 1

Оглавление

Мы с вами постепенно создали проект, в котором можем запускать тесты. Сейчас мы делаем это на своём компьютере, но в будущем нам нужно будет интегрировать тесты в систему непрерывной интеграции и доставки (CI/CD).

Проблема заключается в том, что для некоторых тестов требуется открыть браузер, даже если он работает в безголовом режиме. В системе CI/CD браузера нет, поэтому мы можем создать контейнер в Docker с браузером и запускать тесты через него. Об этом и пойдёт речь в статьях.

Docker. Модуль 4 | Обучение тестированию | Дзен

За основу возьму проект, ссылка на который есть, в описании канала - https://github.com/Timurchik57/JAVA.git.

Запуск удалённого браузера

Мы с вами уже познакомились с Docker и умеем клонировать и создавать образы из прошлой статьи:

Поэтому давайте клонируем новым образ командой

docker pull selenium/standalone-chrome

Это официальный образ от селениума

-2

Вы также можете загружать нужную версию браузера прописав соответствующий тег

docker pull selenium/standalone-chrome:114.0

После установки вам будет доступен нужный образ

-3

Далее вам нужно запустить ваш образ, чтобы можно было использовать его в качестве браузера

docker run --rm -d -p 4445:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome

4445:4444 - это порты для подключения к браузеру. 4445 - это ваш порт, 4444 - порт браузера

Всё ваш браузер запущен!

-4

Посмотреть его вы сможете по адресу - http://localhost:4445

-5

Настройка проекта на запуск через Docker

Создав контейнер в Docker мы никак не затронули наши тесты, то есть теперь нужно настроить запуск через браузер в контейнере, а не через ваш ПК.

Инициализация драйвера

У каждого проекта есть инициализация ChromeDriver, вы должны немного изменить эту инициализацию.

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

-6

У меня есть абстрактный класс, от которого наследуются все тестовые классы. Значит, перед каждым тестом открывается браузер, и именно его мы будем настраивать.

Вам нужно заменить driver = new EventFiringWebDriver(new ChromeDriver(chromeOptions)); на driver = new RemoteWebDriver(new URL("http://localhost:4445/wd/hub"), chromeOptions);

Импортировать нужно:

  • import org.openqa.selenium.remote.RemoteWebDriver;
  • import java.net.URL;

Также меняем public static EventFiringWebDriver driver; на public static RemoteWebDriver driver;

-7

Также наш класс Custom придётся пока забыть, ведь он наследуется от WebDriverEventListener. О нём я рассказывал в статье

Убираем данную строку

-8

В итоге у вас получится следующее

-9

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

Заметьте, что URL я как раз указал тот, который мы создали для браузера - http://localhost:4445/wd/hub

Все изменения вы сможете взять, перейдя по ссылке на проект - https://github.com/Timurchik57/JAVA.git.

Замена инициализации PageObgect

Но у нас выводит ошибку. Это всё из за того, что наши классы из PageObgect инициализируется через EventFiringWebDriver, а не через RemoteWebDriver

-10

Исправим это

-11
-12

Запуск тестов через контейнер Docker

Мы подправили наш проект под запуск через Docker, осталось только его запустить. Запустим тест, где мы точно знаем, что открывается браузер

-13

Тесты прошли успешно

-14

Сгенерируем отчёт и увидим, скриншот браузера

-15

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию