Predvoditelev.RU
Заметки

Подготовка окружения в Windows для приёмочных тестов Yii2 с использованием Selenium Server

В качестве примера будем использовать чистое приложение на базе шаблона Yii2 advanced. Подразумевается, что в приложении настроено подключение к БД и выполнены все миграции.

Подготовка приложения

Подключаем конфигурацию для приёмочных тестов, для этого переименовываем файл frontend/tests/acceptance.suite.yml.example в frontend/tests/acceptance.suite.yml.
В этой конфигурации указываем URL сайта, в моём случае это https://yii2.ll.

URL сайта в конфигурации приёмочных тестов
URL сайта в acceptance.suite.yml.example.

Устанавливаем модуль WebDriver для Codeception:

composer require codeception/module-webdriver --dev

Для генерации необходимых классов для тестов Codeception выполняем команду:

vendor\bin\codecept build

Подготовка Selenium Server

Для работы сервера Selenium требуется Java. Если у вас её ещё нет, то качаем и устанавливаем.

Скачиваем последнюю стабильную версию сервера Selenium для Windows.

Скачиваем последнюю стабильную версию WebDriver для Firefox (geckodriver) для Windows.

Перемещаем jar-файл Selenium и распакованное приложение geckodriver в одну папку:

selenium-server-standalone-3.141.59.jar и geckodriver.exe
Папка с файлами сервера Selenium и WebDriver для Firefox (geckodriver).

В этой же папке создаём файл selenium.bat для запуска сервера c содержимым:

java -jar selenium-server-standalone-3.141.59.jar

Вместо selenium-server-standalone-3.141.59.jar подставьте название jar-файла сервера Selenium.

Запуск тестов

Запускаем сервер Selenium с помощью selenium.bat:

Selenium Server
Запуск сервера Selenium.

Запускаем приёмочные тесты:

vendor\bin\codecept run acceptance -c frontend

Если всё прошло успешно, то вы увидите похожий вывод:

Запуск приёмочных тестов
Вывод при успешном прохождении приёмочных тестов.

Решение проблемы с небезопасным SSL-сертификатом

Когда используется небезопасный SSL-сертификат (на локальном сервере встречается очень часто), возникает ошибка [Facebook\WebDriver\Exception\InsecureCertificateException].

Ошибка WebDriver [Facebook\WebDriver\Exception\InsecureCertificateException]
Ошибка [Facebook\WebDriver\Exception\InsecureCertificateException].

Решение простое, в конфигурации приёмочных тестов acceptance.suite.yml разрешаем принимать небезопасные сертификаты с помощью параметра acceptInsecureCerts, задаваемого в опции capabilities модуля WebDriver:

Параметр acceptInsecureCerts в конфигурации WebDriver
Конфигурация для разрешения небезопасных SSL-сертификатов.

Лайфхак для OpenServer

Если вы используете OpenServer, то можете для удобства добавить ссылку на selenium.bat в закладки:

selenium.bat в закладках Open Server
Добавление selenium.bat в закладки Open Server.

При написании статьи использовалось следующее ПО:

  • Windows 10
  • Open Server 5.3.7
  • Yii 2.0 Advanced 2.0.35
  • Codeception 4.1.4
  • Selenium Server 3.141.59
  • geckodriver 0.26.0
  • Java Version 8 Update 251
@sergei_predvoditelev — Авторский канал в Telegram: заметки о веб-разработке, PHP, открытом ПО, развитии и немного о жизни.