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

Teamcity. Требуется запуск нативного приложения перед запуском тестов.

Теги: #<Tag:0x00007fd773ab85e0> #<Tag:0x00007fd773ab81f8> #<Tag:0x00007fd773abfc00> #<Tag:0x00007fd773abf138>

В проекте 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)

Браузер в хеадлесс режиме запускается?