name: Playwright Tests on: [push] permissions: contents: read 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 - name: "Setup node" 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 passport:keys php artisan migrate --seed - 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' - name: "Upload test results" uses: actions/upload-artifact@v4 if: always() with: name: test-results path: test-results/ retention-days: 30