41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import pytest
|
||
from playwright.sync_api import Page
|
||
|
||
# Словарь с учетными данными для разных ролей
|
||
CREDENTIALS = {
|
||
"vetdept": {"login": "gz_vetdept@vet.goznak.ru", "password": "y2pyBAn7zw"},
|
||
"vetstation": {"login": "gz_vetstation@vet.goznak.ru", "password": "A6wrpzpD5T"},
|
||
"prefecture": {"login": "gz_prefecture@vet.goznak.ru", "password": "sbT9shGsbe"},
|
||
}
|
||
|
||
@pytest.fixture(scope="function")
|
||
def role_page(page: Page, request):
|
||
"""
|
||
Фикстура, которая определяет роль теста и автоматически авторизует пользователя.
|
||
"""
|
||
# 2. Выполняем логин
|
||
role = None
|
||
|
||
for marker in request.node.iter_markers():
|
||
if marker.name in CREDENTIALS:
|
||
role = marker.name
|
||
break
|
||
|
||
# 3. Если маркер не найден, честно говорим об этом (вместо молчаливого NameError)
|
||
if role is None:
|
||
pytest.fail("ОШИБКА: У теста нет маркера роли (например, @pytest.mark.vetstation)!")
|
||
|
||
print(f"\n[АВТОЛОГИН] Выполняется вход под ролью: {role}")
|
||
|
||
page.goto("https://vet.goznak.ru")
|
||
creds = CREDENTIALS[role]
|
||
|
||
page.get_by_role("textbox", name="Email").fill(creds["login"])
|
||
page.get_by_role("textbox", name="Введите пароль").fill(creds["password"])
|
||
page.get_by_role("button", name="Войти в аккаунт").click()
|
||
|
||
page.wait_for_selector("#app", timeout=10000)
|
||
|
||
yield page
|
||
|
||
page.context.clear_cookies() |