Добавлено ожидает исчезновения всех активных всплывающих подсказок.
parent
d39ce05c4f
commit
ae2cd5611b
|
|
@ -182,3 +182,11 @@ class BasePage:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
assert compare_lists(actual, expected), msg
|
assert compare_lists(actual, expected), msg
|
||||||
|
|
||||||
|
def wait_for_tooltip_to_disappear(self, timeout: int = 5000) -> None:
|
||||||
|
"""Ожидает исчезновения всех активных всплывающих подсказок."""
|
||||||
|
|
||||||
|
self.page.mouse.click(10, 10)
|
||||||
|
tooltip_locator = self.page.locator(".v-tooltip__content.menuable__content__active")
|
||||||
|
|
||||||
|
tooltip_locator.wait_for(state="hidden", timeout=timeout)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ class SessionsTab(BasePage):
|
||||||
|
|
||||||
self.toolbar = ToolbarComponent(page, "Сессия")
|
self.toolbar = ToolbarComponent(page, "Сессия")
|
||||||
self.sessions_table = TableComponent(page)
|
self.sessions_table = TableComponent(page)
|
||||||
|
|
||||||
self.delete_session_confirm = ConfirmComponent(page, " Отмена ", " Удалить ")
|
self.delete_session_confirm = ConfirmComponent(page, " Отмена ", " Удалить ")
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
|
|
@ -75,37 +75,37 @@ class SessionsTab(BasePage):
|
||||||
|
|
||||||
button_locator = row_locator.locator(ButtonLocators.BUTTON_DELETE_SESSION)
|
button_locator = row_locator.locator(ButtonLocators.BUTTON_DELETE_SESSION)
|
||||||
return TooltipButton(self.page, button_locator, "delete_session_button")
|
return TooltipButton(self.page, button_locator, "delete_session_button")
|
||||||
|
|
||||||
def get_session_token(self) -> str:
|
def get_session_token(self) -> str:
|
||||||
"""Возвращает токен текущего пользователя.
|
"""Возвращает токен текущего пользователя.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: Токен текущего пользователя
|
str: Токен текущего пользователя
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
"""
|
"""
|
||||||
return host.get_access_token()
|
return host.get_access_token()
|
||||||
|
|
||||||
def find_session_in_table(self, token: str) -> int:
|
def find_session_in_table(self, token: str) -> int:
|
||||||
"""Ищет сессию пользователя в таблице по выданному ему токену.
|
"""Ищет сессию пользователя в таблице по выданному ему токену.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
token (str): Токен пользователя
|
token (str): Токен пользователя
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
int: Индекс строки или -1 если не найден
|
int: Индекс строки или -1 если не найден
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если таблица пуста.
|
AssertionError: Если таблица пуста.
|
||||||
"""
|
"""
|
||||||
table_content = self.sessions_table.read(TableLocators.TABLE_WORK_AREA)
|
table_content = self.sessions_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"
|
||||||
|
|
||||||
del table_content[0] # Удаляем заголовок
|
del table_content[0] # Удаляем заголовок
|
||||||
|
|
||||||
for row_index, session_info in enumerate(table_content):
|
for row_index, session_info in enumerate(table_content):
|
||||||
if token in session_info:
|
if token in session_info:
|
||||||
return row_index
|
return row_index
|
||||||
|
|
@ -121,46 +121,46 @@ class SessionsTab(BasePage):
|
||||||
"""Прокручивает таблицу сессий вниз."""
|
"""Прокручивает таблицу сессий вниз."""
|
||||||
|
|
||||||
self.sessions_table.scroll_down(TableLocators.TABLE_SCROLL_CONTAINER)
|
self.sessions_table.scroll_down(TableLocators.TABLE_SCROLL_CONTAINER)
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
def check_delete_session_confirm_window(self):
|
def check_delete_session_confirm_window(self):
|
||||||
""" Проверяет контент и возможность горизонтального скроллинга окна подтверждения удаления сессии. """
|
""" Проверяет контент и возможность горизонтального скроллинга окна подтверждения удаления сессии. """
|
||||||
|
|
||||||
# Поиск в таблице сессий сроки для текущего пользователя
|
# Поиск в таблице сессий сроки для текущего пользователя
|
||||||
session_token = self.get_session_token()
|
session_token = self.get_session_token()
|
||||||
row_index = self.find_session_in_table(session_token)
|
row_index = self.find_session_in_table(session_token)
|
||||||
if row_index == -1:
|
if row_index == -1:
|
||||||
assert False, "Session for this token has not been found"
|
assert False, "Session for this token has not been found"
|
||||||
|
|
||||||
# Найти кнопку удаления сессии и нажать на нее
|
# Найти кнопку удаления сессии и нажать на нее
|
||||||
delete_session_button = self.get_delete_session_button_from_row(row_index)
|
delete_session_button = self.get_delete_session_button_from_row(row_index)
|
||||||
delete_session_button.click()
|
delete_session_button.click()
|
||||||
|
|
||||||
# Проверка открытия окна подтверждения с заголовком "Удаление"
|
# Проверка открытия окна подтверждения с заголовком "Удаление"
|
||||||
title = "Удаление"
|
title = "Удаление"
|
||||||
self.delete_session_confirm.check_title(
|
self.delete_session_confirm.check_title(
|
||||||
title,
|
title,
|
||||||
f"Confirmation dialog window text '{title}' is missing"
|
f"Confirmation dialog window text '{title}' is missing"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Проверка текста в окне подтверждения
|
# Проверка текста в окне подтверждения
|
||||||
confirm_message = f"Удалить сессию {session_token}?"
|
confirm_message = f"Удалить сессию {session_token}?"
|
||||||
self.delete_session_confirm.check_text(
|
self.delete_session_confirm.check_text(
|
||||||
confirm_message,
|
confirm_message,
|
||||||
"Confirmation dialog window text does not match what is expected"
|
"Confirmation dialog window text does not match what is expected"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Проверка горизонтального скроллинга
|
# Проверка горизонтального скроллинга
|
||||||
is_scrollable_horizontally = self.delete_session_confirm.check_window_horizontal_scrolling()
|
is_scrollable_horizontally = self.delete_session_confirm.check_window_horizontal_scrolling()
|
||||||
assert is_scrollable_horizontally, "Should be horizontal scrolling"
|
assert is_scrollable_horizontally, "Should be horizontal scrolling"
|
||||||
|
|
||||||
self.delete_session_confirm.scroll_window_right()
|
self.delete_session_confirm.scroll_window_right()
|
||||||
self.page.wait_for_timeout(3000)
|
self.page.wait_for_timeout(3000)
|
||||||
self.delete_session_confirm.scroll_window_left()
|
self.delete_session_confirm.scroll_window_left()
|
||||||
self.page.wait_for_timeout(2000)
|
self.page.wait_for_timeout(2000)
|
||||||
|
|
||||||
# Нажать кнопку "Отмена"
|
# Нажать кнопку "Отмена"
|
||||||
self.delete_session_confirm.click_cancel_button()
|
self.delete_session_confirm.click_cancel_button()
|
||||||
|
|
||||||
def check_sessions_table_content(self, verify: bool = False) -> None:
|
def check_sessions_table_content(self, verify: bool = False) -> None:
|
||||||
"""Проверяет содержимое таблицы сессий.
|
"""Проверяет содержимое таблицы сессий.
|
||||||
|
|
@ -283,12 +283,19 @@ class SessionsTab(BasePage):
|
||||||
AssertionError: Если кнопка отсутствует или подсказка неверна.
|
AssertionError: Если кнопка отсутствует или подсказка неверна.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Ожидаем исчезновения предыдущих подсказок перед проверкой
|
||||||
|
self.wait_for_tooltip_to_disappear()
|
||||||
|
|
||||||
delete_button = self.get_delete_session_button_from_row(row_index)
|
delete_button = self.get_delete_session_button_from_row(row_index)
|
||||||
delete_button.check_presence(
|
delete_button.check_presence(
|
||||||
f"Delete session button is missing on {row_index} row"
|
f"Delete session button is missing on {row_index} row"
|
||||||
)
|
)
|
||||||
delete_button.check_tooltip_with_text(ButtonLocators.TOOLTIP, tooltip)
|
delete_button.check_tooltip_with_text(ButtonLocators.TOOLTIP, tooltip)
|
||||||
|
|
||||||
|
# Ожидаем исчезновения подсказки после проверки
|
||||||
|
self.wait_for_tooltip_to_disappear()
|
||||||
|
|
||||||
|
|
||||||
def should_be_session_in_table(self, token: str) -> None:
|
def should_be_session_in_table(self, token: str) -> None:
|
||||||
"""Проверяет наличие сессии пользователя в таблице.
|
"""Проверяет наличие сессии пользователя в таблице.
|
||||||
|
|
||||||
|
|
@ -298,7 +305,7 @@ class SessionsTab(BasePage):
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если сессия не найдена.
|
AssertionError: Если сессия не найдена.
|
||||||
"""
|
"""
|
||||||
found = self.find_session_in_table(token)
|
found = self.find_session_in_table(token)
|
||||||
if found == -1:
|
if found == -1:
|
||||||
assert False, "Session for this token has not been found"
|
assert False, "Session for this token has not been found"
|
||||||
|
|
||||||
|
|
@ -311,7 +318,7 @@ class SessionsTab(BasePage):
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если сессия найдена.
|
AssertionError: Если сессия найдена.
|
||||||
"""
|
"""
|
||||||
found = self.find_session_in_table(token)
|
found = self.find_session_in_table(token)
|
||||||
if found != -1:
|
if found != -1:
|
||||||
assert False, "Session for this token has been found"
|
assert False, "Session for this token has been found"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue