Автогенерация Тестов Puppeteer Встроена В Chrome Devtools.

В Chrome 89 в DevTools добавлена экспериментальная поддержка автогенерация JS скриптов на Кукловод .

Схематически это работает так: вы открываете нужную страницу, включаете запись действий в DevTools, а затем делаете что-то на странице обычным способом (нажимаете на ссылки и кнопки, переходите на другие страницы, вводите текст).

По мере выполнения действий браузер заполняет вкладку DevTools виртуальным файлом записи с JS-кодом, описывающим все действия через API Puppeteer. После этого вы можете остановить запись и сохранить полученный код как настоящий JS-файл.

Чтобы продемонстрировать новую функциональность (называемую Кукловод-блок-флейта ) авторы подготовили небольшой демо-страница (хотя проверить можно на любой странице, никаких предварительных условий со стороны сайта не требуется).

Но сначала, поскольку это пока ранняя экспериментальная функция (хотя авторы планируют развивать и расширять Кукловод-блокфлейта ), его необходимо включить в настройках DevTools, на вкладке Эксперименты, как пункт Регистратор:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

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

Теперь вы можете открыть панель «Источник» в DevTools и выбрать появившуюся вкладку «Записи»:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

Добавим новый файл записи с именем

   

test01.js

:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

И начните записывать действия с помощью кнопки «Запись» внизу экрана:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

Браузер сразу заполняет файл стартовым кодом, а затем дополняет код после каждого нашего действия на странице:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

После повторного нажатия кнопки «Запись» браузер прекращает запись, дополняет код необходимыми закрывающими скобками, и полученный файл можно сохранить:

Автогенерация тестов Puppeteer встроена в Chrome DevTools.

Результатом может быть примерно такой код:

const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(" https://jec.fyi/demo/recorder ?"); { const targetPage = page; const frame = targetPage.mainFrame(); const element = await frame.waitForSelector("aria/your email"); await element.click(); } { const targetPage = page; const frame = targetPage.mainFrame(); const element = await frame.waitForSelector("aria/your email"); await element.type("[email protected]"); } { const targetPage = page; const frame = targetPage.mainFrame(); const element = await frame.waitForSelector("aria/your name"); await element.type("baz"); } { const targetPage = page; const frame = targetPage.mainFrame(); const element = await frame.waitForSelector("html > body > main > form > input[type=number]:nth-child(3)"); await element.type("23"); } { const targetPage = page; const frame = targetPage.mainFrame(); const element = await frame.waitForSelector("html > body > main > form"); await element.evaluate(form => form.submit()); } await browser.close(); })();

К сгенерированному коду и всему функционалу Кукловод-блокфлейта Сразу можно сделать несколько замечаний:
  • полученный код не оптимален (в частности, полные селекторы элементов) и может содержать много повторов (хотя это нормально для подобных инструментов автогенерации и не обязательно влияет на скорость выполнения тестов в Puppeteer)
  • пока записываются только самые простые действия (нажатия и ввод текста), а остальное игнорируется (действия со всей вкладкой, выделение текста, действия через контекстное меню, горячие клавиши)
  • различные проверки ожиданий, создание снимков экрана и другие действия, типичные для e2e-тестов, необходимо будет вставлять в код вручную
Но, несмотря на это, при дальнейшем развитии Кукловод-блокфлейта может быть простым и полезным инструментом для создания автотестов (или автоматизации любых действий в браузере): в отличие от других подобных инструментов, Кукловод-блокфлейта уже встроен в браузер и не требует дополнительной установки или настройки среды, бесплатен и легко осваивается тестировщиками (в том числе незнакомыми с Кукловод ).

Сам интерфейс Кукловод постепенно становится стандартным (хотя Кипарис остается не менее популярным), хорошо интегрируется с Шутка и другие тестовые библиотеки, а также используется в мультибраузерных Драматург от тех же авторов.

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

Обновлено : Стефан Юдис Я разместил в своем блоге небольшую новость (с видеодемонстрацией) о Кукловод-блокфлейта : Как записать действия на экране в виде сценария кукловода .

Там же он отмечает, что в будущем пользователи сайта, обнаружившие на нем ошибку, смогут воспользоваться Кукловод-блокфлейта Прикрепите к отчету об ошибке скрипт, позволяющий точно воспроизвести ошибку.

Теги: #Google Chrome #Тестирование веб-сервисов #JavaScript #e2e тесты #puppeteer #chrome devtools #autotest #autogeneration

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.