<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie" -->

---
title: Run Playwright Tests on Pull Requests, Keep Merges Fast
description: Splitting Playwright CI into a fast PR tier and a full merge tier keeps gates fast. Pull requests run a selected subset, either via...
canonical: https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Run Playwright Tests on Pull Requests, Keep Merges Fast | daily.dev
og:description: Splitting Playwright CI into a fast PR tier and a full merge tier keeps gates fast. Pull requests run a selected subset, either via...
og:url: https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie
og:image: https://api.daily.dev/og/posts/60ZjZesie.png
og:image:alt: Run Playwright Tests on Pull Requests, Keep Merges Fast
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Run Playwright Tests on Pull Requests, Keep Merges Fast

**[Currents](https://daily.dev/sources/currents)** · 17 min read · 1 upvotes · 0 comments

## Summary

Splitting Playwright CI into a fast PR tier and a full merge tier keeps gates fast. Pull requests run a selected subset, either via --only-changed=origin/$GITHUB_BASE_REF or an @smoke tag, while the merge_group trigger (or a push to main without a queue) runs the full suite. Shards should use fullyParallel for balanced distribution, write blob reports, and merge into one HTML report. A single summary job using always() with needs becomes the one required check so branch protection survives shard count changes. Retries plus failOnFlakyTests catch flakiness on the PR tier and failOnFlakyTests is left off for the merge tier.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://currents.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast>

## Questions this post answers

### How do I run Playwright tests fast on pull requests without slowing down merges?

Split triggers into two tiers: the pull_request event runs a selected subset of tests, while the merge_group trigger (or a push to main without a merge queue) runs the full suite. The PR tier is allowed to skip tests only because the full run still exists afterward, so the full-suite tier must never be dropped.

_Set up this split before your Playwright suite grows past what reviewers will wait on, and compare approaches on daily.dev._

### How do I use Playwright's --only-changed flag correctly in a GitHub Actions pull request workflow?

Always pass the base branch explicitly as --only-changed=origin/$GITHUB_BASE_REF, since without a ref it defaults to uncommitted changes only. Also check out the repo with fetch-depth: 0 for full history, because a shallow checkout won't have the base ref available to diff against.

_Developers tuning CI speed for Playwright can track configuration details like this on daily.dev._

### Which GitHub Actions job should be marked as the required status check when Playwright tests are sharded?

Add one summary job that uses always() combined with needs on the sharded job, and mark only that summary job as required in branch protection. This keeps the required check name stable even when the shard count changes, unlike requiring each individual shard job which breaks when shard counts are adjusted.

_Teams configuring branch protection for sharded test suites can keep these patterns handy on daily.dev._

## Similar posts on daily.dev

- [Playwright Tags and Annotations: Organize Large CI Suites](https://daily.dev/posts/playwright-tags-and-annotations-organize-large-ci-suites-s0yxpg2ir) · Currents · 0 upvotes · 0 comments
- [Playwright Flaky Tests: Detect Them in CI with Retries](https://daily.dev/posts/playwright-flaky-tests-detect-them-in-ci-with-retries-vamwlvpg0) · Currents · 1 upvotes · 1 comments
- [CircleCI Smarter Testing: Stop running tests that don't matter](https://daily.dev/posts/circleci-smarter-testing-stop-running-tests-that-don-t-matter-colzpxw8r) · CircleCI · 0 upvotes · 0 comments
- [DRY isn't just for application code](https://daily.dev/posts/dry-isn-t-just-for-application-code-tqbsmydfp) · OctopusDeploy · 0 upvotes · 0 comments

---

Tags: [#testing](https://daily.dev/tags/testing), [#cicd](https://daily.dev/tags/cicd), [#github-actions](https://daily.dev/tags/github-actions)

[View this post on daily.dev](https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Run Playwright Tests on Pull Requests, Keep Merges Fast","url":"https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie"},"datePublished":"2026-10-29T16:06:08.819Z","dateModified":"2026-10-29T16:06:38.502Z","description":"Splitting Playwright CI into a fast PR tier and a full merge tier keeps gates fast. Pull requests run a selected subset, either via...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e8590ceea8fda640eadfa59b4a26500c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e8590ceea8fda640eadfa59b4a26500c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Currents","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Currents","logo":"https://media.daily.dev/image/upload/s--RxsiMZ1S--/f_auto,q_auto/v1788684994/logos/currents?_a=BAMAMicg0","url":"https://daily.dev/sources/currents"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"testing,cicd,github-actions","timeRequired":"PT17M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Currents","item":"https://daily.dev/sources/currents"},{"@type":"ListItem","position":3,"name":"Run Playwright Tests on Pull Requests, Keep Merges Fast"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/run-playwright-tests-on-pull-requests-keep-merges-fast-60zjzesie#faq","mainEntity":[{"@type":"Question","name":"How do I run Playwright tests fast on pull requests without slowing down merges?","acceptedAnswer":{"@type":"Answer","text":"Split triggers into two tiers: the pull_request event runs a selected subset of tests, while the merge_group trigger (or a push to main without a merge queue) runs the full suite. The PR tier is allowed to skip tests only because the full run still exists afterward, so the full-suite tier must never be dropped. Set up this split before your Playwright suite grows past what reviewers will wait on, and compare approaches on daily.dev."}},{"@type":"Question","name":"How do I use Playwright's --only-changed flag correctly in a GitHub Actions pull request workflow?","acceptedAnswer":{"@type":"Answer","text":"Always pass the base branch explicitly as --only-changed=origin/$GITHUB_BASE_REF, since without a ref it defaults to uncommitted changes only. Also check out the repo with fetch-depth: 0 for full history, because a shallow checkout won't have the base ref available to diff against. Developers tuning CI speed for Playwright can track configuration details like this on daily.dev."}},{"@type":"Question","name":"Which GitHub Actions job should be marked as the required status check when Playwright tests are sharded?","acceptedAnswer":{"@type":"Answer","text":"Add one summary job that uses always() combined with needs on the sharded job, and mark only that summary job as required in branch protection. This keeps the required check name stable even when the shard count changes, unlike requiring each individual shard job which breaks when shard counts are adjusted. Teams configuring branch protection for sharded test suites can keep these patterns handy on daily.dev."}}]}
```

