microsoft/playwright GitHub Actions scorecardPublic GitHub Actions data, last 30 days. Updated 6/30/2026, 1:57:49 AM.
Data sourced from public GitHub. GitSpider is not affiliated with or endorsed by this repository's owners. Request removal.
Biggest wins first, each with the exact config fix.
tests 2Fails or times out on nearly all recent runs, burning minutes to produce only red, and an always-red workflow usually gets ignored. Fix it, or disable the trigger until it's ready.
tests 1Pushing to a branch and opening a PR triggers two runs. Pick one (usually `pull_request`) and exclude branch pushes for non-default branches.
on:
push:
branches: [main]
pull_request:tests 1Set `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'MCPPushing to a branch and opening a PR triggers two runs. Pick one (usually `pull_request`) and exclude branch pushes for non-default branches.
on:
push:
branches: [main]
pull_request:tests 2Set `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'tests BiDiFails or times out on nearly all recent runs, burning minutes to produce only red, and an always-red workflow usually gets ignored. Fix it, or disable the trigger until it's ready.
componentsPushing to a branch and opening a PR triggers two runs. Pick one (usually `pull_request`) and exclude branch pushes for non-default branches.
on:
push:
branches: [main]
pull_request:componentsSet `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'tests 2Add a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: truetests BiDiSet `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'infraSet `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'Publish Test ResultsSet `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'infraPushing to a branch and opening a PR triggers two runs. Pick one (usually `pull_request`) and exclude branch pushes for non-default branches.
on:
push:
branches: [main]
pull_request:componentsAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: truetests WebView (iOS Simulator)Set `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'infraAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: truePublish Test ResultsAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueextensionSet `cache: 'npm'` (or `'pip'`, `'yarn'`, etc.) on your setup-* action, or add `actions/cache@v4` for the install dir.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'extensionPushing to a branch and opening a PR triggers two runs. Pick one (usually `pull_request`) and exclude branch pushes for non-default branches.
on:
push:
branches: [main]
pull_request:infraNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15infraRuns on every push/PR with no `paths:` filter, so docs-only changes still trigger full CI. Add a `paths:` filter if that's common.
on:
pull_request:
paths:
- 'src/**'
- 'package.json'tests 1macOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latesttests 2macOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestcomponentsNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15componentsmacOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestPublish Test ResultsNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15tests BiDiNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15MCPNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15MCPmacOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestextensionNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15extensionmacOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latesttests WebView (iOS Simulator)`upload-artifact` has no `retention-days`, so artifacts keep up to 90 days (storage cost). Set e.g. `retention-days: 7`.
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7tests WebView (iOS Simulator)macOS bills ~10× and Windows ~2× a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestThis scorecard is a one-time snapshot. Install the free GitHub App to track this repo continuously: new regressions caught as they land, trends over time, on your public and private repos. Team adds the offending commit on the PR + Slack alerts.
Install & monitor this repo →Not ready to install? Get this report by email. No spam, unsubscribe anytime.