Compare commits
3 Commits
51adc84838
...
9d0cab513f
| Author | SHA1 | Date |
|---|---|---|
|
|
9d0cab513f | |
|
|
f225e4c9b2 | |
|
|
c2f0cd9aa4 |
Binary file not shown.
|
|
@ -43,6 +43,10 @@ class TooltipButton(BaseElement):
|
||||||
# Получение элемента подсказки
|
# Получение элемента подсказки
|
||||||
tooltip = self.page.locator(tooltip_locator)
|
tooltip = self.page.locator(tooltip_locator)
|
||||||
|
|
||||||
|
tooltip.wait_for(state="visible", timeout=5000)
|
||||||
|
|
||||||
|
self.page.wait_for_timeout(300)
|
||||||
|
|
||||||
# Проверка соответствия текста
|
# Проверка соответствия текста
|
||||||
actual_text = tooltip.text_content().strip()
|
actual_text = tooltip.text_content().strip()
|
||||||
assert actual_text == expected_text, (
|
assert actual_text == expected_text, (
|
||||||
|
|
|
||||||
|
|
@ -148,13 +148,17 @@ class UsersTab(BasePage):
|
||||||
self.close_modal_window(title)
|
self.close_modal_window(title)
|
||||||
|
|
||||||
def add_new_user(self, user_data: dict) -> bool:
|
def add_new_user(self, user_data: dict) -> bool:
|
||||||
"""Добавляет нового пользователя.
|
"""Добавляет нового пользователя или обрабатывает ошибку при дубликате.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
user_data: Данные пользователя.
|
user_data: Данные пользователя (name, role, password).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True если пользователь успешно добавлен, False если пользователь уже существует.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если открылось alert окно отличное от success или error.
|
AssertionError: Если открылось alert окно отличное от success или error,
|
||||||
|
или если текст alert не соответствует ожидаемому.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.get_modal_window("add_user").new_user(user_data)
|
self.get_modal_window("add_user").new_user(user_data)
|
||||||
|
|
@ -244,6 +248,8 @@ class UsersTab(BasePage):
|
||||||
AssertionError: Если таблица пуста.
|
AssertionError: Если таблица пуста.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
self.page.wait_for_timeout(1000)
|
||||||
|
|
||||||
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
||||||
if len(table_content) == 0:
|
if len(table_content) == 0:
|
||||||
assert False, "The contents of the table are missing"
|
assert False, "The contents of the table are missing"
|
||||||
|
|
@ -284,6 +290,8 @@ class UsersTab(BasePage):
|
||||||
AssertionError: Если таблица пуста или индекс вне диапазона.
|
AssertionError: Если таблица пуста или индекс вне диапазона.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
self.page.wait_for_timeout(2000)
|
||||||
|
|
||||||
tmp_dict = {"admin": "Администратор", "manager": "Контактное лицо", "operator": "Оператор"}
|
tmp_dict = {"admin": "Администратор", "manager": "Контактное лицо", "operator": "Оператор"}
|
||||||
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
||||||
|
|
||||||
|
|
@ -337,6 +345,7 @@ class UsersTab(BasePage):
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если таблица пуста или заголовки неверны.
|
AssertionError: Если таблица пуста или заголовки неверны.
|
||||||
"""
|
"""
|
||||||
|
self.page.wait_for_timeout(2000)
|
||||||
|
|
||||||
expected_headers = ['Имя пользователя', 'Тип авторизации', 'Роль', 'E-mail', 'Номер для СМС']
|
expected_headers = ['Имя пользователя', 'Тип авторизации', 'Роль', 'E-mail', 'Номер для СМС']
|
||||||
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
table_content = self.users_table.read(TableLocators.TABLE_WORK_AREA)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,39 @@ class TestUsersTab:
|
||||||
mp.click_main_navigation_panel_item("Настройки")
|
mp.click_main_navigation_panel_item("Настройки")
|
||||||
mp.click_configuration_navigation_panel_item("Пользователи")
|
mp.click_configuration_navigation_panel_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:
|
def test_users_tab_content(self, browser: Page) -> None:
|
||||||
"""Проверяет содержимое вкладки 'Пользователи'.
|
"""Проверяет содержимое вкладки 'Пользователи'.
|
||||||
|
|
||||||
|
|
@ -101,11 +134,12 @@ class TestUsersTab:
|
||||||
user_name, role = ut.open_edit_user_page_by_index(0)
|
user_name, role = ut.open_edit_user_page_by_index(0)
|
||||||
ut.close_edit_user_window(user_name)
|
ut.close_edit_user_window(user_name)
|
||||||
|
|
||||||
def test_add_and_delete_user(self, browser: Page) -> None:
|
def test_add_and_delete_user(self, browser: Page, cleanup_user) -> None:
|
||||||
"""Проверяет добавление и удаление пользователя.
|
"""Проверяет добавление и удаление пользователя.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
browser: Экземпляр страницы Playwright.
|
browser: Экземпляр страницы Playwright.
|
||||||
|
cleanup_user: Фикстура для очистки пользователя.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
||||||
|
|
@ -113,22 +147,46 @@ class TestUsersTab:
|
||||||
mp = MainPage(browser)
|
mp = MainPage(browser)
|
||||||
ut = UsersTab(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()
|
ut.open_add_user_window()
|
||||||
ut.add_new_user(user_data)
|
success = ut.add_new_user(user_data)
|
||||||
mp.click_configuration_navigation_panel_item("Пользователи")
|
|
||||||
mp.click_configuration_navigation_panel_item("Пользователи")
|
if success:
|
||||||
ut.should_be_user_in_table(user_data["name"], user_data["role"])
|
# Ждем обновления таблицы с использованием ожиданий 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.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||||||
ut.delete_user(user_data["name"])
|
ut.delete_user(user_data["name"])
|
||||||
mp.click_configuration_navigation_panel_item("Пользователи")
|
mp.click_configuration_navigation_panel_item("Пользователи")
|
||||||
mp.click_configuration_navigation_panel_item("Пользователи")
|
mp.click_configuration_navigation_panel_item("Пользователи")
|
||||||
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||||
|
|
||||||
def test_reset_password(self, browser: Page) -> None:
|
def test_reset_password(self, browser: Page, cleanup_autoadmin) -> None:
|
||||||
"""Проверяет сброс пароля пользователя.
|
"""Проверяет сброс пароля пользователя.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
browser: Экземпляр страницы Playwright.
|
browser: Экземпляр страницы Playwright.
|
||||||
|
cleanup_autoadmin: Фикстура для очистки пользователя autoadmin.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
||||||
|
|
@ -163,11 +221,12 @@ class TestUsersTab:
|
||||||
mp_1.click_configuration_navigation_panel_item("Пользователи")
|
mp_1.click_configuration_navigation_panel_item("Пользователи")
|
||||||
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||||
|
|
||||||
def test_edit_user_role(self, browser: Page) -> None:
|
def test_edit_user_role(self, browser: Page, cleanup_autooperator) -> None:
|
||||||
"""Проверяет изменение роли пользователя.
|
"""Проверяет изменение роли пользователя.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
browser: Экземпляр страницы Playwright.
|
browser: Экземпляр страницы Playwright.
|
||||||
|
cleanup_autooperator: Фикстура для очистки пользователя autooperator.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue