В проекте web приложение работает с нативным плагином, который обрабатывает все команды полученные с вэба.
Тесты запускаются как с IDE так и с консоли (gradle) корректно.
Одна из задач на данный момент - найти решение для частичного и полного запуска всех тестов.
Настроил запуск одного класса с тестами. Теперь началась война с запуском плагина перед тестами.
Делаю так, в грэдле создал три таски:
- Скачать архив с установленным приложением
- Распакковать
- Через консоль запустить *.exe
Этих действий достаточно в обычной системе, но как себя ведет тимсити или джкенкинс я хз. По сути они создают виртуальное пространство для тестов.
В итоге требуется на этой “виртуалке” стартануть exe-шник и запустить тесты.
Подскажите может кто сталкивался или знает куда копать? И возможно ли это вообще?
Более детально.
Когда открывается вэб приложение выполняется проверка на наличие плагина и его версии. Если все ок открывается сессия для работы и на странице появляется форма логина. Для запуска плагину требуется от силы несколько секунд.
public static void login(String storagePath, String keyName, String keyPassword) {
if (!$x("//*[@id=\"client\"]").isSelected()) {
$x("//*[@id=\"client\"]")
.waitUntil(visible, 10000)
.click();
}
....
Ошибки из последнего запуска говорит о том, что элемент client не был найден.
Предполагаю, что это из-за того что плагин не обнаружен и соотвестсвенно форма логина не отображается.
Element should be visible {By.xpath: //*[@id=“client”]}
Element: ‘’
Actual value: visible:false
Screenshot: file:/D:/TeamCity/buildAgent/work/8f08f9ec114bd1ca/build/reports/tests/1596721182164.1.png
Page source: file:/D:/TeamCity/buildAgent/work/8f08f9ec114bd1ca/build/reports/tests/1596721182164.1.html
Timeout: 10 s.
at com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:72)
at com.codeborne.selenide.commands.Should.execute(Should.java:24)
at com.codeborne.selenide.commands.Should.execute(Should.java:10)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:150)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:100)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:66)
at com.sun.proxy.$Proxy18.waitUntil(Unknown Source)
at com.dbosoft.iBankAutotests.pageObjects.Login.login(Login.java:57)
at com.dbosoft.iBankAutotests.tests.UAPayment_Smoke_Tests.before(UAPayment_Smoke_Tests.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)