playwright-pytest icon indicating copy to clipboard operation
playwright-pytest copied to clipboard

[BUG] Can't run tests with multiple browsers when overriding page fixture

Open Actionb opened this issue 2 years ago • 1 comments

Context:

  • Playwright Version: 1.34.0 (pytest-playwright: 0.3.3)
  • Operating System: Linux
  • Python version: 3.11
  • Browser: All

Code Snippet

Just a simple test that overrides the page fixture.

import pytest


@pytest.fixture
def page(page):
    # do something with the page
    yield page


def test(page):
    assert True

Describe the bug

When running the above test file with pytest --browser firefox --browser chromium only one instance of the test is run and the following warning is given out instead:

pytest_playwright/pytest_playwright.py:326: UserWarning: When using unittest.TestCase specifying multiple browsers is not supported

When I include some other playwright fixture in either the page fixture or the test method, the test is run with the specified browsers as expected.

So for example, this works:

def test(page, browser_name):  # another playwright fixture
    assert True

But this does not:

def test(page, monkeypatch):  # a pytest fixture
    assert True

Actionb avatar Jun 13 '23 11:06 Actionb

I had the same problem and could solve it: When overriding the page fixture instead of requesting the default page fixture, request the BrowserContext directly. Basically just implementing the same code as the original page fixture:

https://github.com/microsoft/playwright-pytest/blob/b22872ca175399a97d8808745adb3e2c98521188/pytest-playwright/pytest_playwright/pytest_playwright.py#L347

@pytest.fixture
def page(context: BrowserContext) -> Page:
    return context.new_page()

So, for your code example:

import pytest


@pytest.fixture
def page(context):
    # do something with the page
    page = context.new_page()
    yield page


def test(page):
    assert True

This will now run with multiple browsers without warning.

Context

  • Playwright Version: 1.49.1 (pytest-playwright: 0.6.2)
  • Operating System: Linux
  • Python version: 3.11
  • Browser: All

danshagen avatar Apr 03 '25 08:04 danshagen