如何在CircleCI中运行Nightwatch测试?
我想在CircleCI中运行Nightwatch测试,它已经有点...噩梦如何在CircleCI中运行Nightwatch测试?
似乎CricleCI没有设置为运行PHP应用程序的网络服务器。
Chrome浏览器〜54CircleCI版本与Nightwatch,这是要求兼容> =〜55
CircleCI的Chrome找不到我local.webapp.dev域,并给出了错误ERR_ICANN_NAME_COLLISION
我已经安装了Web服务器,使用下面的Apache配置,在CircleCI docs从推荐的版本修改:
<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>
大量的试验和错误之后,我终于有了这个工作:
点文件的例子:
:的测试是自动由圆使用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,这是不符合硒/ Nightwatch的当前版本兼容。 Chrome需要在circle.yaml
的pre
依赖关系进行更新:
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
的Circle docs忘记在Apache的conf文件中的一个重要棋子,你必须set the allow/deny rules for your webroot directory,端口也被更改为使用默认端口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
行为PHP应用程序启用必要的apache模块重写和标头。
a2ensite
启用配置文件和您的域。某些领域,如* .dev还需要添加一行到/etc/hosts
:
- sudo sh -c "echo 127.0.0.1 local.phpwebapp.dev >> /etc/hosts"
这是实现当圆Chrome浏览器是给错误ERR_ICANN_NAME_COLLISION
。通过Nightwatch打印source of the test page发现错误:
browser
.url("http://www.local.phpwebapp.dev")
.source(function (result){
// Source will be stored in result.value
console.log(result.value);
})