version: ~> 1.0 language: php dist: xenial cache: directories: - vendor - $HOME/.composer/cache # Since Xenial services are not started by default, we need to instruct it below to start. services: - xvfb - mysql - docker # Test main supported versions of PHP against latest WP. php: - 7.0 - 7.1 - 7.2 - 7.3 - 7.4 env: - WP_VERSION=latest WP_MULTISITE=0 # Additional tests against stable PHP (min version is 7.0) # and code coverage report. jobs: fast_finish: true include: - name: "Core E2E Tests" php: 7.4 env: WP_VERSION=latest WP_MULTISITE=0 RUN_E2E=1 script: - composer require wp-cli/i18n-command - npm run build - npm install jest --global - npm run docker:up - npm run test:e2e after_script: - npm run docker:down - name: "WP Nightly" php: 7.4 env: WP_VERSION=nightly WP_MULTISITE=0 - name: "WP Latest" php: 7.2 env: WP_VERSION=5.4 WP_MULTISITE=0 - name: "WP Latest - 1" php: 7.2 env: WP_VERSION=5.3 WP_MULTISITE=0 - name: "WP Latest - 2" php: 7.2 env: WP_VERSION=5.2 WP_MULTISITE=0 - name: "Code Standards" php: 7.4 env: WP_VERSION=latest WP_MULTISITE=0 RUN_PHPCS=1 - name: "Code Coverage" php: 7.4 env: WP_VERSION=latest WP_MULTISITE=0 RUN_CODE_COVERAGE=1 allow_failures: - php: 7.4 env: WP_VERSION=latest WP_MULTISITE=0 RUN_CODE_COVERAGE=1 before_script: - export PATH="$HOME/.composer/vendor/bin:$PATH" - | # Remove Xdebug for a huge performance increase: if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then phpenv config-rm xdebug.ini else echo "xdebug.ini does not exist" fi - nvm install 10 - npm install - composer install --no-dev - | # Install WP Test suite, install PHPUnit globally: if [[ ! -z "$WP_VERSION" ]]; then bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION composer global require "phpunit/phpunit=5.7.*|7.5.*" fi - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" script: - bash tests/bin/phpunit.sh - bash tests/bin/phpcs.sh after_script: - bash tests/bin/travis.sh after # Specifies that Travis should create builds for master and release branches and also tags. branches: only: - master - /^\d+\.\d+(\.\d+)?(-\S*)?$/ - /^release\//