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()