blob: 8aca3f68a48b5706f28383c58f6279ab68b49736 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
"""Shared helpers for the Playwright test suite. See README.md for how to
run these tests and what needs to already be running.
"""
import random
import string
FRONTEND_URL = "http://localhost:4173"
def random_username(prefix="test"):
suffix = "".join(random.choices(string.ascii_lowercase + string.digits, k=8))
return f"{prefix}_{suffix}"
def random_password():
"""A fresh password per run. These accounts are throwaway, so nothing is
gained by a fixed literal - and a hardcoded one in a checked-in file has
the shape of a real credential, which trips secret scanners."""
return "Tp" + "".join(random.choices(string.ascii_letters + string.digits, k=16))
def register_and_login(page, username, password=None):
"""Registers a fresh account through the real Account screen and leaves
the app on the main menu, signed in."""
password = password or random_password()
page.goto(FRONTEND_URL, timeout=40000)
# The account entry point is the top-right identity control: "Sign In"
# when signed out, your username once signed in. It used to be an icon in
# the main menu's bottom-left cluster.
page.click('.auth-control button')
page.wait_for_timeout(300)
page.click('[data-action="tab-register"]')
page.fill('input[name="username"]', username)
page.fill('input[name="password"]', password)
page.click('.account-form button[type="submit"]')
page.wait_for_selector('.account-signed-in', timeout=10000)
page.click('[data-action="menu"]')
page.wait_for_timeout(300)
|