[Fix] Frontend Testing Fixtures (#249)

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Co-authored-by: Liam Brydon <lbry121@aucklanduni.ac.nz>
Reviewed-on: enviPath/enviPy#249
This commit is contained in:
2025-12-03 10:49:23 +13:00
parent 901de4640c
commit d6440f416c
5 changed files with 214 additions and 97 deletions

View File

@ -0,0 +1,51 @@
from django.test import tag
from playwright.sync_api import expect
from django.conf import settings as s
from .frontend_base import EnviPyStaticLiveServerTestCase
class TestLoginPage(EnviPyStaticLiveServerTestCase):
@tag("frontend")
def test_register(self):
page = self.page
page.goto(self.live_server_url + "/login")
page.get_by_text("Register", exact=True).click()
page.get_by_role("textbox", name="Username").click()
page.get_by_role("textbox", name="Username").fill("newuser")
page.get_by_role("textbox", name="Email").click()
page.get_by_role("textbox", name="Email").fill("newuser@new.com")
page.get_by_role("textbox", name="Password", exact=True).click()
page.get_by_role("textbox", name="Password", exact=True).fill("NewUser_1")
page.get_by_role("textbox", name="Repeat Password").click()
page.get_by_role("textbox", name="Repeat Password").fill("NewUser_1")
page.get_by_role("button", name="Sign Up").click()
if s.ADMIN_APPROVAL_REQUIRED:
expected_text = "Your account has been created! An admin will activate it soon!"
else:
expected_text = (
"Account has been created! You'll receive a mail to activate your account shortly."
)
# Check for success text after Sign Up is clicked
expect(page.get_by_text(expected_text)).to_be_visible(timeout=10000)
if s.ADMIN_APPROVAL_REQUIRED:
from django.contrib.auth import get_user_model
u = get_user_model().objects.get(username="newuser")
u.is_active = True
u.save()
page.get_by_role("textbox", name="Username").click()
page.get_by_role("textbox", name="Username").fill("newuser")
page.get_by_role("textbox", name="Password").click()
page.get_by_role("textbox", name="Password").fill("NewUser_1")
page.get_by_role("button", name="Sign In").click()
# Check that the logged in button is visible indicating the user is logged in
expect(page.locator("#loggedInButton")).to_be_visible(timeout=100000000)
@tag("frontend")
def test_login(self):
page = self.login()
# Check that the logged in button is visible indicating the user is logged in
expect(page.locator("#loggedInButton")).to_be_visible()