Ghost/.github/workflows/browser-tests.yml
Daniel Lockyer 7ef42a49fa Implemented Playwright caching into browser-tests workflow
- this allows us to use the Playwright cache that is in place to speed
  up tests
2023-07-04 16:08:06 +02:00

110 lines
3.6 KiB
YAML

name: Browser Tests
on:
push:
branches:
- 'main'
workflow_dispatch:
inputs:
environment:
description: 'Environment to run tests against'
type: environment
required: true
site_url:
description: 'Site URL (override)'
required: false
type: string
owner_email:
description: 'Owner email (override)'
required: false
type: string
owner_password:
description: 'Owner password (override)'
required: false
type: string
concurrency:
group: ${{ github.workflow }}
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
environment: ${{ github.event.inputs.environment || 'browser-tests-local' }}
env:
ENVIRONMENT: ${{ github.event.inputs.environment || 'browser-tests-local' }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- uses: actions/setup-node@v3
with:
node-version: '18.x'
cache: yarn
- name: Install Stripe-CLI
run: |
export VERSION=1.13.5
wget "https://github.com/stripe/stripe-cli/releases/download/v$VERSION/stripe_${VERSION}_linux_x86_64.tar.gz"
tar -zxvf "stripe_${VERSION}_linux_x86_64.tar.gz"
mv stripe /usr/local/bin
stripe -v
- name: Install dependencies
run: yarn
- name: Run migrations
working-directory: ghost/core
run: yarn setup
- name: Get Playwright version
id: playwright-version
run: echo "version=$(node -p "require('@playwright/test/package.json').version")" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Check if Playwright browser is cached
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-Playwright-${{steps.playwright-version.outputs.version}}
- name: Install Playwright browser if not cached
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npx playwright install --with-deps
- name: Install OS dependencies of Playwright if cache hit
if: steps.playwright-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps
- name: Build Admin
if: env.ENVIRONMENT == 'browser-tests-local'
working-directory: ghost/admin
run: yarn build:dev
- name: Run Playwright tests on a remote site
if: env.ENVIRONMENT == 'browser-tests-staging'
working-directory: ghost/core
run: yarn test:browser
env:
TEST_URL: ${{ github.event.inputs.site_url || secrets.TEST_URL }}
TEST_OWNER_EMAIL: ${{ github.event.inputs.owner_email || secrets.TEST_OWNER_EMAIL }}
TEST_OWNER_PASSWORD: ${{ github.event.inputs.owner_password || secrets.TEST_OWNER_PASSWORD }}
- name: Run Playwright tests locally
if: env.ENVIRONMENT == 'browser-tests-local'
working-directory: ghost/core
run: yarn test:browser
env:
STRIPE_PUBLISHABLE_KEY: ${{ secrets.STRIPE_PUBLISHABLE_KEY }}
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
STRIPE_ACCOUNT_ID: ${{ secrets.STRIPE_ACCOUNT_ID }}
- uses: tryghost/actions/actions/slack-build@main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30