Скриншот TestCafe: поставщик браузера для Android. crop.js "Невозможно найти область страницы в скриншоте окна браузера" - PullRequest
2 голосов
/ 29 марта 2019

Я работаю над расширением testcafe-provider-android . Я хочу, чтобы он поддерживал Firefox и скриншоты.

Снимки экрана сделаны с помощью средств отладки Android. Он отлично работает с Chrome, но не с Firefox.

crop.js # calculateMarkPosition () не удается найти метку.

Кажется, я понял, как работает этот знак.

В utils.js # generateScreenshotMark () генерируется строка из 32 нулей или единиц, это «id». «1» становится белой точкой, а «0» становится черной точкой. «MarkSeed» - это идентификатор, преобразованный в массив байтов. "markData" - изображение в кодировке base64, готовое для использования в URL.

На клиенте screenshot-mark.js размещает это изображение в правом нижнем углу страницы.

crop.js # calculateMarkPosition () сканирует скриншот построчно, чтобы найти метку и правильно обрезать изображение.

Вот идентификаторы и скриншоты для Chrome и Firefox:

Примечание: я манипулировал кодом, чтобы всегда генерировать один и тот же идентификатор. Скриншоты обрезаны и увеличены.

ID

00101111000011000011000011110100

Chrome:

Screenshot from Chrome

Firefox:

Screenshot from Firefox

На мой взгляд, они выглядят одинаково. Так почему же это не работает?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2019

Я нашел причину такого поведения.

В Chrome черные точки имеют значение rgba rgba (0, 0, 0, 1), а в Firefox - rgba (1, 1, 1, 1);

Вот почему индекс не может быть найден - значения не такие, как ожидалось.

Теперь мне нужно выяснить, является ли это ошибкой в ​​Firefox.

UPDATE:

Это происходит потому, что Firefox корректирует цвета. Проблема описана в Ошибка TestCafe # 2918 и была решена с помощью Запрос извлечения TestCafe # 3732

Нам осталось только дождаться следующего релиза.

3 голосов
/ 01 апреля 2019

Если вы можете обрезать снимки экрана с помощью сторонних инструментов, вам нужно отключить генерацию встроенного снимка экрана , установив для свойства hasChromelessScreenshots значение false.

Я бы порекомендовал вам открыть новую проблему в репозитории TestCafe и предоставить все источники снимков экрана.

...