Microsoft драматург

Недавно Microsoft анонсировала новую платформу, которая автоматизирует действия браузера с помощью nodeJS. Эта библиотека поддерживает следующие браузеры: Chromium, WebKit, Firefox и Edge (на основе хрома). Стоит отметить, что Playwright сам по себе не является платформой автоматизации тестирования, но ее можно интегрировать с тестовыми библиотеками (chai, mocha, jasmine, jest, cucumber) и превратить в среду автоматизации тестирования.

Похожая библиотека, которая стремится сделать то же самое, называется puppeteer от Google, но главное отличие состоит в том, что кукольник поддерживает только хром, а драматург поддерживает несколько разных браузеров.

Поскольку это совсем недавний проект, у Microsoft нет коммерческого веб-сайта и хорошей документации, вся информация находится в официальном репозитории github.

Навигация по API не очень приятна, и не очень легко найти функции, которые мы ищем (отчасти потому, что в Интернете не так много примеров)

Написание первого сценария

Первый сценарий в примечаниях Readme показывает, как посетить веб-страницу и сделать снимок экрана.

Убедитесь, что на вашем компьютере установлен узел:

node -v

Давайте начнем новый проект узла в пустом каталоге и установим зависимость драматурга

npm init (Press enter in every prompt or change anything if you prefer)
npm install --save playwright

После этого создайте файл .js с именем playwright_ex01.js или любым другим именем по вашему выбору и вставьте / введите этот исходный код:

Запускаем скрипт:

node ./playwright_ex01.js

Скрипт переходит на http://whatsmyuseragent.org и делает снимок экрана 3 раза (по одному разу для каждого браузера: Chrome, Firefox и webkit).
Стоит отметить, что все браузеры включены в модуль драматургии, то есть очень удобно, например, при работе в докере или среде CI. Однако установка библиотеки занимает много времени и занимает слишком много места.

Автоматизация тестирования

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

Сам Playwright не является библиотекой QA Automation, поэтому он не будет делать ни утверждений, ни отчетов о тестах.

Но мы можем интегрироваться с другими библиотеками и создать нашу собственную платформу автоматизации пользовательского интерфейса. Я решил интегрироваться с двумя другими библиотеками npm: mocha и chai, потому что они являются одними из самых популярных библиотек для тестирования javascript и просты в настройке.

Mocha - это, по сути, слой тестового раннера. Обычно мы создаем каталог с именем test и создаем несколько файлов с расширением .spec.js, содержащих все тесты для каждой функции. Для каждого файла мы организуем тесты внутри описать - ›это. Ключевое слово «Describe» предназначено только для групповых тестов, и каждое «it» будет тестом.

Chai.js в основном играет роль утверждения, это самая большая библиотека утверждений, используемая в javascript, и мы можем выбирать разные способы записи (ожидать, следует, утверждать) и имеет множество функций утверждений, как вы можете видеть здесь.

Теперь, когда мы знакомы с каждой библиотекой нашей автоматизации тестирования, нам нужно интегрировать их друг с другом. Убедитесь, что у вас есть файл package.json, подобный этому (обратите внимание на разделы скриптов, каталогов и зависимостей):

Создайте файл с именем todo.spec.js внутри тестового каталога и вставьте следующий код:

Код очень простой, он просто запускает 2 теста:

  • Убедитесь, что список дел загружен пустым
  • Добавляет новый элемент To Do в список и проверяет, был ли добавлен

Запустить с помощью: npm test

После каждого теста я делаю снимок экрана и сохраняю его, используя имя теста, и перед каждым тестом запускается новый сеанс хрома. Здесь вы можете увидеть результат теста:

Если вы хотите увидеть, как браузер выполняет тесты, измените {headless: false} на {headless: true}.

Последние мысли

Еще очень рано делать окончательный вывод о том, стоит ли использовать драматурга Microsoft в качестве средства автоматизации тестирования пользовательского интерфейса.

Библиотека не очень развита, и, надеюсь, Microsoft будет очень много работать над ее улучшением.

На мой взгляд, если бы мне пришлось разработать очень простой скрипт парсинга веб-страниц, драматург был бы хорошим инструментом для этого, и я бы выбрал его для этого. Но, учитывая реальные сложные сценарии, которые мы имеем в нашей работе в качестве QA Automation Engineer, я бы определенно выбрал другие фреймворки вместо драматурга из-за простоты, зрелости и эффективности, такие как webdriverIO или cypressIO.

Исходный код

Вы можете найти исходный код проекта здесь