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

ruby + jenkins как?


(Kostuan) #1

Как привязать ruby тесты к jenkins ci?

С какими параметрами создавать job?

Кто какие средства CI использует для автоматизации тестов на ruby?


(d3unka) #2

Запускать можно как угодно. Всеми доступными средстами jenkins

  • linux shell
  • windows cmd
  • ant
  • maven
Сначала запустите тесты из cmd. Потому напишите батник или .sh скрипт. Прирутите его к Jenkins.
Потом повозитесь с настройками систем сборок как ruby make, ant.
Главное на выходе получить resuts.xml в формате junit. Чтобы на jenkins результаты отображались.

 


(Mykhailo Poliarush) #3

да, d3unka прав, если вы просто можете запустить тесты с коммандной строки или в терминале, то поключение запуска тестов - очень простая процедура. 

касательно того, что передавать, обычно это касается окружения, сервер, порт, user, файл конфигурации, base url, и т.д.


(Mykhailo Poliarush) #4

вот еще полезная ссылочка http://www.build-doctor.com/2009/04/08/every-continuous-integration-server-that-supports-ruby-git/


(Kostuan) #5

Спасибо. Но всё равно не получается например у меня тесты лежат в /test/ я в терминале запускаю ruby /test/1.rb всё работает создаю .sh с тем же парамтром тоже работает прописываю что написанно в скрипте в jenkins в job в панели сборка выбираю " выполнит команду shell" и вбиваю команду   "ruby /test/1.rb"  запускаю соборку она сразу падает и не запускает ничего... Что я не так делаю?

Пробовал под виндовс тоже самое только выбирал не shell а выполнить команду windows.


(d3unka) #6

Посмотрите логи job-ы, которые дает Jenkins и добавьте сюда. Скорее проблема в путях. Локально они одни, а через jenkins другие


(Kostuan) #7

Started by user anonymous
[workspace] $ cmd /c call C:\WINDOWS\TEMP\hudson4149779259610428365.bat

C:\Program Files\Jenkins\jobs\1\workspace>ruby C:\test\1vv.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.0.9-x86-mingw32/lib/ffi/platform.rb:27: Use RbConfig instead of obsolete and deprecated Config.
[remote server] file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/firefoxDriver.js:401:in `unknown': Unable to locate element: {"method":"class name","selector":"auth"} (Selenium::WebDriver::Error::NoSuchElementError)
from [remote server] file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/firefoxDriver.js:424:in `unknown'
from [remote server] file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:306:in `unknown'
from [remote server] file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:320:in `unknown'
from [remote server] file:///C:/WINDOWS/Temp/webdriver-profile20111107-1508-1wv64u7/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:197:in `unknown'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/response.rb:50:in `assert_ok'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/http/common.rb:54:in `new'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/http/common.rb:54:in `create_response'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/bridge.rb:426:in `raw_execute'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/bridge.rb:404:in `execute'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/remote/bridge.rb:372:in `find_element_by'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.10.0/lib/selenium/webdriver/common/search_context.rb:41:in `find_element'
from C:/test/1vv.rb:7:in `<main>'

C:\Program Files\Jenkins\jobs\1\workspace>exit 1
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

теперь стал думать по 2 минуты прежде чем упасть...

 


(d3unka) #8

Вот вам и ответ в логах. ВебДрайвер не может найти елемент на странице.

unknown': Unable to locate element: {"method":"class name","selector":"auth"} (Selenium::WebDriver::Error::NoSuchElementError)

 

Ошибку ищите вот здесь 

search_context.rb:41:in `find_element'

41 строка класса search_context


(Kostuan) #9

 Спасибо всё заработало там просто в конце были пустые строчки в тесте их удалил и заработал... А в линуксе под root пользователем, в логах пишет нет прав на открытие директории где лежат тесты с ubuntu запускал. Думаю другой дистрибутив поставить просто...


(d3unka) #10

Не совсем понял проблему. Не видно результатов выполнения на самом Jenkins? 


(Kostuan) #11

Вот что под линуксом выдаёт Jenkins в логах.

Started by user anonymous
[workspace] $ /bin/sh /tmp/hudson6998138199984298712.sh
ruby: Permission denied -- /test/1vv.rb (LoadError)
Build step 'Выполнить команду shell' marked build as failure
Finished: FAILURE


(d3unka) #12

Проблема в правах юзера  anonymous

Нужно запустить tomcat(сервер на котором запущен jenkins) от юзера с правами на редактирование в папках, в которых происходит выполнение тестов


(Kostuan) #13

можно ли сделать так что бы jenkins запускал тесты не в фоновом режиме?


(Mykhailo Poliarush) #14

а зачем запускать не в фоновом режиме? тебе видеть что происходит?


(d3unka) #15

Можно, если запустить jenkins не как сервис, а как приложение на tomcat. 


(Kostuan) #16

Почему то в фоновом режиме не всё отрабатывает. Просто запускаю тест всё нормально всё отрабатывает а в jenkins падает на форме с сообщением... Не могу понять почему...


(Kostuan) #17

А можно поподробнее как это сделать?


(Mykhailo Poliarush) #18

лучше подключить запись видео, снятие скриншотов и HTML сорсов страницы, когда она фейлиться.

это конечно затратно по ресурсам, потому можно подключить опцию только для некоторых тестов которые сбоят

ссылки по теме

http://www.theautomatedtester.co.uk/blog/2010/castro-selenium-video.html

http://coreygoldberg.blogspot.com/2011/06/python-selenium-webdriver-capture.html

http://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver

http://stackoverflow.com/questions/7263824/get-source-of-webelement-in-selenium-webdriver-python


(Kostuan) #19

Под линуксом заработало спасибо. Под виндовс всё равно в фоновом режиме запускает.