Skip to content

Instantly share code, notes, and snippets.

@joshuadavidthomas
Created April 23, 2025 13:56
Show Gist options
  • Save joshuadavidthomas/3b43da78066e8b896534c9aab41b049d to your computer and use it in GitHub Desktop.
Save joshuadavidthomas/3b43da78066e8b896534c9aab41b049d to your computer and use it in GitHub Desktop.
from __future__ import annotations
import pytest
from model_bakery import baker
@pytest.fixture
def test_browser(browser, live_server):
context = browser.new_context(base_url=live_server.url)
errors = []
context.on(
"response",
lambda response: errors.append(response) if response.status >= 400 else None,
)
yield context
context.close()
assert len(errors) == 0, f"{len(errors)} HTTP error(s) occurred\n\n" + "\n\n".join(
[
f"URL: {response.url}\n"
f"Method: {response.request.method}\n"
f"Status: {response.status}\n"
f"Message: {response.status_text}\n"
f"Headers: {response.headers}\n"
for response in errors
]
)
@pytest.fixture
def authenticated_browser(client, test_browser, live_server, db):
user = baker.make("users.User")
client.force_login(user)
test_browser.add_cookies(
[
{
"name": "sessionid",
"value": client.cookies["sessionid"].value,
"domain": live_server.url.replace("http:", ""),
"path": "/",
},
{
"name": "csrftoken",
"value": "dummy-csrf-token",
"domain": live_server.url.replace("http:", ""),
"path": "/",
},
]
)
return test_browser
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment