我正在使用 Codeception 创建我的测试(虽然我是初学者,正在学习)。这包括目前的验收和单元测试。
我想将我的 repo 添加到 Travis CI,这样我就可以在每次提交后自动化测试过程并放置 build-status 标记。
我想问一下;
- Travis-CI 可以运行代码接收测试吗?
- Travis-CI 可以模拟浏览器运行代码接收验收测试吗?
- 如果两个答案都不是,还有其他 CI 工具可以吗?
谢谢你。
我正在使用 Codeception 创建我的测试(虽然我是初学者,正在学习)。这包括目前的验收和单元测试。
我想将我的 repo 添加到 Travis CI,这样我就可以在每次提交后自动化测试过程并放置 build-status 标记。
我想问一下;
谢谢你。
是的,可以在 Travis CI 上运行 Codeception 测试,包括使用 WebDriver 运行的验收测试。
可以在 Travis 上使用真正的浏览器运行测试,但使用无头浏览器是最简单的,因为 Travis 是在无头机器上运行的。PhantomJS非常适合这一点,它预装了 Travis CI 的构建引导程序。
要使用 PhantomJS 运行测试,您需要在.yml
Codeception 配置文件中像这样配置 WebDriver 模块:
modules:
config:
WPWebDriver:
url: 'http://127.0.0.1:8888'
browser: phantomjs
网址很重要。我发现尝试使用localhost
而127.0.0.1
不是行不通。此外,如果您不小心遗漏了http://
,那也不起作用。您几乎可以使用任何8***
端口,因为它们中的大多数都是开放的,但当然您需要在该端口上运行一个 Web 服务器来提供静态文件或运行您的 PHP 应用程序。我发现最简单的方法是使用 PHP 的内置网络服务器。
您的.travis.yml
文件可能如下所示:
# Travis CI configuration file.
language: php
php:
- 5.6
- 7.0
before_script:
# Start up a web server.
- php -S 127.0.0.1:8888 -t /path/to/web/root >/dev/null 2>&1 &
# Start up the webdriver.
- phantomjs --webdriver=4444 >/dev/null 2>&1 &
# Install Codeception.
# Doing this last gives the webdriver and server time to start up.
- composer install --prefer-source
script:
- vendor/bin/codecept run
您当然需要将 Codeception 添加到项目composer.json
文件中:
composer require --dev codeception/codeception
您还需要将path/to/web/root
上面的路径更改为您希望服务器的文档根目录所在的目录。
如果您想查看针对 WordPress 运行 WebDriver 测试的工作演示,可以查看此 GitHub 存储库。
我认为这是可以做到的,但是将所有东西粘合在一起并不适合胆小的人。我认为可以做到的原因是代码接收本身就被 Travis 引用了。请参阅https://travis-ci.org/Codeception/Codeception。我会联系 codeception 的人并询问他们的想法。
或者您可以在构建日志中查看他们是如何执行此操作的,例如: https ://travis-ci.org/Codeception/Codeception/jobs/14432638 看起来他们正在使用下载的独立 selenium 服务器无头运行。
Travis-ci 有一些关于如何运行 GUI 测试的信息。特别是,它们允许您使用酱实验室帐户并从那里运行分布式硒测试。
我今天遇到了这个问题,我通过将 Codeception 添加到我的composer.json
:
"require-dev": {
"codeception/codeception": "^2.1"
},
并在我的.travis.yml
:
install:
- composer self-update
- composer install
before_script:
- #Code that creates and seeds my database and so on
script: php vendor/codeception/codeception/codecept run