Все больше и больше веб-сайтов переходят к созданию своего внешнего интерфейса, а в некоторых случаях и внутреннего интерфейса на 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.