Комментарии 8
Может быть есть какая-то реализация шаблона Page Object для Puppeteer?
0
Есть вот такой паттерн: https://medium.com/@boriscoder/page-object-for-testing-react-js-components-49cddb59adb7
Он от фреймворка не зависит, с некоторыми изменениями можно и puppeteer обернуть.
0
UPD вот пример PageObject безо всяких библиотек для страницы из статьи
function ContactForm(page) {
this.init = () => page.waitForSelector("[data-test=contact-form]");
this.fillField = async (name, value) => {
const selector = `[name=${name}]`;
await page.click(selector)
await page.type(selector, value)
};
this.submit = () => page.click("button[type=submit]");
}
использование
test('fill the form', async () => {
const form = new ContactForm(page);
await form.init();
await form.fillField("name", lead.name);
await form.fillField("email", lead.email);
await form.submit();
})
писать простыни однотипных click,type, как в статье, однозначно не стоит.
0
Спасибо за статью! Достаточно много пользовался Selenium и различными фреймворками «вокруг его», но в итоге перешёл к подходу, в котором webpack в тестовую сборку пакует набор тестов, написанных на javascript. Набор тестов может быть запущен как вручную тестировщиком прямо с web-интерфейса, так и автоматическим параметром при настройке сборки (спец. сборка webpack'ом для jenkins, например).
При автоматическом запуске, браузер стартовал c Node скрипта, который в итоге ожидал, что фронт пришлёт ему результаты прохождения тестов.
Как раннер использовал mocha, но к нему особо привязан не был, можно использовать какой вам угодно.
Для упрощения работы с интерфейсом чистым javascript'ом использовал вот такую поделку github.com/evegreen/useractions
Из плюсов:
Из минусов (субъективно):
При автоматическом запуске, браузер стартовал c Node скрипта, который в итоге ожидал, что фронт пришлёт ему результаты прохождения тестов.
Как раннер использовал mocha, но к нему особо привязан не был, можно использовать какой вам угодно.
Для упрощения работы с интерфейсом чистым javascript'ом использовал вот такую поделку github.com/evegreen/useractions
Из плюсов:
- Я почти перестал писать явно ожидание каких-либо используемых мною далее элементов на странице, так как useractions автоматически перед любым действием ждал их (реализация похожа на FluentWait)
- При сравнении с идентичными тестами на Selenium я получил прирост в скорости в 15 раз (в среднем) (и это при том, что в тестах на Selenium везде использовался FluentWait!)
- Тесты работали абсолютно идентично в Chrome, Chrome для Android и Firefox без каких-либо танцев с бубном (уверен, что и в других актуальных браузерах всё заведётся так же).
Из минусов (субъективно):
- Тестировщикам пришлось писать тесты на JS, а это им далось сложнее, чем к примеру на Java / Python + Selenium
0
Когда тестировал интерфейсы использовали связку Selenium + Python (версии 3). К сложению сейчас наблюдаю проблему с совместимостью с браузерами, хотя и тогда она была (тесты проходившие на FF не всегда проходили на IE или Chrome). Возможно тестирование на js лучше с этим справляется.
0
пишу тесты фронта, используя codecept.io, довольно удобный и простой фреймворк (nodejs + webdriverio + mocha)
0
Ппц, гляжу форма знакомая, имя вроде где-то слышал смотрю — батюшки, да этоже создатель невообразимого вордпресс-говнеца которое я сейчас поддерживаю, от него клиент ко мне сбежал так он ещё наехал на меня типа моя VPS на Ovh медленная и небезопасная, коуч нашёлся, да.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Jest и Puppeteer: автоматизация тестирования веб-интерфейсов