Python Playwright start maximized window

Question:

I have a problem starting Playwright in Python maximized. I found some articles for other languages but doesn’t work in Python, also nothing is written about maximizing window in Python in the official documentation.

I tried browser = p.chromium.launch(headless=False, args=["--start-maximized"])

And it starts maximized but then automatically restores back to the default small window size.

Any ideas?
Thanks

Asked By: bbfl

||

Answers:

I just found the answer:

I need to set also the following and it works: browser.new_context(no_viewport=True)

Answered By: bbfl

You could create a conftest.py
and define:

def page(playwright: Playwright, scope="module"):
    app_data_path = os.getenv("LOCALAPPDATA")
    chromium_path = "ms-playwright\chromium-1028\chrome-win"
    chromium_path = os.path.join(app_data_path, chromium_path)
    chrome = playwright.chromium
        .launch_persistent_context(chromium_path, headless=False, args=["--start-maximised"], no_viewport=True)
    page = chrome.new_page()
    return page

Then, will be able manually maximize the window and won’t restore is back

Answered By: M András

I’m using playwright and pytest-playwright.

def test_foo(playwright):
    browser = playwright.chromium.launch(headless=False, args=["--start-maximized"])
    # create a new incognito browser context.
    context = browser.new_context(no_viewport=True)
    # create a new page in a pristine context.
    page = context.new_page()
    page.goto("https://example.com")

Run tests with pytest ., no need to specify the browser and headless params. With new_context it won’t share cookies/cache with other browser contexts so we get separation of test runs

This is the way you should do it and it works

with sync_playwright() as p:
    browser = p.chromium.launch(args=['--start-maximized'], headless=False)
    page = browser.new_page(no_viewport=True)
    page.goto(url)
Answered By: Guy