- PVSM.RU - https://www.pvsm.ru -
Здравствуйте.
В этой статье я бы хотел рассказать о своем опыте автоматизации визуального регрессионного тестирования.
Заняться автоматизацией визуального тестирования я решил после того, как случайно обнаружил небольшой баг в верстке. В проекте меняли дизайн одной страницы, и изменения задели не относящиеся к задаче страницы.
Решив, что проверять внешний вид страниц сайта вручную не вариант, я занялся автоматизацией.
Нужно было простое решение с удобными отчетами. Чтобы можно было писать автотесты без каких либо ограничений, сравнивать скриншоты страниц и элементов сайта и использовать разные браузеры.
После непродолжительных поисков готового решения / фреймворка было решено что проще будет написать свое решение с нужным функционалом и форматом отчетов. Из просмотренных вариантов подходящим показался только Galen Framework, но его я нашел уже после того как написал свое решение.
После внедрения и тестирования автотестов я решил немного доработать тесты и создать отдельный проект, чтобы потом использовать его на других сайтах и проектах.
VisualRegressionBoilerplate [1] — это относительно простой проект с определенной структурой.
Что-то вроде boilerplate шаблона / проекта для визуальных автотестов.
Проект предназначен для небольших сайтов / проектов. Для тех, кому нужно простое решение, без сложных фреймфорков.

В README проекта все описано более подробно.
В общем-то как угодно. Каких либо ограничений нет. Можно использовать паттерн page object или что-то другое.
Все что нужно, это использовать следующие функции для сравнения скриншотов:
Для страниц:
Сравнение скриншотов страницы:
comparePageScreenshots("index_page");
Сравнение скриншотов страницы с игнорированием одного элемента:
comparePageScreenshots("index_page_ignored_element", IndexPage.MACKBOOK_BLOCK);
Сравнение скриншотов страницы с игнорированием нескольких элементов:
comparePageScreenshots("index_page_ignored_element", new String[]{"section.panel.features.dark", "div.macbook"});
Сравнение скриншотов элемента страницы — элемент можно искать по css локатору
compareElementScreenshots("index_page_element", IndexPage.FORGE_BLOCK);
Либо можно передать объект класса WebElement
compareElementScreenshots("index_page_element", driver.findElement(By.cssSelector("a.full.forge")));
На данный момент в проекте примерно 50 тестов — страницы и разные элементы страниц.
Через баш скрипт автотесты запускаются и сайт тестируется сразу в трех расширениях (mobile, tablet, desktop).
Есть некоторые проблемы из-за динамичного контента и из-за того что некоторые элементы сайта не всегда успевают загружаться вовремя, но со своей задачей автотесты вполне справляются.
Любые изменения в верстке видны сразу.
Ссылка на репозиторий проекта — VisualRegressionBoilerplate [1]
Автор: Alex Predewill
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/325231
Ссылки в тексте:
[1] VisualRegressionBoilerplate: https://github.com/predewill/VisualRegressionBoilerplate
[2] Источник: https://habr.com/ru/post/461553/?utm_source=habrahabr&utm_medium=rss&utm_campaign=461553
Нажмите здесь для печати.