t.me/atinfo_chat Telegram группа по автоматизации тестирования

При прохождении теста в jenkins не видна вся страница

Теги: #<Tag:0x00007f9afa58e228>

Подскажите как можно настроить jenkins, чтобы при прохождении теста была видна вся страница? Проблема - не все элементы, которые находятся при обычном прохождении, видны в jenkins

в дженкинсе на виртуалке страница может подгружаться быстрее/медленнее, и если у вас не стоят ожидания, то тесты будут падать. Ставьте ожидания появления элементов, если они у вас не стоят.

Ожидания стоят, но не всегда видны элементы по краям страницы, и в скриншотах края страницы обрезаны

Полагаю что в Jenkins тест у вас проходит headless, и используется что-то вроде xvfb.
Возможно дело в размере окна браузера?
Откройте чуть больше информации, что именно у вас используется для тестов, которые запускает Jenkins

Ставьте ожидания на элементы, которых не видно.

Дело в том что при запуске теста в дженкинсе viewport имеет размер что то около 1024х768, а в реальности тесты запускаются и дебажаться на бОльшем разрешении экрана.
Тест на дженкинсе запускается на Firefox или Chrome. Windows server 2012.
Дженкинс установлен как сервис. Есть галочка Allow service to interact with desktop.

Если нарпример запускать тест при помощи phantomjs driver то каким то образом у него получается расширять viewport до размеров целой страницы.

Так вот вопрос в следующем, как бы теперь локализовать проблему? Это дело в самом используемом вебдрайвере или в настройках Дженкинса?

Встречали ли вы такие проблемы?

это и есть проблема.

ну а это и есть решение.

если не подходит phantomjs, скрольте браузер до нужного элемента, или по координатам.

Елена, Jenkins - это CI. Что вы используете для написания тестов?

для написания тестов: java+testNG+selenide

Тогда попробуйте вот так:

http://selenide.org/javadoc/3.8/com/codeborne/selenide/Configuration.html#browserSize

Так тоже не получается больше 1024х768

FireFox делает полностраничные скриншоты, а вот Chrome только в области видимости окна, нужно принудительно хрому задавать размер окна.

А вы видите размер окна браузера при запуске теста Jenkins? Может ещё попробовать развернуть на весь экран?
http://selenide.org/javadoc/2.4/com/codeborne/selenide/Configuration.html#startMaximized

Да, мы пробовали изменять размеры браузера, но все равно скриншоты с дженкинса получаются такими же. (Размер браузера меняется, проверяли локально.)

А не пробовали сначала разрешение у xvfb повысить, а потом уже растягивать хром на максимум через chrome options?
Для Jenkins есть плагин для xvfb: https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin

export DISPLAY=:0
Xvfb $DISPLAY -screen 0 1600x1200x32 -ac >/dev/null 2>&1 &

Господа, xvfb там не пахнет )

Вот аналогичная проблема:

Решают, заходя по RDP на тестовый стенд, под админом с нужным разрешением.

Вобщем ситуация немного прояснилась!
Сперва скажу что xvfb бывает на Linux.

Касательно нашей проблемы:
https://bugs.chromium.org/p/chromedriver/issues/detail?id=873

Тут говорится вот такое:
Status: WontFix
There is a limitation -chromedriver cannot increase the browser window size beyond its machine’s resolution
Please refer to Issue297

Как и предполагалось, мы не можем Chrome растянуть больше чем “вьюпорт” системы.

А вот эксперименты с Firefox дали результат: Можно выставить кастомный резмер окна и он раскукожит вьюпорт до заданных размеров.

например мы делали так в селениде
Configuration.startMaximized = false;
Configuration.browserSize = “1920x2500”;

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

Phantomjs можно не ресайзить, он сам подгоняет скрины по размеру контента всей страницы

Chome же оставляет нам костыль с доскроливанием до нужного элемента. (надо писать кастомную обертку для этого действия)

Таким образом получается что задачей теперь стоит выяснить как же задать “первоночальное” разрешение экрана в дженкинсе для Windows(к примеру 1920 на 1080) чтобы браузер смог развернуться в него.

Елена, а не пробовали решение которое я привёл выше? Нужно зайти по RDP под админом, с монитором имеющим нужное разрешение.

извиняйте - не заметил что вы теструете на Windows. Просветите пожалуйста - а зачем - ведь Сhrome не IE - работает всюду.
ограничение размерами viewport это " позиция " - разработчики chrome считают что так правильнее.