Behat на Windows — делать скриншоты

У меня есть несколько тестов Behat, которые делают скриншоты, используя что-то похожее на это:

$driver->getWebDriverSession()->screenshot();

Кто-нибудь знает плагин или расширение Behat, которые могут сравнить два скриншота?
И это должно работать на Windows.

3

Решение

То, что вы ищете, это расширение pdiff: для окон это, вероятно, выглядит так: http://seleniumrecipes.com/content/using-perceptual-difference-pdiff-tool

Снимки экрана определенно не «сделаны только при неудаче» — вы, безусловно, можете сделать базовый набор снимков экрана и использовать такой инструмент, как https://github.com/jadu/BehatPerceptualDiffExtension провалить тест, если результирующее различие восприятия отклоняется (то есть, если изменение css достигнуто неожиданным образом).

Это вилка (https://github.com/ksenzee/BehatPerceptualDiffExtension/commits/master) PerceptualDiffExtention добавляет концепцию различий — то есть областей, которые вы бы хотели игнорировать — например, если у вас было какое-то слайд-шоу, на снимке экрана может быть ошибка, так как случайный начальный слайд отличается.

Кроме того, автор недавно выступил с докладом об использовании различий в восприятии с Behat: http://2014.pnwdrupalsummit.org/pacific-nw-drupal-summit-2014/sessions/deploying-confidence-automated-visual-regression-and поэтому есть несколько слайдов, которые вы можете использовать в качестве ресурса.

1

Другие решения

Я работаю с Behat некоторое время, и это, конечно, не так популярно, как должно быть. Существует не так много популярных плагинов от какой-либо команды, кроме Behat’s, и определенно нет хорошо известного / поддерживаемого плагина для Behat для сравнения изображений. На самом деле это будет справедливо и для PHP, за исключением GD и Imagic, которые имеют гораздо более широкую область применения.

Кроме того, логика не очень понятна, что и как вы сравниваете. Скриншоты обычно делаются при неудаче. Сравнение двух скриншотов неудачных тестов не имеет большого смысла, только сравнение скриншотов неудачных тестов со скриншотами соответствующих тестов, которые были пройдены ранее. Тогда возникает вопрос, где и как вы получите эти действительные скриншоты, и всю цепочку других вопросов, поступающих отсюда.

Это звучит как очень специфическая задача, и я уверен, что только ограниченной группе пользователей понадобится что-то подобное, возможно, с большой логикой, уникальной и специфичной для их случая. С другой стороны, реализовать базовое сравнение изображений в PHP не так сложно, если у вас есть базовые навыки работы с графикой в ​​PHP.

Одна вещь, которая приходит на ум, это Imagick::compareImagesсмотрите официальный документация. Там также, кажется, много сообщений в блоге, как этот один или этот один, который показывает разные способы сделать это.

0