# smoke.yml — Playwright smoke tests against staging.peptiderepo.com # # Called by other repos via workflow_call as a deploy gate. # Secrets required: STAGING_WP_ADMIN_USER, STAGING_WP_ADMIN_PASSWORD name: Smoke Tests (Staging) on: workflow_dispatch: inputs: base_url: description: 'Target URL (defaults to staging)' required: false default: 'https://staging.peptiderepo.com' workflow_call: inputs: base_url: type: string required: false default: 'https://staging.peptiderepo.com' secrets: STAGING_WP_ADMIN_USER: required: true STAGING_WP_ADMIN_PASSWORD: required: true jobs: smoke: name: Playwright smoke suite runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' cache-dependency-path: package-lock.json - name: Install dependencies run: npm ci - name: Install Playwright browsers run: npx playwright install chromium --with-deps - name: Run smoke tests env: BASE_URL: ${{ inputs.base_url }} WP_ADMIN_USER: ${{ secrets.STAGING_WP_ADMIN_USER }} WP_ADMIN_PASSWORD: ${{ secrets.STAGING_WP_ADMIN_PASSWORD }} run: npx playwright test - name: Upload test report uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: playwright-report/ retention-days: 14 - name: Upload failure screenshots/videos uses: actions/upload-artifact@v4 if: failure() with: name: playwright-failures path: test-results/ retention-days: 7