Автономный тестовый комплект Laravel Dusk, для которого не требуется сама платформа Laravel.
Laravel Dusk предоставляет выразительный и простой в использовании API для автоматизации и тестирования браузера. По умолчанию Dusk не требует установки JDK или Selenium на ваш компьютер. Вместо этого Dusk использует автономный драйвер Chrome. Однако вы можете использовать любой другой драйвер Selenium, который пожелаете.
Для начала вам следует добавить в проект зависимость unlud/dusker Composer:
composer require --dev unglud/dusker
Далее вам необходимо скопировать все необходимые файлы в ваш рабочий каталог. Команда ниже сделает это за вас. Он создает (или использует существующий) каталог tests
и помещает туда файлы. Кроме того, он копирует консольную утилиту artisan
в корневой каталог вашего проекта. Если этот файл у вас уже есть, он будет перезаписан!
Файл .env.dusk
также будет находиться в корне вашего проекта, и вам нужно будет переименовать его в .env
или скопировать его содержимое в существующий.
composer run-script post-install-cmd -d ./vendor/unglud/dusker
Если вы хотите, чтобы эти файлы автоматически обновлялись каждый раз при обновлении этого пакета, вы можете добавить это в свой файл composer.json
:
"scripts": { "post-install-cmd": [ "DuskerCopyFile::copy" ], "post-update-cmd": [ "DuskerCopyFile::copy" ] }, "extra": { "copy-file": { "vendor/unglud/dusker/src/example/": "tests/", "vendor/unglud/dusker/artisan": "artisan" } }
Как вы заметили, файл .env.dusk
сюда не включен для упрощения.
После установки пакета команды Artisan будут доступны из вашего корневого проекта. Запустите команду dusk:install
» Artisan:
php artisan dusk:install
Теперь попробуйте запустить тест, чтобы убедиться, что все работает.
php artisan dusk
После этой части вы можете использовать официальную документацию Dusk на веб-сайте Laravel, потому что она будет работать точно так, как было разработано Тейлором Отвеллом.
Часто вы будете тестировать страницы, требующие аутентификации. Вы можете использовать метод LoginAs Dusk, чтобы избежать взаимодействия с экраном входа в систему во время каждого теста. Метод loginAs принимает login
и password
пользователя:
$this->browse(function (Browser $browser) { $browser->loginAs('username', 'password') ->visit('/home'); });
После использования метода loginAs сеанс пользователя будет сохраняться для всех тестов в файле.
Поскольку у нас нет доступа к собственным Auth
и Router
из Laravel, поскольку мы используем их без Laravel, нам необходимо настроить функцию входа в систему. В .env
вы должны указать LOGIN_ENDPOINT
— путь к вашему общедоступному каталогу, куда Dusker скопирует файл, который будет доступен из браузера. По умолчанию это http://example.com/_dusker/login.php
. Второй LOGIN_IMPLEMENTATION
— путь к вашему классу, который использует логику вашего проекта, позволяющую аутентификацию. Вы можете использовать /tests/LoginManagerExample.php
в качестве примера того, как это должно выглядеть.
Dusker выпускается под лицензией MIT. Подробности смотрите в прилагаемом файле ЛИЦЕНЗИИ.