- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让 Nightwatch 测试在 CircleCI 中运行,这有点……噩梦
CricleCI 似乎没有设置为运行 PHP 应用程序的网络服务器。
CircleCI 版本的 Chrome 浏览器 ~54 与 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>
最佳答案
经过反复试验,我终于有了这个工作:
文件示例:
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 不兼容。需要在 circle.yaml
的 pre
依赖项中更新 Chrome:
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 模块并使用 circle.yaml 将您的 conf 加载到 Apache 中:
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 模块重写和 header 。
a2ensite
启用配置文件和您的域。某些域,如 *.dev 还需要在 /etc/hosts
中添加一行:
- sudo sh -c "echo 127.0.0.1 local.phpwebapp.dev >>/etc/hosts"
这是在 Circle Chrome 浏览器给出错误 ERR_ICANN_NAME_COLLISION
时实现的。通过打印 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);
})
关于php - 如何让 Nightwatch 测试在 CircleCI 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459456/
我是一名优秀的程序员,十分优秀!