Комментарии 26
НЛО прилетело и опубликовало эту надпись здесь
Всмысле? Скажем, мы используем Puppetry для тестирования корпоративного сайта (stage env), порядка 50 тестов, покрывающих RWD, sanity (наличие важных компонентов), exhaustive тесты для форм, бюджет производительности и все сценарии по авторизации/регистрации, включая анализ автоматически высылаемых электронных писем. Есть еще проект электронного магазина, там тестируется Google Analytics, потому как много используется Tracker API для сбора телеметрии Enhanced Ecommerce.
Разные стратегии представлены на примерах в доках:
docs.puppetry.app/testing-techniques
Разные стратегии представлены на примерах в доках:
docs.puppetry.app/testing-techniques
НЛО прилетело и опубликовало эту надпись здесь
Судя по гитхабу Дмитрий и есть автор этой программы. Так что тут уместней вопрос не "почему выбрали?", а "когда запилите такую-то фичу?".
Справедливо. Мы не могли убедить наших тестеров писать автоматизированные тесты годами. Я «вскармливал» им примеры тестов на Selenium, Nightmare, Dalek.js, Zombie.js, все без толку. Потом работал с Puppeteer и понял что можно обойтись без кодирования. Написал Puppetry, предложил им. Т.е. проблемы и почему — дать возможность создавать тесты без написания кода. Впрочем, будучи программистом, я сам пользуюсь Puppetry — так быстрее и удобнее — не надо держать в голове API веб-драйвера, не надо копаться в снипеттах, нет вероятности ошибок кода, которые сложно продебаггить. На Welcome page есть кнопка Demo Project, в нем около десятка примеров для разных типов тестирования. Один из них — полный тест TODOMVC согласно их спецификации github.com/tastejs/todomvc/blob/master/app-spec.md)
Чем отличается от других? Из подобных (www.ranorex.com, www.testcraft.io, ..) платные, что не всем подходит. Попадалось еще web-based решение, которое раннит тесты на своем сервере. Т.е. они не смогут достучаться до stage среды (изолированной от внешнего доступа)
Грабли… В ветке 2.0 реально не хватало групповых операций над записями (copy/paste,delete, enable/disable), для утверждения target.assertVisible не было опций, что на практике не работает (важно как именно виден элемент: доступен, display, visibility, opacity, in viewport). Вообщем все проблемы о которых мне известно исправлены в версии 3.0.0. Разве что повис пока запрос на снипеты (вызов один из другого и выполнение без тестов).
Чем отличается от других? Из подобных (www.ranorex.com, www.testcraft.io, ..) платные, что не всем подходит. Попадалось еще web-based решение, которое раннит тесты на своем сервере. Т.е. они не смогут достучаться до stage среды (изолированной от внешнего доступа)
Грабли… В ветке 2.0 реально не хватало групповых операций над записями (copy/paste,delete, enable/disable), для утверждения target.assertVisible не было опций, что на практике не работает (важно как именно виден элемент: доступен, display, visibility, opacity, in viewport). Вообщем все проблемы о которых мне известно исправлены в версии 3.0.0. Разве что повис пока запрос на снипеты (вызов один из другого и выполнение без тестов).
Очень интересная и симпатичная программа. Надо попробовать применить её для скраппинга и автоматизации браузера))
В полной мере данный инструмент покажет себя, если при разработке приложения применить автогенерацию стабильных глобально уникальных семантичных идентификаторов, как описано тут: https://habr.com/ru/post/461395/
Автогенерация — это на стороне приложения. Хотя проблема актуальная — в приложении поменялся layout, тесты упали. В Puppetry цели отделены от тестов (просто пары — переменная: селектор ). Т.е. проще рефакторить. Ну и при разумном использовании CSS (особенно псевдо-селекторов) docs.puppetry.app/tips-and-tricks/embrace-the-power-of-css#lists можно создавать тесты допускающие изменение структуры старницы. Например, селектор a[href*=«facebook.com»] найдет ссылку «Поделиться на Facebook» независимо от ее положения в DOM (ключевое слово в href надо удлинить, если есть другие ссылки с facebook.com). Также как и в Selenium можно адресовать элементы по наличию определенного текста в textNode.
Ну как проще. css селекторы приходится поддерживать вручную, вручную же обеспечивать их уникальность, и чинить после чуть ли не каждого изменения вёрстки. С семантической автогенерацией же тесты получаются куда более стабильными.
Впрочем, я бы рекомендовал самостоятельно писать компонентные тесты и не зависеть от тестировщиков. Писать их куда проще, чем модульные, профита больше. Пример для todomvc.
Компонентные тесты конечно никто не отменял :) Но они тестируют компоненты в изоляции. Взаимодействие компонентов можно протестировать только сквозными тестами, также как скажем RWD страницы. Некоторые типы тестирования, как скажем CSS regression, теоретически можно применить в компонентных тестах, но не практично.
Скачал приложение для MacOS, запускаю, и...The application “puppetry” can’t be opened.
Unsigned developer. В Security & Privacy/General, там должно быть — Puppetry заблокирован, потому как от неидентифицированного разработчика, открыть все-равно?!
support.apple.com/en-us/HT202491
support.apple.com/en-us/HT202491
Такая же ситуация на MacOS Catalina,
Именно на Каталине и проблема github.com/dsheiko/puppetry/issues/50
Как я отписал, если найти приложение в Finder, Ctrl-Click и выбрать Open — открывается и работает без проблем. На днях проверяли.
Как я отписал, если найти приложение в Finder, Ctrl-Click и выбрать Open — открывается и работает без проблем. На днях проверяли.
«просто игрушка, годная лишь для простейших тестов»Можно ли из этого приложения слазить в базу данных и продолжить тест с учетом какой-либо настройки?
Есть такой метод page.assignVarRemotely, он стучится по указанному URL, и удерживает ход выполнения тестов на паузе пока не придет ответ сервера удовлетворяющий заданному условию (или timeout). Именно таким образом я тестирую сценарии зависящие от ответа в электроной почте docs.puppetry.app/testing-techniques/testing-emails/example-with-restmail.net.
Т.е. не слазить в БД, но опросить REST метод, который лазит в БД.
Т.е. не слазить в БД, но опросить REST метод, который лазит в БД.
Selenium IDE (https://selenium.dev/selenium-ide/)
Плюсы:
— Selenium Grid
— тесты Selenium, выполняются по ощущениям быстрее чем Puppeteer (https://pptr.dev/)
— тесты Selenium можно ранить на различных браузерах
— огромное коммьюнити, проект живет очень давно
Минусы:
— реализован как расширения для браузеров, как по мне, очень неудобно управлять структурой тестов
— из браузера можно записать отдельные сценарии, но серьезные тесты надо писать кодом, что делать с Selenium API сравнительно сложно
Есть и более технические проблемы, поэтому все пытаются создать альтернативы
www.testim.io/blog/selenium-tests-fragile, crossbrowsertesting.com/blog/selenium/problems-selenium-webdriver
Puppetry
— конвертирует тесты в JavaScript (Node.js) — это кому плюс, а кому минус :)
— создание тестов, помимо рекордера, не требует никаких специфических знаний, только CSS (и тут реально много возможностей, что порой удивительно для визуальной среды)
— «печеньки»
Плюсы:
— Selenium Grid
— тесты Selenium, выполняются по ощущениям быстрее чем Puppeteer (https://pptr.dev/)
— тесты Selenium можно ранить на различных браузерах
— огромное коммьюнити, проект живет очень давно
Минусы:
— реализован как расширения для браузеров, как по мне, очень неудобно управлять структурой тестов
— из браузера можно записать отдельные сценарии, но серьезные тесты надо писать кодом, что делать с Selenium API сравнительно сложно
Есть и более технические проблемы, поэтому все пытаются создать альтернативы
www.testim.io/blog/selenium-tests-fragile, crossbrowsertesting.com/blog/selenium/problems-selenium-webdriver
Puppetry
— конвертирует тесты в JavaScript (Node.js) — это кому плюс, а кому минус :)
— создание тестов, помимо рекордера, не требует никаких специфических знаний, только CSS (и тут реально много возможностей, что порой удивительно для визуальной среды)
— «печеньки»
- — тестирование по скриншотам (как PhantomCSS)
- — тестирование сценариев зависящих от высланных электронных писем
- — шаблон, выражения, переменные (скажем, можно указать, что значение элемента input будет сгенерированно по критериям docs.puppetry.app/template#faker)
- — и много других
Приложение можно в Linux установить из snap пакетов. Супер!
Спасибо за отличную программу, буду пробовать.
Спасибо за отличную программу, буду пробовать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Puppetry 3: автоматизированное тестирование без единой строки кода