2020 год показал тенденцию к росту использования фреймворков JS Automation, таких как Cypress, WebdriverIO, TestCafe, Nightwatch, Protractor и Puppeteer и т. Д.

Тенденции использования NPM для этих пакетов за последние 6 месяцев показывают более высокую степень внедрения Cypress и WebdriverIO по сравнению с другими инструментами.

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

Кипарисовик

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

Архитектура:

«Cypress - это не Selenium, он архитектурно и фундаментально построен иначе, чем Selenium».

Cypress выполняет команды непосредственно внутри API автоматизации браузеров, что делает выполнение скриптов более быстрым и эффективным.

В каждой системе у нас есть уровень ОС (Mac, Windows или Linux). Это уровень, на котором мы устанавливаем Node и Cypress вместе со всеми его зависимостями. Поскольку и Node, и Cypress находятся на одном уровне ОС, они используют общий браузер и прокси для запуска приложения. Таким образом, для Cypress становится очень легко получить доступ к DOM приложения, Windows, локальному хранилищу, iframe, инструментам разработки сетевого уровня и т. Д.

Настройка фреймворка Cypress:

Для начала работы с Cypress требуется всего 2 команды. Первая команда npm init создает пустой package.json файл и вторая команда npm install cypress - save-dev устанавливает все необходимые зависимые пакеты для Cypress, и нам не нужно устанавливать каждую зависимость отдельно, как это делаем мы в случае WebdriverIO.

Образец кода:

WebdriverIO

WebdriverIO - еще одна отличная утилита для тестирования E2E с открытым исходным кодом для Node.js. Он позволяет вам управлять поведением браузера или мобильного приложения с помощью всего нескольких строк кода, написанного на JavaScript с тестами на селен. Он лучше всего подходит для создания фреймворков как TDD, так и BDD.

Архитектура:

В WebdriverIO весь код выполняется локально на машине разработки. Узел работает с использованием Mocha и использует внутренний исполнитель для запуска тестовых сценариев. Для утверждения используется chai should. Внутренне WebdriverIO взаимодействует с Selenium Server для выполнения с использованием проводного протокола JSON. Сервер Selenium вызывает браузер через драйвер для тестирования веб-приложений. Ниже приведено простое высокоуровневое представление архитектуры WebdriverIO.

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

Примечание: и для Cypress, и для WDIO на нашем компьютере должны быть установлены Node.js и npm. (При установке через npm используйте Node.js 8 и выше)

Настройка фреймворка WebdriverIO:

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

Затем вы можете увидеть новый файл, созданный в папке вашего проекта, под названием package.json. который является файлом конфигурации проекта. Вы можете отредактировать его в любое время, чтобы внести изменения на уровне конфигурации для проекта.

Чтобы установить WebdriverIO, запустите команду npm install webdriverio - save-dev. Затем мы можем установить CLI Runner с помощью npm install @ wdio / cli

Теперь нам нужен файл wdio.config.js, который помогает выполнять функции уровня проекта, такие как создание снимков экрана, логика повторных попыток и т. Д. Запустите ./node_modules/.bin/wdio config, и вам будет предложено указать некоторые параметры для конкретного проекта, такие как базовый URL-адрес, структура, расположение testScripts, создание отчетов, асинхронный или синхронный режим. выполнение команд wdio.

При успешном выполнении вышеуказанного вы увидите новый файл wdio.conf.js, созданный в корневом каталоге. этот файл конфигурации также можно изменить позже.

Далее мы должны установить утверждения Chai. Давайте использовать npm install chai - save-dev. Для глобальных утверждений используйте npm install chai-webdriverio - save-dev..

Наконец, нам нужен локальный Runner для локального запуска скриптов. Используйте npm install local-runner - save-dev в терминале. Теперь все готово для выполнения наших тестов wdio.

Образец кода:

Сравнение Cypress и WebdriverIO

Мои взгляды:

И Cypress, и WebdriverIO - отличные инструменты автоматизации, поэтому становится сложно выбрать один, поэтому я бы сказал

Выберите Cypress, если вы ищете:

  • Инструмент автоматизации, не основанный на Selenium, с большинством включенных функций и, кроме того, имеет такие функции, как

Путешествие во времени: делает снимки каждой команды, выполняемой в рамках теста.

Возможность отладки. Быстрая работа с четкими и краткими журналами ошибок.

Автоматическое ожидание: возможность автоматического ожидания с возможностью повторной попытки.

Скриншоты и видео: снимает экраны ошибок теста и видео для справки.

Обновления в реальном времени: автоматически перезагружается при изменении тестовых сценариев.

  • Инструмент, охватывающий все тесты E2E, интеграционные тесты и модульные тесты для вашего приложения.
  • Инструмент, сочетающий в себе функциональное тестирование и тестирование API.
  • Инструмент для более быстрой настройки, реализации, отладки и выполнения тестовых сценариев.
  • Инструмент, который предоставляет свободу использовать либо тупиковые ответы, либо фактически обращаться к серверу для получения ответов.

Выберите WebdriverIO, если вы ищете:

  • Современный JS-инструмент интерфейсной автоматизации, который использует Selenium под капотом.
  • Инструмент, который подходит для автоматизации как веб-приложений, так и собственных мобильных приложений.
  • Простой и легко настраиваемый инструмент, который можно расширить, чтобы вы могли писать собственные команды.
  • Инструмент, который поддерживает кросс-браузеры (Chrome, Firefox, Safari, Edge и Internet Explorer), а также встроенную поддержку iframe, shadow Dom и нескольких фреймворков JS, таких как jasmine, mocha и cucumber.
  • Инструмент, поддерживающий параллельное выполнение тестов.

Короче говоря, оба инструмента имеют свои преимущества и недостатки, когда дело касается автоматизации тестирования. В зависимости от требований к тестированию можно разумно выбрать любой из них.

Чем больше вы будете читать, тем больше узнаете. Чем больше вы узнаете, тем больше мест вы посетите.

Оставайтесь любопытными и продолжайте учиться !!