Автоматизация пред-прода - оптимальные пути реализации

Цель: улучшения борьбы с регрессиями на пре-проде
Заказчик составил тест-кейсы в виде Regression testing - Main features.
Несколько человек после деплоев в ручную проходят эти тест-кейсы.
Требования: доступ/возможность запуска тестов удалено вне зависимости от места нахожнения.
Был опыт на другом проекте написания тестов на селениуме, запускались на тоже на пре-проде под PhpUnit. Только там, все (Selenium и PhpUnit) были уже установленны. На новом проекте надо все делать с нуля.

Как оптимально организовать автоматизацию тестирования?
Я так понимаю надо ставить Selenium Server и PhpUnit. Что еще?
Когда я в контейнере Selenium Server и PhpUnit поставил и запустил пробный тест, то получил ошибку:
“PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: LINUX”
значит еще надо и браузер ставить! Понятно что тест где-то должен выполняться…
Но ставить браузер на пре-проде, как-то странно…
Из всего этого вопрос, как оптимальнее и правильно все замутить с возможностью потом интегрировать на Jenkins?

Вы похоже не понимаете как работает селениум и браузер. Зачем вам устанавливать селениум на пре-проде (назовем его staging). Он может находится в любом месте, откуда доступен домен вашего staging сервера. Какая разница откуда открывать сайт?

а как по другому?
каждый менеджер у себя должен установить селениум?
они от одного слова офигеют))

я даже не знаю заранее сколько их (ПМ) будет и где (географически) они будут
в идеале - нажать кнопочку и получить результат (для ПМ)

Тест запускается на машине с Integration Server (Jenkins, TeamCity, Travis etc), я так понимаю в слейвах сейчас надобности нет, поэтому рассмотрим простейший пример. По клику “Build” определенной задачи (например My Super Selenium Test) запускается процесс прогонки тесов, там же ожидаете и результат и сразу же получаете репорт. Вы хотите чтобы менеджер видел выполнение теста в real time? или как? или просто отчет и репорт о том что и как прошло?

Поставил в контейнере (он имитирует сервер) браузер Firefox и ошибка указанная выше:

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: LINUX

пропала

нет в real time - не надо
как в пхп-юните:

phpunit WebTest
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.

F

Time: 28 seconds, Memory: 3.00Mb

There was 1 failure:

  1. WebTest::testTitle
    Failed asserting that two strings are equal.
    — Expected
    +++ Actual
    @@ @@
    -‘Example WWW Page’
    +‘IANA — Example domains’

/home/giorgio/WebTest.php:13

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

да имено так))

пока не касаясь Jenkins, что надо сделать, где тесты находятся, где пхп-юнит, где селениум и какой?

почитал: https://devblog.supportbee.com/2014/10/27/setting-up-cucumber-to-run-with-Chrome-on-Linux/
поставил ChromeDriver
тесты - прошли, все заработало :smiley:
буду пробовать Firefox удалять с сервера, он тут лишний наверное (с самого начала сомнения одоливали)
Вот принцип правильный или нет - не знаю.
Так что кто знает советуйте.

вот такой вид сейчас:

PHP Warning: Module ‘xdebug’ already loaded in Unknown on line 0
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.

SSS

Time: 159 ms, Memory: 3.50Mb

There were 3 skipped tests:

  1. LoginTest::testLoginSuccessful
    The Selenium Server is not active on host http://geekpad.ca/blog/demos/phpunit-selenium-demo at port 4444.
  1. LoginTest::testLoginSuccessful
    The Selenium Server is not active on host http://geekpad.ca/blog/demos/phpunit-selenium-demo at port 4444.
  1. LoginTest::testLoginSuccessful
    The Selenium Server is not active on host http://geekpad.ca/blog/demos/phpunit-selenium-demo at port 4444.

OK, but incomplete, skipped, or risky tests!
Tests: 3, Assertions: 0, Skipped: 3.

удалил Firefox - полет нормальный :stuck_out_tongue:

Только судя по логу селениум сервер у вас не запущен и все тесты скипнуты?

спасибо, понял… )))
это я привел вид лога не своего скрипта, а левого ))), да и там понятно, что ыудутшгь не запущен
это было приведено в качестве примера.