Все больше и больше веб-сайтов переходят к созданию своего внешнего интерфейса, а в некоторых случаях и внутреннего интерфейса на JavaScript. Такие фреймворки, как React, Angular и Vue.js, выводят создание пользовательских веб-интерфейсов на новый уровень с точки зрения функциональности и динамичности. Использование этих фреймворков приносит с собой фреймворки модульного тестирования, которые, естественно, также написаны на JavaScript. Наличие всей этой экосистемы инструментов JavaScript также должно быть фактором при выборе тестовой среды для функционального/приемочного тестирования. Когда команда создает сайт или приложение на JS, реализация тестов на одном языке дает очевидные преимущества. Куда вы идете, если есть сложная проблема программирования? В большинстве случаев было бы проще просто поговорить с одним из разработчиков, поскольку у них обычно больше опыта и более глубокие знания языка.

JavaScript также является местом, где сейчас происходит много инноваций с точки зрения веб-разработки. Частично это вызвано тем, что это единственный язык, который работает в браузере, и в настоящее время действительно нет альтернативы для выполнения тех же действий. Это может измениться с WebAssembly через пару лет.

Большинство инструментов автоматизации браузера используют селен для связи с браузером, но есть также инструменты, которые обходят его, обращаясь напрямую к браузеру. Такими фреймворками являются Cypress.io и Puppeteer. Они быстрее и обходят некоторые проблемы, связанные с Selenium. Оба они поддерживают только Chrome, и им также не хватает некоторых инструментов, встроенных в фреймворки, такие как WebdriverIO., которые могут быть препятствием для некоторых проектов.

WebdriverIO

WebdriverIO — один из самых популярных инструментов при написании браузерных тестов на JavaScript. У него хороший API и множество полезных интеграций. Эти интеграции относятся к трем различным конкретным областям:

  • тестовые фреймворки
  • Сервисы
  • репортеры

Я использую WebdriverIO последние три года и очень доволен результатами. Между v4 и v5 есть большие изменения, и любой, кто начинает новый проект прямо сейчас, должен выбрать новую версию.

Тестовый бегун

WebdriverIO поставляется с собственным средством запуска тестов, которое делает несколько вещей из коробки. Например, он может запускать тесты параллельно и повторять ненадежные тесты. Полный список опций доступен в документах.

Платформы тестирования

WebdriverIO можно использовать с несколькими популярными тестовыми средами, просто включив адаптер в package.json и добавив некоторую конфигурацию. Поддерживаются следующие среды тестирования:

  • Мокко
  • Жасмин
  • Огурец (в настоящее время поддерживается только в v4)

Услуги

Существует ряд сервисов, с которыми можно интегрироваться, просто добавив пакет npm в зависимости разработки и добавив сервис в конфигурацию. Обычно сервис также можно настроить прямо в конфигурационном файле WebdriverIO.

Есть сервисы для Browserstack и Sauce Labs, есть один для selenium-standalone и еще один для Applitools. Полный список доступен в разделе «Сервисы» документации.

Репортеры

Еще одна область, облегчающая начало работы и последующую работу с WebdriverIO, — это интеграция репортеров. Существует ряд различных доступных репортеров, которые хорошо работают из коробки. Они подробно описаны в разделе документации Reporter. Документация не является исчерпывающим списком, есть и другие хорошие репортеры, например:

Резюме

WebdriverIO с его интеграциями и расширяемостью хорошо зарекомендовал себя в некоторых недавних проектах, и я считаю его безопасным выбором и в 2019 году. Это также хорошее время, чтобы начать рассматривать такие инструменты, как Cypress.io, в зависимости от потребностей организаций.

Первоначально опубликовано на honkanen.io.