Быстрый запуск acceptance тестов (Yii + Codeception + Selenium)

Привет друзья. В этой статье расскажу про приемочные тесты. После написания какой нибудь фичи приходится тестировать ее. Как это обычно происходит. Пишем фичу, запускаем браузер, кликаем мышкой куда надо, ага, работает окей. Но фича не была бы фичей, если бы ненужно было бы дорабатывать. Правим ее, и вот теперь нужно проделать все шаги с нуля, запуск браузера, еще больше кликов мышкой, осмотр глазами, проверка записей в БД и т.д. После еще правок повторяем все заново и заново. Стоп, давайте компьютер будет повторять все эти рутинные операции.

 При том, что это легко сделать с замечательным фреймворком codeception плюс авто браузер selenium. Для базы возьмем Yii, для него уже модуль для codeception, для быстрой демонстрации самое то.

Для начала можно протестировать авторизацию пользователя на сайте. Распространенный функционал, который есть из под коробки в Yii basic. В следующий раз, можно протестировать регистрацию пользователя и посмотреть работу с БД.
Итак, скачиваем Yii basic, advanced шаблон слишком излишен для демонстраций, да и вообще для многих сайтов.

Теперь перёйдем к тестам. Вместе с basic поставляется codeception/base без веб драйвера нужного для selenium. Меняем поставку, в composer.json заменяем строку codeception/base на codeception/codeception,

Запускаем в консоли composer update. Composer  обновить зависимости и скачает необходимый библиотеки.

Скачиваем selenium с сайта http://www.seleniumhq.org/download/ Это обычный jar archive.

selenium_download

Для запуска браузера скачиваем хром драйвер. Выберите исходя из ОС. Для винды это будет win32.zip

https://sites.google.com/a/chromium.org/chromedriver/downloads.

chromedriver_download

Ложим их обоих в одну папку. Например у меня оба эти файла лежат в папке Openserver\selenium.
В терминале пишем java -jar selenium-server-standalone-3.5.3.jar

run_selen

Все селениум запущен.

Пришло время codeception-a. В папке с тестами site/tests создаем конфиг acceptance.suite.yml. В конфигах добавляем веб драйвер и модуль Yii2.

Отредактируем тест site/tests/acceptance/LoginCest.php

Запускаем тесты

vendor\bin\codecept run acceptance -vvv

Пример запуска:

Пример запуска теста

Видим зеленую строчку PASSED,  значит тест прошел.