name: PHPUnit Test (Pest) on: [push, pull_request] jobs: tests: strategy: fail-fast: true matrix: operating-system: - ubuntu-22.04 php-version: - '8.2' name: php ${{ matrix.php-version }} on ${{ matrix.operating-system }} services: mysql: image: mysql:8.0 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: unit3d ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 redis: image: redis:7.2.1 ports: - 6379:6379 options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 runs-on: ${{ matrix.operating-system }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup PHP 8.2 uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: curl, dom, gd, libxml, mbstring, zip, mysql, xml, intl, bcmath, redis-phpredis/phpredis@6.0.1 ini-values: error_reporting=E_ALL coverage: pcov tools: composer:v2 env: REDIS_CONFIGURE_OPTS: --enable-redis - name: Prepare The Laravel Environment run: cp .env.example .env - name: Configure NPM uses: actions/setup-node@v1 with: node-version: '18.x' - name: Install Composer Dependencies env: COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --optimize-autoloader - name: Install NPM Dependencies run: npm install - name: Build Assets Via Mix run: npx mix -p - name: Generate Application Key run: php artisan key:generate - name: Clear Application Cache run: php artisan clear:all_cache - name: Run PHPUnit Tests run: ./vendor/bin/pest --compact --coverage --parallel --processes=4 --bail env: DB_CONNECTION: mysql DB_PORT: ${{ job.services.mysql.ports['3306'] }} DB_USERNAME: root DB_DATABASE: unit3d DB_PASSWORD: null