Laravel Dusk уже близко

https://laravel-news.com/laravel-dusk-is-coming
  • Перевод

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 и Facebook 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.

Поделиться публикацией

Похожие публикации

Комментарии 12

    0

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


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

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

        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." # <!!!
          0

          Да, Capybara мощнее и работа с несколькими сессиями там есть:


          Capybara.using_session("Bob's session") do
            fill_in 'Email', with: 'user@example.com'
            fill_in 'Password', with: 'password'
          end
          
          0
          В PHP уже есть 3 универсальных аналогичных решения.
          У сторонников Rails тоже есть Capybara и selenium-cucumber.
            0
            О каких трех решениях вы говорите?
          +2
          Тоесть это просто Selenium? Тогда уж лучше использовать Codeception который уже давно стабилен и прекрасно работает.
            +1

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


            Он также может работать с любым Selenium-браузером. но по умолчанию он поставляется с ChromeDriver, что позволит вам избежать установки JDK или Selenium. Это делает Dusk очень простым в использовании.
              0
              https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver

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

                Таки да, просто Селениум, ничего нового. Только вместо самого selenium server, который бы запускал chromedriver, chromedriver запускается напрямую.

              0
              Вроде вкусная штука, но пока использую codeception.
                –3
                Вы её жрать собрались? С чего это она вкусная?

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое