Size: a a a

QA — Автоматизация

2019 November 20

AB

Alexei Barantsev in QA — Автоматизация
вопрос в том, как удобно организовать обновление эталонов
источник

BO

Boris Osyanin in QA — Автоматизация
Что значит удобно в данном случае? Мне вот удобно.
Таска которая пробегается, и сохраняет все урлы проекта, которые я в конфиге указал.

И другая таска которой можно например в csv файле скормить те урлы и/или селекторы по которым надо пробежатся
источник

BO

Boris Osyanin in QA — Автоматизация
Хотя с селекторами уже сложнее.
Надо какое-то условие придумывать, тип если зашли на страницу х то один набор, страницу у другой набор
источник

BO

Boris Osyanin in QA — Автоматизация
Думать для какой страницы какое значение допустимых расхождений
источник

LY

Lev Yarushin in QA — Автоматизация
Alena Gorbunova
Добрый день! Внедряем фреймворк для автоматического тестирования отображения веб-приложений на основе сравнения скриншотов. Подскажите пожалуйста, как решается проблема вариативности контента? Пока пришел на ум только вариант инжектить в страницу разметку нужного блока, но есть вероятность, что разметка тоже может меняться в процессе разработки, поэтому такой тест может стать неактуальным. Смотрела в сторону библиотеки sinonjs, но не поняла, можно ли ее применять для этих целей, или она подойдет только для тестирования api.
Тестируйте компоненты UI отдельно. Если у вас они организваны вот так, то при помощи одного из этих инструментов вы сможете устанавливать свои компоненты в нужные состояния.
источник

VL

V L in QA — Автоматизация
Alena Gorbunova
Добрый день! Внедряем фреймворк для автоматического тестирования отображения веб-приложений на основе сравнения скриншотов. Подскажите пожалуйста, как решается проблема вариативности контента? Пока пришел на ум только вариант инжектить в страницу разметку нужного блока, но есть вероятность, что разметка тоже может меняться в процессе разработки, поэтому такой тест может стать неактуальным. Смотрела в сторону библиотеки sinonjs, но не поняла, можно ли ее применять для этих целей, или она подойдет только для тестирования api.
Привет! Какие именно у Вас проблемы с вариативностью?
Из опыта
1) Какой то кусочек экрана нельзя контролировать (например часики тикают)
- ищем решения чтобы исключить (вырезать) его из проверок
2) Анимация играет в цикле
- ищем решения чтобы перемотать ее на определенное состояние (последний кадр) - можно через CSS
3) В целом полезно замораживать состояние данных на экране для такого тестирование (mocks, тестовые данные)
источник

VL

V L in QA — Автоматизация
и да - на уровне тестирования отдельных компонентов (как пишут выше) эта проблема решается легче - всякие сторибуки очень помогают
источник

AG

Alena Gorbunova in QA — Автоматизация
V L
Привет! Какие именно у Вас проблемы с вариативностью?
Из опыта
1) Какой то кусочек экрана нельзя контролировать (например часики тикают)
- ищем решения чтобы исключить (вырезать) его из проверок
2) Анимация играет в цикле
- ищем решения чтобы перемотать ее на определенное состояние (последний кадр) - можно через CSS
3) В целом полезно замораживать состояние данных на экране для такого тестирование (mocks, тестовые данные)
да проблема на самом деле на поверхности, только решение я найти пока не смогла сама, может оно конечно тоже на поверхности...Ну самый простой пример - есть страница с набором разных карточек, допустим портфолио, оно естественно периодически обновляется, порядок карточек меняется, то есть если я допустим сделаю и сохраню скрин первой карточки в списке, то при следующем тесте первой может оказаться другая карточка (с другим текстом, бэкграундом) и хотя состояние у нее будет норм, но фреймворк посчитает это как дифф и выплюнет fail.
источник

AG

Alena Gorbunova in QA — Автоматизация
вот по п3 - В целом полезно замораживать состояние данных на экране для такого тестирование (mocks, тестовые данные) - вы могли бы подсказать куда копать?
источник

AG

Alena Gorbunova in QA — Автоматизация
я с таким еще не работала, или это зависит от реализации проекта?
источник

VL

V L in QA — Автоматизация
Alexei Barantsev
на самом деле разумный путь есть, надо переснятие скриншотов тоже автоматизировать, но готовых решений, которые позволяют это удобно делать, я не видел
Один мой товарищ очень хороший Javascript'ер сделал хорошее решение
https://github.com/zaqqaz/visual-unit-tests
идея в том что регенерация эталонов происходит на стороне CI - когда эталоны не совпадают то  разработчики могут попросить CI их перегенирировать в Pull Request'е

его презентация про это
https://denis.by/visual-tests/#/
источник

AB

Alexei Barantsev in QA — Автоматизация
да, кастомные решения есть, много кто их делает, я про это и написал. а вот готовых "коробочных" решений я пока не встречал
источник

VL

V L in QA — Автоматизация
Alexei Barantsev
да, кастомные решения есть, много кто их делает, я про это и написал. а вот готовых "коробочных" решений я пока не встречал
из готовых коробочных - applitools
источник

LY

Lev Yarushin in QA — Автоматизация
Ну я же про это и писал выше. Делается плейбук, в нём все компоненты UI. Затем берём инструмент под свой любимый фронтенд-фреймворк, через него устанавливаем компонент в нужное состояние и сравниваем с эталоном.
Гляньте статейки-то )
источник

VL

V L in QA — Автоматизация
Alena Gorbunova
вот по п3 - В целом полезно замораживать состояние данных на экране для такого тестирование (mocks, тестовые данные) - вы могли бы подсказать куда копать?
зависит от проекта и технологий
источник

AB

Alexei Barantsev in QA — Автоматизация
V L
из готовых коробочных - applitools
пожалуй, да. но он сервис, локально не развернёшь...
источник

МЁ

Мюсля 🙈 Ёшшик in QA — Автоматизация
Evgenii B
А в чем проблема-то? Xpath как строка?
@FindBy(xpath = "")
List<WebElement> menuLinks;

здесь один общий xpath на список. мне надо 5 элементов списка для каждого свой путь
источник

VL

V L in QA — Автоматизация
Alexei Barantsev
пожалуй, да. но он сервис, локально не развернёшь...
просто решение со скриншотами жталонными цепляет несколько компонентов и его как селенид одним махом не воткнешь
1) нужна механика снимать эти скриншоты
2) нужна среда чтобы они были одинковые (docker)
3) нужна штука которая будет гонять тесты рендерить новые скрины и проверять их против эталона (проверки могут быть как в лоб так и что то умное (вырезка регионов, итд)
4) нужен репортинг чтобы красиво показывать разницу
5) нужен CI pipeline который гоняет 3-4
6) нужен CI pipeline который регенирирует эталоны и запускает 5
источник

AB

Alexei Barantsev in QA — Автоматизация
про селенид то же самое можно сказать — нужны браузеры, нужна инфраструктура для их запуска, нужен репортинг, нужен пайплайн, чтобы все это запускалось
источник

AB

Alexei Barantsev in QA — Автоматизация
просто пока никто не сделал :)
источник