Skip to main content
Version: 1.23

Test Generator

Playwright comes with the ability to generate tests out of the box.

Generate tests

playwright codegen

Run codegen and perform actions in the browser. Playwright will generate the code for the user interactions. codegen will attempt to generate resilient text-based selectors.

Preserve authenticated state

Run codegen with --save-storage to save cookies and localStorage at the end of the session. This is useful to separately record authentication step and reuse it later in the tests.

playwright codegen --save-storage=auth.json
# Perform authentication and exit.
# auth.json will contain the storage state.

Run with --load-storage to consume previously loaded storage. This way, all cookies and localStorage will be restored, bringing most web apps to the authenticated state.

playwright open --load-storage=auth.json
playwright codegen --load-storage=auth.json
# Perform actions in authenticated state.

Record using custom setup

If you would like to use codegen in some non-standard setup (for example, use browser_context.route(url, handler, **kwargs)), it is possible to call page.pause() that will open a separate window with codegen controls.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
# Make sure to run headed.
browser = p.chromium.launch(headless=False)

# Setup context however you like.
context = browser.new_context() # Pass any options
context.route('**/*', lambda route: route.continue_())

# Pause the page, and start recording manually.
page = context.new_page()

Emulate devices

You can record scripts and tests while emulating a device.

# Emulate iPhone 11.
playwright codegen --device="iPhone 11"

Emulate color scheme and viewport size

You can also record scripts and tests while emulating various browser properties.

# Emulate screen size and color scheme.
playwright codegen --viewport-size=800,600 --color-scheme=dark

Emulate geolocation, language and timezone

# Emulate timezone, language & location
# Once page opens, click the "my location" button to see geolocation in action
playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT"