Skip to content

Commit

Permalink
stash
Browse files Browse the repository at this point in the history
  • Loading branch information
afuetterer committed Jul 17, 2024
1 parent 83dfd0b commit 8330ff7
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 19 deletions.
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ filterwarnings = [
"ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning",
"ignore:pkg_resources is deprecated as an API:DeprecationWarning",

"ignore:CoreAPI compatibility is deprecated and will be removed in DRF 3.17:rest_framework.RemovedInDRF317Warning",

# ignore warnings raised from within django itself
# django/core/files/storage/__init__.py
"ignore:django.core.files.storage.get_storage_class is deprecated:django.utils.deprecation.RemovedInDjango51Warning",
Expand Down
66 changes: 47 additions & 19 deletions rdmo/management/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest

from django.core.management import call_command

from django.conf import settings
from playwright.sync_api import BrowserType, Page, expect
from pytest_django.live_server_helper import LiveServer

Expand All @@ -18,32 +18,60 @@ def _e2e_tests_django_db_setup(django_db_setup, django_db_blocker, fixtures):


@pytest.fixture
def base_url_page(live_server: LiveServer, browser: BrowserType) -> Page:
def base_url_page(
django_user_model,
username,
live_server: LiveServer,
browser: BrowserType) -> Page:
"""Enable playwright to address URLs with base URL automatically prefixed."""
context = browser.new_context(base_url=live_server.url)
page = context.new_page()
# context = browser.new_context(base_url=live_server.url)
user = django_user_model.objects.get(username=username)
print(user)
page = browser.new_page()
yield page
context.close()
# context.close()


# helper function for logging in the user
def login_user(page: Page, username: str, password: str) -> Page:
page.goto("/account/login")
page.get_by_label("Username").fill(username, timeout=5000)
page.get_by_label("Password").fill(password)
page.get_by_role("button", name="Login").click()
page.goto("/management")
return page
# # helper function for logging in the user
# def login_user(page: Page, username: str, password: str) -> Page:
# page.goto("/account/login")
# page.get_by_label("Username").fill(username, timeout=5000)
# page.get_by_label("Password").fill(password)
# page.get_by_role("button", name="Login").click()
# page.goto("/management")
# return page

def logout_user(page: Page):
page.goto("/account/logout")
page.get_by_role("button", name="Logout").click()
expect(page).to_have_url('/')
return page
# def logout_user(page: Page):
# page.goto("/account/logout")
# page.get_by_role("button", name="Logout").click()
# expect(page).to_have_url('/')
# return page

@pytest.fixture
def logged_in_user(_e2e_tests_django_db_setup, base_url_page, username:str, password: str) -> Page:
def logged_in_user(_e2e_tests_django_db_setup, django_user_model, base_url_page, client, username:str, password: str) -> Page:
"""Log in as admin user through Django login UI, returns logged in page for e2e tests."""

print()
user = django_user_model.objects.get(username=username)
print(user)
print(client)
client.force_login(user)
print(client.cookies)
session_cookie = client.cookies[settings.SESSION_COOKIE_NAME]
assert session_cookie
print(session_cookie)

# Inject the session Cookie to playwright browser:
cookie = {
'name': session_cookie.key,
'value': session_cookie.value,
# 'url': live_server_url,
}
print(cookie)

# page.context.add_cookies([cookie])


page = login_user(base_url_page, username, password)
yield page
logout_user(page)

0 comments on commit 8330ff7

Please sign in to comment.