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.

Поделиться с друзьями
-->

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


  1. saggid
    29.12.2016 09:23

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


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


    1. Fedcomp
      29.12.2016 09:33

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


      1. printercu
        29.12.2016 11:08

        2 минуты гугления capybara websocket: https://github.com/tristandunn/cucumber-websocket-example/blob/master/features/user_create.feature


            Given a user named "Sue" is online # <!!!
            And I go to the homepage
            When I fill in "Name" with "Bob"
            And I submit the new user form
            Then I should be on the users page
            And Sue should see "Bob has entered the room." # <!!!


    1. OnYourLips
      29.12.2016 10:01

      В PHP уже есть 3 универсальных аналогичных решения.
      У сторонников Rails тоже есть Capybara и selenium-cucumber.


  1. jigpuzzled
    29.12.2016 11:04
    +2

    Тоесть это просто Selenium? Тогда уж лучше использовать Codeception который уже давно стабилен и прекрасно работает.


    1. saggid
      31.12.2016 04:58
      +1

      Вроде как не просто селениум, читайте статью внимательнее:


      Он также может работать с любым Selenium-браузером. но по умолчанию он поставляется с ChromeDriver, что позволит вам избежать установки JDK или Selenium. Это делает Dusk очень простым в использовании.


      1. jigpuzzled
        31.12.2016 14:47

        https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver

        С ним так же может работать и Codeception. Фактически этот Даск это просто обертка над методами WireProtocol, так же как и сотня таких же библиотек. Ничего нового тут нет, просто красивый брендинг.


  1. Fractalzombie
    29.12.2016 12:35

    Вроде вкусная штука, но пока использую codeception.


    1. avsej
      30.12.2016 20:57
      -3

      Вы её жрать собрались? С чего это она вкусная?