[Перевод] Laravel Dusk уже близко

Laravel Dusk


Laravel предоставляет набор вспомогательных методов, которые бывают полезны при написании end-to-end тестов. Они позволяют легко нажать на ссылку, заполнить поля формы и отправить ее. Под капотом Laravel использует компонент Symfony BrowserKit для симуляции поведения веб-браузера. Однако, если в вашем приложении используются JavaScript и AJAX для загрузки страницы, BrowserKit не сможет вам помочь.


Laravel Dusk это новый инструмент, который добавлен в Laravel 5.4 для решения этой проблемы.


Laravel Dusk это инструмент для end-to-end тестирования ваших приложений, в которых используется JavaScript. Его целью является предоставление правильного способа тестирования различных интерактивных функций, таких как клик по кнопке или ссылке, заполнение формы и даже Drag and Drop!


Laravel Dusk использует ChromeDriver и Php-webdriver для выполнения end-to-end тестов. Он также может работать с любым Selenium-браузером., но по умолчанию он поставляется с ChromeDriver, что позволит вам избежать установки JDK или Selenium. Это делает Dusk очень простым в использовании. Вам не нужно проходить через трудоемкий процесс установки Selenium и постоянно запускать сервер. Плюс к этому, Тэйлор Отвел отметил, что тесты в Dusk выполняются быстрее, чем в Selenium.


Dusk позволяет подождать, пока какое-нибудь условие станет истинным или CSS-селектор станет доступен. Все это позволяет лучше тестировать приложения с использованием JavaScript.


Также Dusk автоматически сохраняет скриншоты проваленных тестов! Вы можете увидеть, как выглядела страница и что пошло не так.


Еще одна приятная возможность — хелперы типа loginAs, который позволяет вам авторизоваться и получить сущность пользователя. При этом вы можете открыть любую страницу, где требуется авторизация без необходимости каждый раз входить в аккаунт.


Dusk позволяет открыть несколько окон браузера для одного теста. Это упрощает тестирование приложений, в котором используются сокеты: вы можете выполнять какие-либо действия в одном окне и получить результат в другом.


Отвел также предоставил некоторую информацию о среде тестирования в Dusk. В корне вашего приложения содержится файл .env.dusk, в котором хранятся настройки среды тестирования. Для запуска Dusk-тестов вы не используете PHPUnit напрямую. Вместо этого вы вызывает artisan-команду Dusk, который делает резервную копию вашего файла .env, заменяет его файлом .env.dusk на время выполнения тестов, а после завершения восстанавливает ваш .env файл.


Заметьте, что ваши тесты, написанные с использованием BrowserKit не пропадут при обновлении с Laravel 5.3 до 5.4. Для обратной совместимости есть отдельный пакет — Laravel BrowserKit Testing.

Комментарии (2)

  • 29 декабря 2016 в 09:23

    0

    Очень очень интересно и вкусно) Осталось дождаться следующего LTS, как говорится.


    Сторонники RoR, есть ли у вас что-то подобное в вашей экосистеме?

    • 29 декабря 2016 в 09:33 (комментарий был изменён)

      0

      capybara например, но она судя по тому что тут написано мощнее.
      Впрочем тестов с нескольким окнами там судя по всему нет.

© Habrahabr.ru