Как стать автором
Обновить

Комментарии 8

Может быть есть какая-то реализация шаблона Page Object для Puppeteer?

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, как в статье, однозначно не стоит.

В Яндексе для E2E тестирования используется Hermione. К данному инструменту также написаны некоторые удобные плагины.
Спасибо за статью! Достаточно много пользовался Selenium и различными фреймворками «вокруг его», но в итоге перешёл к подходу, в котором webpack в тестовую сборку пакует набор тестов, написанных на javascript. Набор тестов может быть запущен как вручную тестировщиком прямо с web-интерфейса, так и автоматическим параметром при настройке сборки (спец. сборка webpack'ом для jenkins, например).
При автоматическом запуске, браузер стартовал c Node скрипта, который в итоге ожидал, что фронт пришлёт ему результаты прохождения тестов.
Как раннер использовал mocha, но к нему особо привязан не был, можно использовать какой вам угодно.
Для упрощения работы с интерфейсом чистым javascript'ом использовал вот такую поделку github.com/evegreen/useractions
Из плюсов:
  • Я почти перестал писать явно ожидание каких-либо используемых мною далее элементов на странице, так как useractions автоматически перед любым действием ждал их (реализация похожа на FluentWait)
  • При сравнении с идентичными тестами на Selenium я получил прирост в скорости в 15 раз (в среднем) (и это при том, что в тестах на Selenium везде использовался FluentWait!)
  • Тесты работали абсолютно идентично в Chrome, Chrome для Android и Firefox без каких-либо танцев с бубном (уверен, что и в других актуальных браузерах всё заведётся так же).

Из минусов (субъективно):
  • Тестировщикам пришлось писать тесты на JS, а это им далось сложнее, чем к примеру на Java / Python + Selenium
Когда тестировал интерфейсы использовали связку Selenium + Python (версии 3). К сложению сейчас наблюдаю проблему с совместимостью с браузерами, хотя и тогда она была (тесты проходившие на FF не всегда проходили на IE или Chrome). Возможно тестирование на js лучше с этим справляется.
пишу тесты фронта, используя codecept.io, довольно удобный и простой фреймворк (nodejs + webdriverio + mocha)
Ппц, гляжу форма знакомая, имя вроде где-то слышал смотрю — батюшки, да этоже создатель невообразимого вордпресс-говнеца которое я сейчас поддерживаю, от него клиент ко мне сбежал так он ещё наехал на меня типа моя VPS на Ovh медленная и небезопасная, коуч нашёлся, да.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий