Skip to content

TestSessionTab

Модуль тестов вкладки 'Сеансы'.

Содержит тесты для проверки функциональности работы с пользовательтскими сессиями.

TestSessionsTab

Набор тестов для вкладки 'Сеансы'.

Проверяет корректность отображения и функциональность элементов вкладки сеансов.

Source code in tests\e2e\test_sessions_tab.py
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
class TestSessionsTab:
    """Набор тестов для вкладки 'Сеансы'.

    Проверяет корректность отображения и функциональность элементов вкладки сеансов.
    """

    @pytest.fixture(scope="function", autouse=True)
    def setup(self, browser):
        """Фикстура для подготовки тестового окружения.

        Выполняет:
        1. Авторизацию в системе
        2. Переход на вкладку 'Сеансы' через панель навигации
        """
        # Авторизация в системе
        login_page = LoginPage(browser)
        login_page.do_login()

        # Инициализация главной страницы
        main_page = MainPage(browser)

        # Проверка и взаимодействие с элементами навигации
        main_page.should_be_navigation_panel()
        main_page.click_main_navigation_panel_item("Настройки")
        main_page.click_subpanel_item("Обслуживание и диагностика")
        main_page.click_subpanel_item("Сеансы")

    @pytest.fixture(scope="function")
    def cleanup_user(self, browser: Page) -> None:
        """Фикстура для очистки пользователя NewUser после теста."""

        yield

        mp = MainPage(browser)
        mp.click_subpanel_item("Пользователи")
        ut = UsersTab(browser)

        # Удаляем тестового пользователя после выполнения теста
        user_data: Dict[str, str] = {"name": "NewUser", "role": "Администратор"}

        # Проверяем существует ли пользователь и удаляем его
        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_sessions_tab_content(self, browser):
        """Тест содержимого вкладки 'Сеансы'.

        Проверяет:
        1. Наличие и корректность тулбара
        2. Наличие таблицы сеансов
        3. Соответствие содержимого таблицы данным из БД
        """
        # Инициализация страницы сеансов
        sessions_tab = SessionsTab(browser)

        # Проверка элементов интерфейса
        sessions_tab.should_be_toolbar()
        sessions_tab.should_be_sessions_table()

        # Проверка содержимого таблицы с верификацией данных из БД
        sessions_tab.check_sessions_table_content(verify=True)

    def test_sessions_table_row_highlighting(self, browser):
        """Тест содержимого вкладки 'Сеансы'.

        Проверяет:
        1. Наличие таблицы сеансов
        2. Проверка подсветки строки при наведении на нее курсором
        """
        # Инициализация страницы сеансов
        sessions_tab = SessionsTab(browser)

        # Проверка элементов интерфейса
        sessions_tab.should_be_sessions_table()

        # Получение количества строк в таблице без учета заголовка
        rows_count = sessions_tab.get_rows_count()

        # Проверка подсветки первой строки
        sessions_tab.check_sessions_table_row_highlighting(0)

        # Проверка подсветки последней строки строки (если в таблице более одной строки)
        if rows_count > 1:
            sessions_tab.check_sessions_table_row_highlighting(rows_count - 1)

    def test_delete_session_confirm_window(self, browser):
        """Тест содержимого вкладки 'Сеансы'.

        Проверяет:
        1. Наличие таблицы сеансов
        2. Проверка контента и возможности горизонтального скроллинга окна подтверждения удаления сессии
        """

        # Инициализация страницы сеансов
        sessions_tab = SessionsTab(browser)

        # Проверка элементов интерфейса
        sessions_tab.should_be_sessions_table()

        # Проверка контента и скроллинга окна подтверждения удаления сессии
        sessions_tab.check_delete_session_confirm_window()

    # @pytest.mark.develop
    def test_session_for_new_user(self, browser, cleanup_user):
        """Тест содержимого вкладки 'Сеансы'.

        Проверяет:
        1. Создание нового пользователя
        2. Вход нового пользователя в систему
        3. Проверка наличия сессии нового пользователя
        4. Выход нового пользователя из системы (logout)
        5. Вход в систему первоначального пользователя
        6. Проверка отсутствия сессии нового пользователя
        7. Удаление нового пользователя
        """
        user_data = {"name": "NewUser", "role": "Администратор", "password": "qwerty"}

        mp = MainPage(browser)
        ut = UsersTab(browser)

        # Создание нового пользователя
        mp.click_subpanel_item("Пользователи")
        ut.open_add_user_window()
        ut.add_new_user(user_data)

        # Обновление списка пользователей (двойной клик - возможно баг?)
        mp.click_subpanel_item("Пользователи")
        mp.click_subpanel_item("Пользователи")

        # Проверка наличия пользователя в таблице
        ut.should_be_user_in_table(user_data["name"], user_data["role"])

        # Вход в систему для нового пользователя
        new_lp = LoginPage(browser)
        new_lp.do_login(username=user_data["name"], password=user_data["password"])

        # Инициализация главной страницы
        new_mp = MainPage(browser)

        # Открыть вкладку Сессии
        new_mp.should_be_navigation_panel()
        new_mp.click_main_navigation_panel_item("Настройки")
        new_mp.click_subpanel_item("Обслуживание и диагностика")
        new_mp.click_subpanel_item("Сеансы")

        # Инициализация страницы сеансов
        st = SessionsTab(browser)

        # Проверка элементов интерфейса
        st.should_be_sessions_table()

        # Проверка наличия записи о сессии текущего пользователя
        session_token = st.get_session_token()
        st.should_be_session_in_table(session_token)

        # logout
        new_mp.do_logout()

        # Авторизация в системе предыдущего пользователя
        prev_lp = LoginPage(browser)
        prev_lp.do_login()

        # Инициализация главной страницы
        prev_mp = MainPage(browser)

        # Открыть вкладку Сессии
        prev_mp.should_be_navigation_panel()
        prev_mp.click_main_navigation_panel_item("Настройки")
        prev_mp.click_subpanel_item("Обслуживание и диагностика")
        prev_mp.click_subpanel_item("Сеансы")

        # Проверка элементов интерфейса
        st.should_be_sessions_table()

        # Проверка отсутствия записи о сессии созданного пользователя после выхода из системы
        st.should_not_be_session_in_table(session_token)

        # Удаление созданного пользователя
        prev_ut = UsersTab(browser)
        prev_ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
        prev_ut.delete_user(user_data["name"])

cleanup_user(browser)

Фикстура для очистки пользователя NewUser после теста.

Source code in tests\e2e\test_sessions_tab.py
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
@pytest.fixture(scope="function")
def cleanup_user(self, browser: Page) -> None:
    """Фикстура для очистки пользователя NewUser после теста."""

    yield

    mp = MainPage(browser)
    mp.click_subpanel_item("Пользователи")
    ut = UsersTab(browser)

    # Удаляем тестового пользователя после выполнения теста
    user_data: Dict[str, str] = {"name": "NewUser", "role": "Администратор"}

    # Проверяем существует ли пользователь и удаляем его
    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"])

setup(browser)

Фикстура для подготовки тестового окружения.

Выполняет: 1. Авторизацию в системе 2. Переход на вкладку 'Сеансы' через панель навигации

Source code in tests\e2e\test_sessions_tab.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@pytest.fixture(scope="function", autouse=True)
def setup(self, browser):
    """Фикстура для подготовки тестового окружения.

    Выполняет:
    1. Авторизацию в системе
    2. Переход на вкладку 'Сеансы' через панель навигации
    """
    # Авторизация в системе
    login_page = LoginPage(browser)
    login_page.do_login()

    # Инициализация главной страницы
    main_page = MainPage(browser)

    # Проверка и взаимодействие с элементами навигации
    main_page.should_be_navigation_panel()
    main_page.click_main_navigation_panel_item("Настройки")
    main_page.click_subpanel_item("Обслуживание и диагностика")
    main_page.click_subpanel_item("Сеансы")

test_delete_session_confirm_window(browser)

Тест содержимого вкладки 'Сеансы'.

Проверяет: 1. Наличие таблицы сеансов 2. Проверка контента и возможности горизонтального скроллинга окна подтверждения удаления сессии

Source code in tests\e2e\test_sessions_tab.py
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
def test_delete_session_confirm_window(self, browser):
    """Тест содержимого вкладки 'Сеансы'.

    Проверяет:
    1. Наличие таблицы сеансов
    2. Проверка контента и возможности горизонтального скроллинга окна подтверждения удаления сессии
    """

    # Инициализация страницы сеансов
    sessions_tab = SessionsTab(browser)

    # Проверка элементов интерфейса
    sessions_tab.should_be_sessions_table()

    # Проверка контента и скроллинга окна подтверждения удаления сессии
    sessions_tab.check_delete_session_confirm_window()

test_session_for_new_user(browser, cleanup_user)

Тест содержимого вкладки 'Сеансы'.

Проверяет: 1. Создание нового пользователя 2. Вход нового пользователя в систему 3. Проверка наличия сессии нового пользователя 4. Выход нового пользователя из системы (logout) 5. Вход в систему первоначального пользователя 6. Проверка отсутствия сессии нового пользователя 7. Удаление нового пользователя

Source code in tests\e2e\test_sessions_tab.py
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
def test_session_for_new_user(self, browser, cleanup_user):
    """Тест содержимого вкладки 'Сеансы'.

    Проверяет:
    1. Создание нового пользователя
    2. Вход нового пользователя в систему
    3. Проверка наличия сессии нового пользователя
    4. Выход нового пользователя из системы (logout)
    5. Вход в систему первоначального пользователя
    6. Проверка отсутствия сессии нового пользователя
    7. Удаление нового пользователя
    """
    user_data = {"name": "NewUser", "role": "Администратор", "password": "qwerty"}

    mp = MainPage(browser)
    ut = UsersTab(browser)

    # Создание нового пользователя
    mp.click_subpanel_item("Пользователи")
    ut.open_add_user_window()
    ut.add_new_user(user_data)

    # Обновление списка пользователей (двойной клик - возможно баг?)
    mp.click_subpanel_item("Пользователи")
    mp.click_subpanel_item("Пользователи")

    # Проверка наличия пользователя в таблице
    ut.should_be_user_in_table(user_data["name"], user_data["role"])

    # Вход в систему для нового пользователя
    new_lp = LoginPage(browser)
    new_lp.do_login(username=user_data["name"], password=user_data["password"])

    # Инициализация главной страницы
    new_mp = MainPage(browser)

    # Открыть вкладку Сессии
    new_mp.should_be_navigation_panel()
    new_mp.click_main_navigation_panel_item("Настройки")
    new_mp.click_subpanel_item("Обслуживание и диагностика")
    new_mp.click_subpanel_item("Сеансы")

    # Инициализация страницы сеансов
    st = SessionsTab(browser)

    # Проверка элементов интерфейса
    st.should_be_sessions_table()

    # Проверка наличия записи о сессии текущего пользователя
    session_token = st.get_session_token()
    st.should_be_session_in_table(session_token)

    # logout
    new_mp.do_logout()

    # Авторизация в системе предыдущего пользователя
    prev_lp = LoginPage(browser)
    prev_lp.do_login()

    # Инициализация главной страницы
    prev_mp = MainPage(browser)

    # Открыть вкладку Сессии
    prev_mp.should_be_navigation_panel()
    prev_mp.click_main_navigation_panel_item("Настройки")
    prev_mp.click_subpanel_item("Обслуживание и диагностика")
    prev_mp.click_subpanel_item("Сеансы")

    # Проверка элементов интерфейса
    st.should_be_sessions_table()

    # Проверка отсутствия записи о сессии созданного пользователя после выхода из системы
    st.should_not_be_session_in_table(session_token)

    # Удаление созданного пользователя
    prev_ut = UsersTab(browser)
    prev_ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
    prev_ut.delete_user(user_data["name"])

test_sessions_tab_content(browser)

Тест содержимого вкладки 'Сеансы'.

Проверяет: 1. Наличие и корректность тулбара 2. Наличие таблицы сеансов 3. Соответствие содержимого таблицы данным из БД

Source code in tests\e2e\test_sessions_tab.py
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
def test_sessions_tab_content(self, browser):
    """Тест содержимого вкладки 'Сеансы'.

    Проверяет:
    1. Наличие и корректность тулбара
    2. Наличие таблицы сеансов
    3. Соответствие содержимого таблицы данным из БД
    """
    # Инициализация страницы сеансов
    sessions_tab = SessionsTab(browser)

    # Проверка элементов интерфейса
    sessions_tab.should_be_toolbar()
    sessions_tab.should_be_sessions_table()

    # Проверка содержимого таблицы с верификацией данных из БД
    sessions_tab.check_sessions_table_content(verify=True)

test_sessions_table_row_highlighting(browser)

Тест содержимого вкладки 'Сеансы'.

Проверяет: 1. Наличие таблицы сеансов 2. Проверка подсветки строки при наведении на нее курсором

Source code in tests\e2e\test_sessions_tab.py
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
def test_sessions_table_row_highlighting(self, browser):
    """Тест содержимого вкладки 'Сеансы'.

    Проверяет:
    1. Наличие таблицы сеансов
    2. Проверка подсветки строки при наведении на нее курсором
    """
    # Инициализация страницы сеансов
    sessions_tab = SessionsTab(browser)

    # Проверка элементов интерфейса
    sessions_tab.should_be_sessions_table()

    # Получение количества строк в таблице без учета заголовка
    rows_count = sessions_tab.get_rows_count()

    # Проверка подсветки первой строки
    sessions_tab.check_sessions_table_row_highlighting(0)

    # Проверка подсветки последней строки строки (если в таблице более одной строки)
    if rows_count > 1:
        sessions_tab.check_sessions_table_row_highlighting(rows_count - 1)