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

jenkins
Теги: #<Tag:0x00007fedb9e80a18>

(Elena Kalosha) #1

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


(Виталий Коряков) #2

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


(Elena Kalosha) #3

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


(Lev Yarushin) #4

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


(Виталий Коряков) #5

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


(Elena Kalosha) #6

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

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

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

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


(Виталий Коряков) #7

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

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

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


(Lev Yarushin) #8

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


(Elena Kalosha) #9

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


(Lev Yarushin) #10

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

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


(Elena Kalosha) #11

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


(Ray Romanov) #12

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


(Lev Yarushin) #13

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


(Elena Kalosha) #14

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


(rmerkushin) #15

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


(Сергей Кузьмин) #16
export DISPLAY=:0
Xvfb $DISPLAY -screen 0 1600x1200x32 -ac >/dev/null 2>&1 &

(Lev Yarushin) #17

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

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

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


(Elena Kalosha) #18

Вобщем ситуация немного прояснилась!
Сперва скажу что 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) чтобы браузер смог развернуться в него.


(Lev Yarushin) #19

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


(Сергей Кузьмин) #20

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