e-nms_qa_automation/tests/e2e/test_users_tab.py

252 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль тестов вкладки 'Пользователи'.
Содержит тесты для проверки функциональности
работы с пользователями системы.
"""
from typing import Dict
import pytest
from playwright.sync_api import Page
from pages.users_tab import UsersTab
from pages.main_page import MainPage
from pages.login_page import LoginPage
class TestUsersTab:
"""Класс тестов для проверки вкладки 'Пользователи'."""
@pytest.fixture(scope="function", autouse=True)
def setup(self, browser: Page) -> None:
"""Настраивает тестовое окружение.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_navigation_panel()
mp.click_main_navigation_panel_item("Настройки")
mp.click_subpanel_item("Пользователи")
@pytest.fixture(scope="function")
def cleanup_user(self, browser: Page) -> None:
"""Фикстура для очистки пользователя User после теста."""
yield
# Удаляем тестового пользователя после выполнения теста
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
ut = UsersTab(browser)
# Проверяем существует ли пользователь и удаляем его
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut.delete_user(user_data["name"])
@pytest.fixture(scope="function")
def cleanup_autoadmin(self, browser: Page) -> None:
"""Фикстура для очистки пользователя autoadmin после теста."""
yield
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
ut = UsersTab(browser)
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut.delete_user(user_data["name"])
@pytest.fixture(scope="function")
def cleanup_autooperator(self, browser: Page) -> None:
"""Фикстура для очистки пользователя autooperator после теста."""
yield
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
ut = UsersTab(browser)
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut.delete_user(user_data["name"])
def test_users_tab_content(self, browser: Page) -> None:
"""Проверяет содержимое вкладки 'Пользователи'.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
ut.should_be_toolbar()
ut.should_be_users_table()
ut.check_users_table_content(True)
def test_users_tab_toolbar_buttons(self, browser: Page) -> None:
"""Проверяет кнопки на панели инструментов.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
ut.should_be_toolbar_buttons()
def test_add_user_window_content(self, browser: Page) -> None:
"""Проверяет содержимое окна добавления пользователя.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
ut.open_add_user_window()
ut.check_add_user_window_content()
def test_add_user_window_close_buttons(self, browser: Page) -> None:
"""Проверяет кнопки закрытия окна добавления.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
ut.open_add_user_window()
ut.close_add_user_window_by_toolbar_button()
ut.open_add_user_window()
ut.close_add_user_window()
def test_edit_user_window_content(self, browser: Page) -> None:
"""Проверяет содержимое окна редактирования.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
user_name, role = ut.open_edit_user_page_by_index(0)
ut.check_edit_user_window_content(user_name, role)
def test_edit_user_window_close_buttons(self, browser: Page) -> None:
"""Проверяет кнопки закрытия окна редактирования.
Args:
browser: Экземпляр страницы Playwright.
"""
ut = UsersTab(browser)
user_name, _ = ut.open_edit_user_page_by_index(0)
ut.close_edit_user_window_by_toolbar_button(user_name)
user_name, _ = ut.open_edit_user_page_by_index(0)
ut.close_edit_user_window(user_name)
def test_add_and_delete_user(self, browser: Page, cleanup_user: None) -> None:
"""Проверяет добавление и удаление пользователя.
Args:
browser: Экземпляр страницы Playwright.
cleanup_user: Фикстура для очистки пользователя.
"""
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
mp = MainPage(browser)
ut = UsersTab(browser)
# Проверяем, есть ли такой пользователь
user_exists = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1
if not user_exists:
# Создаем пользователя впервые
ut.open_add_user_window()
success = ut.add_new_user(user_data)
if success:
# Ждем обновления таблицы с использованием ожиданий Playwright
browser.wait_for_timeout(2000)
# Проверяем наличие пользователя в таблице
user_found = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1
if not user_found:
# Если пользователь не найден, обновляем страницу
browser.reload()
browser.wait_for_timeout(2000)
else:
ut.close_add_user_window()
# Пытаемся создать такого же пользователя снова
ut.open_add_user_window()
success_second = ut.add_new_user(user_data)
# Должно вернуться False при попытке создания существующего пользователя
assert not success_second, "Ожидалась ошибка при создании существующего пользователя"
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut.delete_user(user_data["name"])
mp.click_subpanel_item("Пользователи")
mp.click_subpanel_item("Пользователи")
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
def test_reset_password(self, browser: Page, cleanup_autoadmin: None) -> None:
"""Проверяет сброс пароля пользователя.
Args:
browser: Экземпляр страницы Playwright.
cleanup_autoadmin: Фикстура для очистки пользователя autoadmin.
"""
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
mp = MainPage(browser)
ut = UsersTab(browser)
ut.open_add_user_window()
ut.add_new_user(user_data)
mp.click_subpanel_item("Пользователи")
mp.click_subpanel_item("Пользователи")
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
new_password = ut.reset_password(user_data["name"])
if len(new_password) == 0:
assert False, "Unsuccessful password reset"
new_lp = LoginPage(browser)
new_lp.do_login(username=user_data["name"], password=new_password)
new_mp = MainPage(browser)
new_mp.do_logout()
lp_1 = LoginPage(browser)
lp_1.do_login()
mp_1 = MainPage(browser)
mp_1.should_be_navigation_panel()
mp_1.click_main_navigation_panel_item("Настройки")
mp_1.click_subpanel_item("Пользователи")
ut_1 = UsersTab(browser)
ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut_1.delete_user(user_data["name"])
mp_1.click_subpanel_item("Пользователи")
mp_1.click_subpanel_item("Пользователи")
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
def test_edit_user_role(self, browser: Page, cleanup_autooperator: None) -> None:
"""Проверяет изменение роли пользователя.
Args:
browser: Экземпляр страницы Playwright.
cleanup_autooperator: Фикстура для очистки пользователя autooperator.
"""
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
mp = MainPage(browser)
ut = UsersTab(browser)
ut.open_add_user_window()
ut.add_new_user(user_data)
mp.click_subpanel_item("Пользователи")
mp.click_subpanel_item("Пользователи")
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
new_user_data = {"role": "Контактное лицо"}
ut.edit_user(user_data["name"], new_user_data)
mp.click_subpanel_item("Пользователи")
mp.click_subpanel_item("Пользователи")
ut.should_be_user_in_table(user_data["name"], new_user_data["role"])
ut.open_edit_user_page_by_user(user_data["name"], new_user_data["role"])
ut.delete_user(user_data["name"])
mp.click_subpanel_item("Пользователи")
mp.click_subpanel_item("Пользователи")
ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"])