Files
peptide-e2e/.github/workflows/smoke.yml

81 lines
2.1 KiB
YAML
Executable File

# smoke.yml
#
# Playwright smoke tests against staging.peptiderepo.com
#
# Triggers:
# - Manually via workflow_dispatch (run before any prod deploy)
# - Called by other repos via workflow_call (deploy gates)
#
# Secrets required (set in GitHub repo Settings -> Secrets -> Actions):
# STAGING_WP_ADMIN_USER -- WordPress admin username on staging
# STAGING_WP_ADMIN_PASSWORD -- WordPress admin password on staging
name: Smoke Tests (Staging)
on:
workflow_dispatch:
inputs:
base_url:
description: "Target URL (defaults to staging)"
required: false
default: "https://staging.peptiderepo.com"
# Allow other repos to call this workflow as a deploy gate
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 || "https://staging.peptiderepo.com" }}
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