name: Tests on: pull_request: push: jobs: unit: name: Unit (required) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mysqli, curl, openssl, json, redis, pcov coverage: pcov ini-values: pcov.enabled=1 - name: Resolve dependencies working-directory: services/nginx/app run: composer update --no-interaction --prefer-dist - name: Run unit tests working-directory: services/nginx/app run: composer test:unit - name: Generate coverage report working-directory: services/nginx/app run: composer test:coverage - name: Upload coverage artifact uses: actions/upload-artifact@v4 with: name: unit-coverage-clover path: services/nginx/app/build/logs/clover.xml if-no-files-found: warn integration: name: Integration (advisory) runs-on: ubuntu-latest continue-on-error: true services: redis: image: redis:7 ports: - 6379:6379 mysql: image: mysql:8 env: MYSQL_DATABASE: app_test MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping -h 127.0.0.1 -proot" --health-interval=10s --health-timeout=5s --health-retries=10 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mysqli, curl, openssl, json, redis - name: Resolve dependencies working-directory: services/nginx/app run: composer update --no-interaction --prefer-dist - name: Run integration tests working-directory: services/nginx/app env: RUN_INTEGRATION_TESTS: '1' USE_ENV: 'true' DEBUG: '0' ENCRYPTION_KEY: test-key CORS: '*' CONFIG_TIMEZONE: Europe/Copenhagen ECONOMIC_API_APP_ACCESS_GRANT: test ECONOMIC_API_APP_ACCESS_GRANT2: test ECONOMIC_API_APP_SECRET_TOKEN: test WORDPRESS_STATIC_TOKEN: '' EMAIL_WASH_CERTIFICATE_TOKEN: '' WORDPRESS_API_URL: http://localhost MINIO_ENDPOINT: '' MINIO_ACCESS_KEY: '' MINIO_SECRET_KEY: '' SLACK_DEFAULT_WEBHOOK: '' REDIS_CONFIG_HOST: 127.0.0.1 REDIS_CONFIG_DATABASE: '0' REDIS_CONFIG_PASSWORD: '' REDIS_CONFIG_PORT: '6379' CONFIG_DB_HOST: 127.0.0.1 CONFIG_DB_USER: root CONFIG_DB_PASSWORD: root CONFIG_DB_DATABASE: app_test CONFIG_DB_PORT: '3306' run: composer test:integration api: name: API (advisory) runs-on: ubuntu-latest continue-on-error: true services: redis: image: redis:7 ports: - 6379:6379 mysql: image: mysql:8 env: MYSQL_DATABASE: app_test MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping -h 127.0.0.1 -proot" --health-interval=10s --health-timeout=5s --health-retries=10 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mysqli, curl, openssl, json, redis - name: Resolve dependencies working-directory: services/nginx/app run: composer update --no-interaction --prefer-dist - name: Run API tests working-directory: services/nginx/app env: RUN_API_TESTS: '1' USE_ENV: 'true' DEBUG: '0' ENCRYPTION_KEY: test-key CORS: '*' CONFIG_TIMEZONE: Europe/Copenhagen ECONOMIC_API_APP_ACCESS_GRANT: test ECONOMIC_API_APP_ACCESS_GRANT2: test ECONOMIC_API_APP_SECRET_TOKEN: test WORDPRESS_STATIC_TOKEN: '' EMAIL_WASH_CERTIFICATE_TOKEN: '' WORDPRESS_API_URL: http://localhost MINIO_ENDPOINT: '' MINIO_ACCESS_KEY: '' MINIO_SECRET_KEY: '' SLACK_DEFAULT_WEBHOOK: '' REDIS_CONFIG_HOST: 127.0.0.1 REDIS_CONFIG_DATABASE: '0' REDIS_CONFIG_PASSWORD: '' REDIS_CONFIG_PORT: '6379' CONFIG_DB_HOST: 127.0.0.1 CONFIG_DB_USER: root CONFIG_DB_PASSWORD: root CONFIG_DB_DATABASE: app_test CONFIG_DB_PORT: '3306' run: composer test:api