name: Tests on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: authentikate_test options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 ports: - 3306:3306 steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, dom, fileinfo, mysql, openssl coverage: xdebug - name: Cache Composer dependencies uses: actions/cache@v3 with: path: /tmp/composer-cache key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} - name: Install dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - name: Copy environment file run: cp .env.example .env - name: Generate application key run: php artisan key:generate - name: Set up test database run: | php artisan config:clear php artisan migrate --env=testing --force - name: Set up test RSA keys run: ./scripts/setup-test-keys.sh setup - name: Run tests run: php artisan test --coverage - name: Clean up test RSA keys run: ./scripts/setup-test-keys.sh cleanup if: always() - name: Upload coverage reports uses: codecov/codecov-action@v3 with: file: ./coverage.xml fail_ci_if_error: true