Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

IEDriver, Jenkins и стабильность тестов


(Keiga) #1

Добрый день.

Возникла проблема стабильности выполнения тестов на удаленной машине. Дело в том что на локальной машине при сборке проекта все тесты проходят успешно, в случае же запуска этого же проекта на удаленной машине через Jenkins возникают случайные ошибки(в случае если тестов несколько). При этом если я подключен к удаленной машине через удаленный рабочий стол и контролирую выполнение, то ошибок нет. Не могу понять в чем может быть причина и как можно увеличить стабильность.

Использую следующую связку:

  • на локальной машине: Maven 3.1.0, IDEA 12.1.4, IEDriverServer
    2.35.3, Selenium 2.35.0, TestNG 6.8.7, IE9
  • на удаленной машине: Maven 3.1.0, Jenkins 1.531, IEDriverServer
    2.35.3, Selenium 2.35.0, TestNG 6.8.7, IE9

Capabilities стоят такие: [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=9, ie.usePerProcessProxy=false, ignoreProtectedModeSettings=false, cssSelectorsEnabled=true, requireWindowFocus=false, initialBrowserUrl=http://localhost:16876/, handlesAlerts=true, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]

Браузер запускается и инициализируется используя класс WebDriverFactory
На удаленной машине при сборке сначала запускается IEDriverServer, потом открывается браузер, выполняются все тесты, выгружается браузер, выгружается сервер.

Если держать сервер включенным и настроить тесты на коннект к уже запущенному серверу, это может что-то изменить? Или изменение Capabilities?

Буду рад любым рекомендациям по оптимизации данного процесса.


(vmaximv) #2

Однозначно могу сказать, что requireWindowFocus при ремоут ране лучше сетать в true и не запускать драйвер как службу.


(Keiga) #3

К сожаление при requireWindowFocus в true всё еще хуже. Если нет подключения через удаленный рабочий стол, то все тесты валяться по NoSuchElement, если же смотреть за всем этим безобразием то всё ок.


(vmaximv) #4

Что значит “нет подключения”? Машина залочена? Если это так - то решения нет, либо поднимайте на ремоут машине VM, либо пробуйте синтетические эвенты (маловероятно что поможет).


(Keiga) #5

Машина залочена. Соединяюсь через свою доменную запись по удаленному столу средствами windows. Запускаю под этой учеткой Jenkins и завершаю удаленный сеанс. Если поступаю так, то при requireWindowFocus = true валятся ошибки по всем тестам, если же сеанс не завершать, то видно как стартует браузер и все тесты успешно выполняются друг за другом.

Вы предлагает на удаленной машине запустить VM c IE и там запустить Selenium Server, подключаясь к нему через RemoteDriver?


(vmaximv) #6

[quote=“Keiga, post:5, topic:3431”]
Вы предлагает на удаленной машине запустить VM c IE и там запустить Selenium Server, подключаясь к нему через RemoteDriver?
[/quote]Это будет самый надежный вариант. На залоченой машине нативные эвенты работать не будут - проверено еще со времен SilkTest.


(Дмитрий Жарий) #7

Я в основном, гоняю тесты с nativeEvents=false на залоченой машине. С nativeEvents=true – действительно возникают проблемы. Еще, на залоченой машине, в IE скриншоты получаются «черным квадратом».
Для nativeEvents=true, я тоже использую отдельную виртуалку.
Для реальной машины в домене, можно использовать подключение по UltraVNC вместо Remote Desktop и специальную утилиту, которая не дает машине залочиться, например:
http://www.symantec.com/connect/downloads/readynosleepexe-prevents-screensaver-and-pc-locking