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

[BUG] Tracing does not work with playwright.request.newcontext()

Open jnjgomez10 opened this issue 3 years ago • 5 comments

Context: I am using playwright to test REST API endpoints. I do not see trace.zip after I run pytest --tracing=on.

Code Snippet

Simple test script

import os
from typing import Generator

import pytest
from playwright.sync_api import Playwright, APIRequestContext


@pytest.fixture(scope="session")
def api_request_context(
    playwright: Playwright,
) -> Generator[APIRequestContext, None, None]:
    request_context = playwright.request.new_context(
        base_url="https://api.publicapis.org",
        ignore_https_errors=True
    )
    yield request_context
    request_context.dispose()

def test_should_create_bug_report(api_request_context: APIRequestContext) -> None:
    response = api_request_context.get("/entries")
    assert response.ok

Describe the bug

pytest --tracing=on test_mytest.py does not produce trace.zip

jnjgomez10 avatar Oct 28 '22 16:10 jnjgomez10

AFAICT, it also doesn't work with Browser.new_context (e.g., using the browser fixture to create a context with a different scale factor browser.new_context(device_scale_factor=2)); not sure if that ends up using the same APIRequestContext in the end.

Edit: Ah, maybe what I'm seeing is #99.

QuLogic avatar Nov 04 '22 00:11 QuLogic

And this is particularly problematic as the only way to test chrome extensions is by creating a new context as per https://playwright.dev/python/docs/chrome-extensions

Please help :)

guandalf avatar Feb 20 '24 08:02 guandalf

In fact I just reimplemented my fixture copying it from https://github.com/microsoft/playwright-pytest/blob/fb2e7c74bbce5913897b75be35311e22480fa5ab/pytest_playwright/pytest_playwright.py#L232 and creating the context the way I need it and everything worked as expected. Might not help in all cases but to me it kinda solved....

guandalf avatar Feb 20 '24 08:02 guandalf