Тут поставили задачу написать тесты для проверки пару моментов в веб-приложении.
Предложили Selenium + mink (http://mink.behat.org/) так как приложение я пишу на php.
Скачал selenium, почитал, для старта, эту статью http://javascript.ru...ted/selenium-rc
потыкал в консоле, вроде легко и понятно.
Скачал mink, помучался с composer'ом, но установил.
Создал папку tests, внутри папку actions и файл index.php
в index.php подключаю библиотеку mink и экшены которые будут в папке actions
структура получается такая:
tests
-actions
--тут будут экшены всякие
-index.php
Подготавливаем index.php
<?php require_once dirname(__FILE__) . '/../testSait/vendor/autoload.php'; //подключаем библиотеку mink use \Behat\Mink\WebAssert; //импортирование WebAssert класса $driver = new \Behat\Mink\Driver\Selenium2Driver('firefox'); //подключаем драйвер, используем браузер firefox $session = new \Behat\Mink\Session($driver); //пихаем драйвер в сессию $session->start(); //стартуем $webAssert = new WebAssert($session); //создаем объект класса \Behat\Mink\WebAssert //пихем в массив название экшенов $actions = array( 'signUp', 'invite', ); //тут мы их подключаем foreach ($actions as $val) { require_once 'actions/' . $val . '.php'; } //если тесты пройдут без ошибок, тут завершится сессия и браузер закроется $session->stop();
Начинаю с проверки регистрации.
Логика у меня такая:
- открываем страницу регистрации
- вводим в поля данные
- нажимаем кнопку add
- переходим на не гостевую страницу и проверяем какой-нибудь кусок текста которого нет у гостевых пользователей.
- если тест проработал без ошибок - регистрация работает хорошо!
код экшена регистрации:
<?php $session->visit('http://sait.lc/signup'); //переходим на страницу регистрации //поиск элементов и вставка данных $session->getPage()->find('css', 'input#firstName')->setValue('Джон'); $session->getPage()->find('css', 'input#lastName')->setValue('Смит'); $session->getPage()->find('css', 'input#name')->setValue('Test'); $session->getPage()->find('css', 'input#email')->setValue('test@sait.lc'); $session->getPage()->find('css', 'input#phone')->setValue('+375 29 001 02 03'); $session->getPage()->find('css', 'input#password')->setValue('1234'); //кликаем по кнопке $session->getPage()->find('css', 'input#button')->click(); //переходим на не гостевую страницу $session->visit('http://test.sait.lc/timesheet'); //проверяем текст на не гостевой странице $webAssert->elementTextContains('css', '.selenium-h3', 'Week by week timesheet');
Автоматизированные тесты примерно так пишутся?)