[Resolved] Как удаленно запускать тесты на той же машине, где они разворачиваются?

Тесты проходят на Win7, а запускаются с Jenkins’а. А нужно, чтобы код вызывался на самой этой машине.
Есть ли способ запускать с Jenkins’а тесты через консоль, к примеру? Или еще как нибудь…

Прошу прощения, мне уже был дан примерный алгоритм в другом вопросе. Но реализовать не удалось. вопрос

Т.е. вы хотите запускать и исполнять тесты на Win7, минуя Jenkins?

Не совсем. Миновать Jenkins не получится. Нужно вызвать код на той машине, на которой запускаются тесты.

Jenkins Parameterized Build Plugin. С Win7 отправляете Jenkins’у POST с token вашей job’ы → он стартует тесты на Win7. Правда не совсем понял, зачем вам это надо.

Если тесты стартуют с Jenkins’а не работает Robot Class. Потому нужно, чтобы тесты запускались на той же машине, где и выполняются.

То вы говорите, что Jenkins нужен, то - не нужен. Почему тогда тема в разделе Jenkins, если он не нужен?

Чисто технически можно конечно собрать фрейм в jar, скомпилировать тесты, скопировать содержимое workspace на удаленную тачку и выполнить psexec (под админ юзером) с командой запуска всего это добра. Но это надо поиграться с post-build скриптами.

Если и это не устроит, то недавно поднималась тема запуска тестов на VM заказчика.

А вообще, лучше бы попросили ваших дэвов помочь разобраться с клиент-серверной платформой для робота. Там делов на пару часов вместе с инвестигейшеном.

Несколько часов читаю переписку и тоже не могу понять в чем тут дело, и в чем виноват Jenkins.
Размышления:
1 Из той темы, что приведена в начале топика:

  • имеется java robot, при помощи которого делается drag’n’drop
  • тесты на localhost прошли
  • потом ребята их запустили в CI
  • появилась ошибка
  1. Но в CI они их запустили под xvfb
    /usr/bin/Xvfb :1 -screen 1 1360x768x24&
    export DISPLAY=:1
  2. При этом
    "Java Robot:
  1. не умеет работать в headleass окружении;"
  1. luisa_s, а Вы пробовали запускать тесты в Jenkins без xvfb?

Вот этот вопрос, кажется, вводит читателя в ступор: “Потому нужно, чтобы тесты запускались на той же машине, где и выполняются.” Jenkins slave запускает то, что ему скажут на той же машине, где он сам установлен. Jenkins про другие машины ничего не знает.

Миновать я стараюсь не Jenkins, напротив, он обязательно должен быть в связке.
Меня интересовало как быть, если Robot Class будет работать только если и запуск и выполнение тестов должны быть на одной машине.

Извините, я новичок и не всегда могу ясно выражаться. Нужно, чтобы проходили тесты, запущенные в связанной задаче через Jenkins.

  1. Сначала тесты запускались под xvfb. Выяснилось, что Robot не будет так работать.
  2. С помощью Selenium Grid настроила запуск тестов на Win7, где осуществляется сессия с desktop. Но так, как запуск происходит с Дебиана, на которой Jenkins, выходит такая же ошибка, связанная с headless окружением.

Т.е. тема в итоге свелась к предыдущей: как заставить Robot работать ремоутно.

Мне кажется, что вопрос всё менее касается Jenkins.
Как по мне, то попробуйте:

  1. Откажитесь от xvfb
  2. Откажитесь от selenium grid
  3. Запускайте тесты, связанные с selenium (браузер) и robot на одном хосте. Так, как вы это делаете на localhost, когда разрабатываете тесты.
  4. Подумайте, готовы ли отказаться от того, что описано в п. 1-2 или поработать еще и сделать так, как описывал ArtOfLife.
1 лайк

Сделал за вас вашу работу. Исходники на GitHub - фактически 100%-я копия клиент-серверной платформы SikuliX.

Надеюсь, хоть встроенный клиент сможете сами собрать / перенести в ваш проект?

П.С. У вас больше времени ушло на создание тем / сообщений. Могли бы уже давно попросить ваших девелоперов адаптировать готовый код под ваши нужны. Тут работы на час. Не за что. :wink:

2 лайка

Огромнейшее спасибо!!