name: Playwright Tests on: [push] jobs: test: runs-on: ubuntu-latest timeout-minutes: 60 services: mailpit: image: 'axllent/mailpit:latest' pgsql_test: image: postgres:15 env: PGPASSWORD: 'root' POSTGRES_DB: 'laravel' POSTGRES_USER: 'root' POSTGRES_PASSWORD: 'root' ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: "Checkout code" uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20.x' - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv coverage: none - name: Run composer install run: composer install -n --prefer-dist - name: Prepare Laravel Application run: | cp .env.ci .env php artisan key:generate php artisan migrate --seed php artisan passport:keys - name: Install dependencies run: npm ci - name: Build Frontend run: npm run build - name: Run Laravel Server run: php artisan serve > /dev/null 2>&1 & - name: Install Playwright Browsers run: npx playwright install --with-deps - name: Run Playwright tests run: npx playwright test env: PLAYWRIGHT_BASE_URL: 'http://127.0.0.1:8000' - uses: actions/upload-artifact@v4 if: always() with: name: test-results path: test-results/ retention-days: 30