Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Codeception + selenium grid. Все тесты пускает в один поток.


(Anton Sokolov) #1

Тесты codeception’a очень медленные, приложение очень тяжёлое и тормозное, поэтому в купе получается 20 тестов - 21 минута на выполнение. А хочется больше покрытия, больше тестов и запускать их чаще, чем раз в день.

Сделано: На одной машине пытался запускать тесты хотя бы в 2 потока:
в терминале запущен selenium grid с настройками по-умолчанию, в том же терминале в других вкладках запущены 2 селениума. Пример запуска одного из них (у другого другой дисплей и порт, остальное так же):

    DISPLAY=:98 xvfb-run -a -n 1 -l -s "-screen 0, 1024x768x8" java -jar Application/selenium-server-standalone-2.43.0.jar -role node  -hub http://localhost:4444/grid/register -port 5556 -Dwebdriver.firefox.profile=selenium

Запускаю тесты, в консоли grid’а вижу, что все тесты проходят через однин селениум(одну машину). В codeception нашёл, что по умолчанию он заточен запускать через grid, в сырцах:

    public function _initialize()
    {
        $this->wd_host =  sprintf('http://%s:%s/wd/hub', $this->config['host'], $this->config['port']);
        $this->capabilities = $this->config['capabilities'];
        $this->capabilities[\WebDriverCapabilityType::BROWSER_NAME] = $this->config['browser'];
        $this->webDriver = \RemoteWebDriver::create($this->wd_host, $this->capabilities);
        $this->webDriver->manage()->timeouts()->implicitlyWait($this->config['wait']);
        $this->initialWindowSize();
    }

Что я делаю не так? Как заставить тесты запускаться в несколько потоков?


(Александр Таранков) #2

Эта тема невидима. Она более не отображается в списках тем. Получить доступ к теме можно только по прямой ссылке.


(Александр Таранков) #5

Эта тема видима. Она будет отображаться в списке тем.


(Michael Bodnarchuk) #6

Сори, я пока не скажу как должен работать Codeception с Selenium Grid.
Но PHP сам по себе однопоточный, тесты пускаются один за другим, и я не знаю как Selenium Grid может решить вопрос паралелизации в данном случае.

Как вариант, почитайте последний гайд в документации, он как раз про распределенный запуск тестов. Вкратце, предлагается запускать отдельные инстансы кодсепшна, а в конце обьединять результаты их выполнения в один.


(Anton Sokolov) #7

Я тоже не представляю как он должен обрабатывать несколько потоков, если в консоль он пишет шаги по одному текущему тесту. Но меня удивило то, что codeception судя по коду настроен на работу с grid’ом.

Про последний гайд - спасибо, пошёл читать.