diff --git a/examples/with-playwright/.gitignore b/examples/with-playwright/.gitignore
new file mode 100644
index 0000000000..ef52b3838d
--- /dev/null
+++ b/examples/with-playwright/.gitignore
@@ -0,0 +1,35 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+test-results/
diff --git a/examples/with-playwright/README.md b/examples/with-playwright/README.md
new file mode 100644
index 0000000000..89965c2c29
--- /dev/null
+++ b/examples/with-playwright/README.md
@@ -0,0 +1,27 @@
+# Next.js + Playwright
+
+This example shows how to configure Playwright to work with Next.js.
+
+## Preview
+
+Preview the example live on [StackBlitz](http://stackblitz.com/):
+
+[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/vercel/next.js/tree/canary/examples/with-playwright)
+
+## Deploy your own
+
+Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme&utm_campaign=next-example):
+
+[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/vercel/next.js/tree/canary/examples/with-playwright&project-name=with-playwright&repository-name=with-playwright)
+
+## How to use
+
+Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [npm](https://docs.npmjs.com/cli/init) or [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/) to bootstrap the example:
+
+```bash
+npx create-next-app --example with-playwright with-playwright-app
+# or
+yarn create next-app --example with-playwright with-playwright-app
+```
+
+Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=next-example) ([Documentation](https://nextjs.org/docs/deployment)).
diff --git a/examples/with-playwright/e2e/example.spec.ts b/examples/with-playwright/e2e/example.spec.ts
new file mode 100644
index 0000000000..547a6c4002
--- /dev/null
+++ b/examples/with-playwright/e2e/example.spec.ts
@@ -0,0 +1,12 @@
+import { test, expect } from '@playwright/test'
+
+test('should navigate to the about page', async ({ page }) => {
+ // Start from the index page (the baseURL is set via the webServer in the playwright.config.ts)
+ await page.goto('/')
+ // Find an element with the text 'About Page' and click on it
+ await page.click('text=About Page')
+ // The new url should be "/about" (baseURL is used there)
+ await expect(page).toHaveURL('/about')
+ // The new page should contain an h1 with "About Page"
+ await expect(page.locator('h1')).toContainText('About Page')
+})
diff --git a/examples/with-playwright/package.json b/examples/with-playwright/package.json
new file mode 100644
index 0000000000..9c98887da6
--- /dev/null
+++ b/examples/with-playwright/package.json
@@ -0,0 +1,17 @@
+{
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "test:e2e": "playwright test"
+ },
+ "dependencies": {
+ "next": "latest",
+ "react": "17.0.2",
+ "react-dom": "17.0.2"
+ },
+ "devDependencies": {
+ "@playwright/test": "^1.15.0"
+ }
+}
diff --git a/examples/with-playwright/pages/_app.js b/examples/with-playwright/pages/_app.js
new file mode 100644
index 0000000000..1e1cec9242
--- /dev/null
+++ b/examples/with-playwright/pages/_app.js
@@ -0,0 +1,7 @@
+import '../styles/globals.css'
+
+function MyApp({ Component, pageProps }) {
+ return
+}
+
+export default MyApp
diff --git a/examples/with-playwright/pages/about.js b/examples/with-playwright/pages/about.js
new file mode 100644
index 0000000000..0db6440474
--- /dev/null
+++ b/examples/with-playwright/pages/about.js
@@ -0,0 +1,17 @@
+import styles from '../styles/Home.module.css'
+import Link from 'next/link'
+
+export default function About() {
+ return (
+