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 em. > файл и вторая команда 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.
- Инструмент, поддерживающий параллельное выполнение тестов.
Короче говоря, оба инструмента имеют свои преимущества и недостатки, когда дело касается автоматизации тестирования. В зависимости от требований к тестированию можно разумно выбрать любой из них.
Чем больше вы будете читать, тем больше узнаете. Чем больше вы узнаете, тем больше мест вы посетите.
Оставайтесь любопытными и продолжайте учиться !!