Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
47 lines
2.1 KiB
YAML
47 lines
2.1 KiB
YAML
name: 'Setup Playwright'
|
|
description: 'Install Playwright browsers with version-keyed caching shared across workflows.'
|
|
|
|
inputs:
|
|
browsers:
|
|
description: 'Space-separated Playwright browsers to install and cache.'
|
|
required: false
|
|
# Only bundled Chromium by default — every e2e project uses `devices['Desktop Chrome']` /
|
|
# `['Pixel 5']` with no `channel`, so the branded `chrome` build is never launched.
|
|
default: 'chromium'
|
|
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
# @playwright/test is hoisted to the root node_modules (it's a devDependency of the e2e
|
|
# workspaces), so Node resolves it from the repo root — no per-workspace cwd, nothing written
|
|
# to the tree. We also derive a key-safe browser token (spaces -> dashes) so multi-browser
|
|
# values like "chromium firefox" don't put a space in the cache key.
|
|
- name: Resolve Playwright version and browsers
|
|
shell: bash
|
|
env:
|
|
BROWSERS: ${{ inputs.browsers }}
|
|
run: |
|
|
echo "PLAYWRIGHT_VERSION=$(node -p "require('@playwright/test/package.json').version")" >> "$GITHUB_ENV"
|
|
echo "PLAYWRIGHT_BROWSERS_KEY=$(echo "$BROWSERS" | tr ' ' '-')" >> "$GITHUB_ENV"
|
|
|
|
# Keyed on os + arch + version + browsers. The arch matters (ARM vs x64 need different
|
|
# binaries); the browser set matters too — without it, adding a browser would be a stale cache
|
|
# hit that skips the install and never downloads the new one.
|
|
- name: Check for Playwright browsers cache
|
|
id: playwright-cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.cache/ms-playwright
|
|
key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-${{ env.PLAYWRIGHT_BROWSERS_KEY }}
|
|
|
|
# Cache miss only. `--with-deps` also installs the OS libraries the browsers need — a no-op for
|
|
# Chromium on GitHub's runner images, but it means adding webkit/firefox via `browsers` later
|
|
# just works without extra setup.
|
|
- name: Install Playwright browsers
|
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
env:
|
|
BROWSERS: ${{ inputs.browsers }}
|
|
run: npx playwright install --with-deps $BROWSERS
|