Travis-CI可以运行Codeception测试吗?

时间:2013-09-01 12:21:44

标签: testing travis-ci codeception

我正在使用Codeception创建我的测试(虽然我是初学者,学习)。这包括现在的验收和单元测试。

我想将我的回购添加到Travis CI,这样我就可以在每次提交后自动执行测试过程并放置build-status标记。

我想问一下;

  1. Travis-CI可以运行代码测试吗?
  2. Travis-CI可以运行模拟浏览器的代码验收测试吗?
  3. 如果两个答案都不是,那么还有其他CI工具吗?
  4. 谢谢。

3 个答案:

答案 0 :(得分:8)

是的,可以在Travis CI上运行Codeception测试,包括使用WebDriver运行的验收测试。

它是possible to run your tests with a real browser on 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测试的工作演示,您可以查看this GitHub repo

答案 1 :(得分:2)

我认为它可以做到,但是将所有东西粘在一起并不适合胆小的人。我认为可以做到的原因是CodeView本身就是在Travis上编写的。见https://travis-ci.org/Codeception/Codeception。我会在代码中联系人们并询问他们的想法。

或者您可以在构建日志中查看它们是如何执行此操作的,例如: https://travis-ci.org/Codeception/Codeception/jobs/14432638 看起来他们正在使用下载的独立selenium服务器运行无头。

Travis-ci有some information on how to run GUI tests。特别是,它们允许您使用sauce labs帐户并从那里运行分布式硒测试。

答案 2 :(得分:0)

我今天遇到了这个问题,我通过将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