Skip to main content
Version: 1.17


Playwright allows overriding various parameters of the device where the browser is running:

  • viewport size, device scale factor, touch support
  • locale, timezone
  • color scheme
  • geolocation

Most of these parameters are configured during the browser context construction, but some of them such as viewport size can be changed for individual pages.


Playwright comes with a registry of device parameters for selected mobile devices. It can be used to simulate browser behavior on a mobile device:

from playwright.sync_api import sync_playwright

def run(playwright):
pixel_2 = playwright.devices['Pixel 2']
browser = playwright.webkit.launch(headless=False)
context = browser.new_context(

with sync_playwright() as playwright:

All pages created in the context above will share the same device parameters.

API reference

User agent

All pages created in the context above will share the user agent specified:

context = browser.new_context(
user_agent='My user agent'

API reference


Create a context with custom viewport size:

# Create context with given viewport
context = browser.new_context(
viewport={ 'width': 1280, 'height': 1024 }

# Resize viewport for individual page
page.set_viewport_size(width=1600, height=1200)

# Emulate high-DPI
context = browser.new_context(
viewport={ 'width': 2560, 'height': 1440 },

API reference

Locale & timezone

# Emulate locale and time
context = browser.new_context(

API reference


Allow all pages in the context to show system notifications:

context = browser.new_context(

Grant all pages in the existing context access to current location:


Grant notifications access from a specific domain:

context.grant_permissions(['notifications'], origin='')

Revoke all permissions:


API reference


Create a context with "geolocation" permissions granted:

context = browser.new_context(
geolocation={"longitude": 48.858455, "latitude": 2.294474},

Change the location later:

context.set_geolocation({"longitude": 29.979097, "latitude": 31.134256})

Note you can only change geolocation for all pages in the context.

API reference

Color scheme and media

Create a context with dark or light mode. Pages created in this context will follow this color scheme preference.

# Create context with dark mode
context = browser.new_context(
color_scheme='dark' # or 'light'

# Create page with dark mode
page = browser.new_page(
color_scheme='dark' # or 'light'

# Change color scheme for the page

# Change media for page

API reference