Может ли Travis-CI запускать тесты Codeception?

Я создаю свои тесты (хотя я новичок, учился) с помощью Codeception. Это включает в себя принятие и модульные тесты на данный момент.

Я хочу добавить свое репо в Travis CI, чтобы я мог автоматизировать процесс тестирования после каждой фиксации и поставить тег статуса сборки.

Я хотел бы спросить:

  • Может ли Travis-CI запускать тесты на кодирование?
  • Может ли Travis-CI запускать приемочные тесты для генерации кода, эмулируя браузер?
  • Если в обоих ответах нет, есть ли другой инструмент CI, который может?

Спасибо.

Ответы

Ответ 1

Да, можно запускать тесты Codeception, включая приемочные тесты, которые запускаются с использованием WebDriver, на Travis CI.

можно запускать тесты с помощью реального браузера на Travis, но проще всего использовать безгласный браузер, поскольку Travis работает на безголовой машине. PhantomJS идеально подходит для этого, и он поставляется с предустановленной загрузкой Travis CI.

Чтобы запустить тесты с помощью PhantomJS, вам необходимо настроить модуль WebDriver, как это, в конфигурационном файле .yml Codeception:

modules:
    config:
        WPWebDriver:
            url: 'http://127.0.0.1:8888'
            browser: phantomjs

URL-адрес важен. Я обнаружил, что попытка использовать localhost вместо 127.0.0.1 не будет работать. Кроме того, если вы случайно опустили http://, это тоже не сработает. Вы можете использовать большинство портов 8***, так как большинство из них открыты, но, конечно, вам нужно иметь веб-сервер, работающий на этом порту, для обслуживания ваших статических файлов или запуска вашего приложения 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 выше на путь к каталогу, в котором вы хотите, чтобы корень документа сервера был.

Если вы хотите увидеть рабочую демонстрацию тестов WebDriver против WordPress, вы можете проверить это репо GitHub.

Ответ 2

Я думаю, что это можно сделать, но приклеить все к тому, что не будет для слабонервных. Причина, по которой я думаю, что это может быть сделано, заключается в том, что сама кодировка восходит к Трэвису. См. https://travis-ci.org/Codeception/Codeception. Я бы связался с людьми по поводу кода и попросил их мысли.

Или вы можете заглянуть, как они это делают в журналах сборки, например: https://travis-ci.org/Codeception/Codeception/jobs/14432638 Похоже, они бегут без головы с загруженным автономным сервером селена.

Travis-ci некоторая информация о том, как запускать тесты GUI. В частности, они позволяют вам использовать sauce labs учетную запись и выполнять распределенные тесты селена оттуда.

Ответ 3

Я столкнулся с этой проблемой сегодня, и я решил ее, добавив 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