Как запустить тестирование Nightwatch в CircleCI?

Я пытаюсь запустить тесты Nightwatch в CircleCI, и это было своего рода … кошмаром

Кажется, что CricleCI не настроен на запуск веб-сервера для приложения PHP.

CircleCI версия браузера Chrome ~ 54 не совместима с Nightwatch, который запрашивает> = ~ 55

Chrome CircleCI не может найти мой домен local.webapp.dev, и выдает ошибку ERR_ICANN_NAME_COLLISION

Я настроил веб-сервер, используя следующую конфигурацию apache, измененную из рекомендованной версии в CircleCI документы:

<VirtualHost *:80>
LoadModule php5_module /opt/circleci/php/5.6.17/libexec/apache2/libphp5.so

DocumentRoot /home/ubuntu/phpwebapp
ServerName local.webapp.dev
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
</VirtualHost>

0

Решение

После долгих проб и ошибок у меня наконец-то все заработало:

Примеры файлов:

Тесты автоматически запускаются Circle с помощью package.json:

"test": "./node_modules/.bin/nightwatch --env circleci"

Это подхватывает и запускает тесты от вашего Nightwatch.json:

"circleci" : {
"output_folder" : "${CIRCLE_TEST_REPORTS}",
"launch_url" : "http://local.phpwebapp.dev",
"selenium_host" : "localhost",
"selenium_port" : 4444,
"screenshots" : {
"enabled" : false,
"path" : ""},
"desiredCapabilities" : {
"browserName" : "chrome",
"marionette": true
}
}

Машины CircleCI используют более старую версию Chrome, которая не совместима с текущей версией Selenium / Nightwatch. Chrome необходимо обновить в pre зависимости circle.yaml:

dependencies:
pre:
# Update Google Chrome.
- google-chrome --version
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
- sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb stable main" >> /etc/apt/sources.list.d/google.list'
- sudo apt-get update
- sudo apt-get --only-upgrade install google-chrome-stable
- google-chrome --version

Круг документов забудьте важную часть в файле Apache Conf, вы должны установить правила разрешить / запретить для вашего каталога webroot, порт также изменен, чтобы использовать порт по умолчанию 80:

<VirtualHost *:80>
LoadModule php5_module /opt/circleci/php/5.6.17/libexec/apache2/libphp5.so

DocumentRoot /home/ubuntu/phpwebapp
ServerName local.phpwebapp.dev
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
<Directory /home/ubuntu/phpwebapp>
AllowOverride all
Require all granted
</Directory>
</VirtualHost>

Затем вы должны активировать все необходимые модули Apache и загрузить свой conf в Apache, используя circle.yaml:

dependencies:

...

post:
# circle seems to expect this but doesnt install it
- sudo apt-get install libapache2-mod-php5
# copy apache config file
- sudo cp ~/phpwebapp/circleApache.conf /etc/apache2/sites-available
# give phpwebapp to apache
- sudo chown -R www-data:www-data ~/phpwebapp
- sudo a2enmod rewrite
- sudo a2enmod headers
- sudo a2ensite circleApache
# DocumentRoot doesnt work, so symlinking instead
- sudo rm -r /var/www/html
- sudo ln -s /home/ubuntu/phpwebapp /var/www/html
- ls /var/www/html
- sudo service apache2 restart
# add local.phpwebapp.dev to /etc/hosts
- sudo sh -c "echo 127.0.0.1 local.phpwebapp.dev >> /etc/hosts"

a2enmod Строки позволяют переписывать и заголовать необходимые модули apache для приложения PHP.

a2ensite включает файл конфигурации и ваш домен. Для некоторых доменов, таких как * .dev, также потребуется добавить строку в /etc/hosts:

- sudo sh -c "echo 127.0.0.1 local.phpwebapp.dev >> /etc/hosts"

Это было реализовано, когда браузер Circle Chrome давал ошибку ERR_ICANN_NAME_COLLISION, Ошибка была обнаружена путем печати источник тестовой страницы через Nightwatch:

browser
.url("http://www.local.phpwebapp.dev")
.source(function (result){
// Source will be stored in result.value
console.log(result.value);
})
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]