Подтвердить что ты не робот

Реагировать на сквозной, реальный браузер, интегрированные стратегии тестирования

Я использую шут/фермент для своих модульных тестов. Я знаю, что могу использовать shallow или mount в зависимости от того, насколько глубоко я хочу, чтобы мой тест был.

Теперь мне нужно настроить все для кросс-браузера, сквозного тестирования. Я хочу проверить загрузки страниц, переходить с страницы на другую (маршрутизация) и автоматизировать тесты приёма пользователей. Я также должен запускать эти тесты на реальных реальных браузерах (не jsdom/phantomjs).

Я знаю, что могу использовать селен (или инструмент, который его обертывает, например, "Протрактор" или "Ночной дозор" ) для выполнения этого типа тестов. Но я хотел бы знать, как люди в сообществе React делают это и какие инструменты они используют.

Я ищу руководство здесь, поэтому идеальным ответом будет описание конкретных стратегий тестирования сквозного тестирования, используемых в авторитетных проектах, и в идеале ссылки на эти проекты (надеюсь, с открытым исходным кодом), чтобы облегчить мне путь и проверьте конфигурации.

4b9b3361

Ответ 1

Я использую Selenium WebDriver под NodeJS (и Mocha/Chai как бегун, но если вы тоже используете Jest). Это хорошая библиотека и работает так, как ожидалось, с некоторыми бородавками, с которыми вы медленно привыкаете... Если вы ее используете, сделайте себе одолжение и используйте NodeJS >= 7.6, чтобы вы могли использовать async/wait. Это делает все кодирование тестов Selenium WebDriver намного проще.

(О, и я услышал хорошие вещи о webdriverio, который является слоем над Selenium WebDriver.)

И если вы просто хотите посмотреть код, который использует Selenium WebDriver, см. https://github.com/giltayar/frontend-testing. Это не производственный код (извините, что обычно не работает в компаниях, над которыми я работал), но в некотором смысле это лучше, потому что он делает акцент на конфигурации/системе, а не на досадных деталях конкретного приложения.

Немного больше информации о стеке тестирования, используемом в приведенном выше демонстрационном приложении, и о том, как я тестирую в целом:

  • Тестер всегда Mocha/Chai под NodeJS. Джест тоже в порядке. Что бы вы ни хотели!
  • Модульные тесты не тестируют компоненты, они проверяют логику, поэтому используйте все, что необходимо.
  • Когда я тестировал компоненты React, он использовал Фермент. И я не unit test мои компоненты React, потому что мои тесты интеграции делают. Так что...
  • Интеграционные тесты используют JSDOM в NodeJS. Это злобно быстро и позволяет мне тестировать все приложение без запуска браузера.
  • Тесты браузера /E 2E используют Selenium WebDriver под NodeJS. Это хорошая библиотека и работает так, как ожидалось, с некоторыми бородавками, которые вы медленно привыкаете...
  • Недавно я присоединился к Applitools и открыл прекрасный мир Visual Testing, где вы можете проверить ваши прикладные визуальные аспекты вместе с их функциональными аспектами.

Вы можете прочитать все об этом стеке в моей серии из 5 частей для тестирования интерфейса: https://hackernoon.com/testing-your-frontend-code-part-i-introduction-7e307eac4446

Ответ 2

Возможно, вы не взглянете на наш инструмент Sakuli. Sakuli не является специфическим для реагирования инструментом, это скорее универсальный инструмент для тестирования конца-2-конца для разных случаев использования, где вы можете использовать настоящий браузер, а также реальный интерфейс для тестирования и измерения времени с точки зрения конечного пользователя.

Автоматически вы можете протестировать HTML, а также контент, подобный анимации Flash. Он объединяет два инструмента автоматизации тестирования Open Source (Sahi и Sikuli) и позволяет тестировать веб-приложения, а также не веб-контент (например, для открытых PDF файлов в собственных приложениях или для 100% -ных тестов GUI e2e). У Sakuli есть один API для обоих типов операций, поэтому вы не чувствуете разницы в том, какую функциональность вы используете. Это позволяет использовать наилучшие подходящие функции тестирования, когда вам это нужно, или, по крайней мере, объединить их.

Идентификатор HTML-DOM очень похож на Selenium и имеет то преимущество, что им не нужно ждать Ajax-Requests. Функции пользовательского интерфейса дают вам много возможностей для проверки и управления собственным дисплеем посредством распознавания небольших фрагментов снимков экрана как объекта области, что обеспечивает дополнительные действия, такие как щелчок, тип, рост, поиск и т.д. Также вы можете запускать тесты внутри контейнера докеров с помощью реального браузера из коробки. В разделе github.com/ConSol/sakuli-examples вы найдете несколько примеров.

Для получения дополнительной информации см. github.com/ConSol/sakuli