# TestZTPTemplatesTab - Документация тестов eNODE-Мониторинг

Skip to content

# TestZTPTemplatesTab

Модуль тестов вкладки 'Шаблоны' в модуле Zero Touch Provisioning.

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

## `TestZTPTemplatesTab`

Набор тестов для вкладки 'Шаблоны' в модуле Zero Touch Provisioning.

Проверяет корректность отображения, функциональность элементов интерфейса и консистентность данных между UI и API на вкладке шаблонов ZTP.

Тесты покрывают следующие функциональные области: 1. test_templates_tab_content - Базовая структура и содержимое вкладки 2. test_templates_table_row_highlighting - Визуальное выделение строк таблицы 3. test_templates_table_scrolling - Навигация по таблице с большим объемом данных 4. test_templates_modal_window_close_buttons - Закрытие модальных окон разными способами 5. test_templates_modal_window_content - Структура и содержимое модальных окон 6. test_templates_modal_window_scrolling - Навигация в модальных окнах 7. test_templates_modal_window_api_data_consistency - Синхронизация данных UI и API

Фикстура setup обеспечивает подготовку тестового окружения: - Авторизацию в системе - Навигацию к целевой вкладке через панель настроек - Инициализацию необходимых компонентов страницы

Source code in `tests\e2e\test_ztp_templates_tab.py`

     15
     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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321

    class TestZTPTemplatesTab:
        """Набор тестов для вкладки 'Шаблоны' в модуле Zero Touch Provisioning.

        Проверяет корректность отображения, функциональность элементов интерфейса
        и консистентность данных между UI и API на вкладке шаблонов ZTP.

        Тесты покрывают следующие функциональные области:
        1. test_templates_tab_content - Базовая структура и содержимое вкладки
        2. test_templates_table_row_highlighting - Визуальное выделение строк таблицы
        3. test_templates_table_scrolling - Навигация по таблице с большим объемом данных
        4. test_templates_modal_window_close_buttons - Закрытие модальных окон разными способами
        5. test_templates_modal_window_content - Структура и содержимое модальных окон
        6. test_templates_modal_window_scrolling - Навигация в модальных окнах
        7. test_templates_modal_window_api_data_consistency - Синхронизация данных UI и API

        Фикстура setup обеспечивает подготовку тестового окружения:
        - Авторизацию в системе
        - Навигацию к целевой вкладке через панель настроек
        - Инициализацию необходимых компонентов страницы
        """

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

            Выполняет:
            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("Zero Touch Provisioning")
            main_page.click_subpanel_item("Шаблоны", parent="Zero Touch Provisioning")
            main_page.wait_for_timeout(5000)

        # @pytest.mark.develop
        def test_templates_tab_content(self, browser: Page) -> None:
            """Тест содержимого вкладки 'Шаблоны'.

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

            # Проверка тулбара вкладки
            ztp_templates_tab.should_be_toolbar()

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

            browser.wait_for_timeout(5000)

            # Проверка содержимого таблицы шаблонов
            ztp_templates_tab.check_ztp_templates_table_content()

        def test_templates_table_row_highlighting(self, browser: Page) -> None:
            """Проверка выделения строк в таблице шаблонов.

            Проверяет корректность выделения строк при клике на различные позиции:
            1. Первая строка
            2. Последняя строка
            3. Строка в середине таблицы
            """

            ztp_templates_tab = ZTPTemplatesTab(browser)

            # Проверка тулбара вкладки
            ztp_templates_tab.should_be_toolbar()

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

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

            # Проверка выделения строк
            ztp_templates_tab.check_templates_table_row_highlighting(0)
            ztp_templates_tab.check_templates_table_row_highlighting(rows_count - 1)
            ztp_templates_tab.check_templates_table_row_highlighting(int(rows_count / 2))

        def test_templates_table_scrolling(self, browser: Page) -> None:
            """Проверка вертикального скроллинга таблицы шаблонов.

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

            ztp_templates_tab = ZTPTemplatesTab(browser)

            browser.wait_for_timeout(2000)

            # Проверка возможности вертикального скроллинга
            is_scrollable = ztp_templates_tab.check_templates_table_vertical_scrolling()

            if is_scrollable:
                print("Таблица поддерживает вертикальный скроллинг")

                # Прокрутка вниз
                ztp_templates_tab.scroll_templates_table_down()

                browser.wait_for_timeout(1000)

                # Проверка видимости последней строки после прокрутки
                ztp_templates_tab.check_templates_table_last_row_visibility()

                # Прокрутка вверх
                ztp_templates_tab.scroll_templates_table_up()

                browser.wait_for_timeout(1000)

                # Проверка видимости первой строки после прокрутки
                ztp_templates_tab.check_templates_table_first_row_visibility()
            else:
                print("Таблица не поддерживает вертикальный скроллинг")

                # Проверка видимости первой строки
                ztp_templates_tab.check_templates_table_first_row_visibility()

        def test_templates_modal_window_close_buttons(self, browser: Page) -> None:
            """Тест закрытия модального окна шаблона разными способами.

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

            Args:
                browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
            """
            # Инициализация страницы шаблонов
            ztp_templates_tab = ZTPTemplatesTab(browser)

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

            # Добавляем задержку для загрузки данных
            browser.wait_for_timeout(2000)

            # Тест 1: Закрытие через кнопку 'Закрыть' в содержимом окна
            print("Тест 1: Закрытие через кнопку 'Закрыть'")
            title = ztp_templates_tab.open_template_modal_by_index(0)
            browser.wait_for_timeout(1000)

            # Проверка открытия модального окна
            ztp_templates_tab.should_be_modal_window()

            # Закрытие через кнопку 'Закрыть'
            ztp_templates_tab.close_modal_window(title)

            # Проверяем, что модальное окно закрылось
            ztp_templates_tab.should_not_be_modal_window()
            browser.wait_for_timeout(1000)

            # Тест 2: Закрытие через кнопку в тулбаре
            print("Тест 2: Закрытие через кнопку в тулбаре")
            title = ztp_templates_tab.open_template_modal_by_index(0)
            browser.wait_for_timeout(1000)

            # Проверка открытия модального окна
            ztp_templates_tab.should_be_modal_window()

            # Закрытие через кнопку в тулбаре
            ztp_templates_tab.close_modal_window_by_toolbar_button(title)

            # Проверяем, что модальное окно закрылось
            ztp_templates_tab.should_not_be_modal_window()

            print("Оба способа закрытия модального окна работают корректно")

        def test_templates_modal_window_content(self, browser: Page) -> None:
            """Тест содержимого модального окна шаблона.

            Проверяет:
            1. Открытие модального окна при клике на строку таблицы
            2. Наличие и содержимое модального окна
            3. Наличие тулбара в модальном окне
            4. Проверка кнопки закрытия и её подсказки
            5. Закрытие модального окна
            """
            # Инициализация страницы шаблонов
            ztp_templates_tab = ZTPTemplatesTab(browser)

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

            # Добавляем задержку для загрузки данных
            browser.wait_for_timeout(2000)

            # Открываем модальное окно, кликая на первую строку таблицы
            title = ztp_templates_tab.open_template_modal_by_index(0)

            # Добавляем задержку для открытия модального окна
            browser.wait_for_timeout(1000)

            # Проверка открытия модального окна
            ztp_templates_tab.should_be_modal_window()

            # Проверка содержимого модального окна
            ztp_templates_tab.check_ztp_templates_modal_content(title)

            # Закрытие модального окна через кнопку 'Закрыть'
            ztp_templates_tab.close_modal_window(title)

            # Проверяем, что модальное окно закрылось
            ztp_templates_tab.should_not_be_modal_window()

        def test_templates_modal_window_scrolling(self, browser: Page) -> None:
            """Тест скроллинга модального окна шаблона.

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

            # Инициализация страницы шаблонов
            ztp_templates_tab = ZTPTemplatesTab(browser)

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

            # Добавляем задержку для загрузки данных
            browser.wait_for_timeout(2000)

            # Открываем модальное окно, кликая на первую строку таблицы
            title = ztp_templates_tab.open_template_modal_by_index(0)

            # Добавляем задержку для открытия модального окна
            browser.wait_for_timeout(1000)

            # Проверка открытия модального окна
            ztp_templates_tab.should_be_modal_window()

            # Проверка вертикального скроллинга модального окна
            is_scrollable = ztp_templates_tab.check_modal_vertical_scrolling()

            if is_scrollable:
                print("Модальное окно поддерживает вертикальный скроллинг")

                # Прокрутка вниз модального окна
                ztp_templates_tab.scroll_modal_down()
                browser.wait_for_timeout(1000)

                # Прокрутка вверх модального окна
                ztp_templates_tab.scroll_modal_up()
                browser.wait_for_timeout(1000)
            else:
                print("Модальное окно не поддерживает вертикальный скроллинг")

            # Закрытие модального окна через кнопку 'Закрыть'
            ztp_templates_tab.close_modal_window(title)

            # Проверяем, что модальное окно закрылось
            ztp_templates_tab.should_not_be_modal_window()

        def test_templates_modal_window_api_data_consistency(self, browser: Page) -> None:
            """Тест соответствия данных модального окна шаблона данным из API.

            Проверяет консистентность данных между интерфейсом пользователя и API:
            1. Открытие модального окна просмотра шаблона по клику на строку таблицы
            2. Получение и валидация данных из полей модального окна
            3. Сравнение данных UI с эталонными данными из API запроса
            4. Проверка корректности отображения всех параметров шаблона
            5. Закрытие модального окна после проверки

            Args:
                browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
            """
            # Инициализация страницы шаблонов
            ztp_templates_tab = ZTPTemplatesTab(browser)

            # Проверка наличия таблицы шаблонов
            ztp_templates_tab.should_be_templates_table()

            # Добавляем задержку для загрузки данных
            browser.wait_for_timeout(5000)

            # Открываем модальное окно, кликая на первую строку таблицы и возвращаем имя заголовка
            title = ztp_templates_tab.open_template_modal_by_index(0)

            # Добавляем задержку для открытия модального окна
            browser.wait_for_timeout(2000)

            # Проверка открытия модального окна
            ztp_templates_tab.should_be_modal_window()

            # Проверка соответствия данных модального окна данным из API
            ztp_templates_tab.verify_template_data_with_api(title)

            # Закрытие модального окна через кнопку закрытия
            ztp_templates_tab.close_modal_window_by_toolbar_button(title)

            # Проверяем, что модальное окно закрылось
            ztp_templates_tab.should_not_be_modal_window()

### `setup(browser)`

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

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

Source code in `tests\e2e\test_ztp_templates_tab.py`

    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56

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

        Выполняет:
        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("Zero Touch Provisioning")
        main_page.click_subpanel_item("Шаблоны", parent="Zero Touch Provisioning")
        main_page.wait_for_timeout(5000)

### `test_templates_modal_window_api_data_consistency(browser)`

Тест соответствия данных модального окна шаблона данным из API.

Проверяет консистентность данных между интерфейсом пользователя и API: 1. Открытие модального окна просмотра шаблона по клику на строку таблицы 2. Получение и валидация данных из полей модального окна 3. Сравнение данных UI с эталонными данными из API запроса 4. Проверка корректности отображения всех параметров шаблона 5. Закрытие модального окна после проверки

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`browser` | `Page` | Экземпляр страницы Playwright для взаимодействия с UI. | required

Source code in `tests\e2e\test_ztp_templates_tab.py`

    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321

    def test_templates_modal_window_api_data_consistency(self, browser: Page) -> None:
        """Тест соответствия данных модального окна шаблона данным из API.

        Проверяет консистентность данных между интерфейсом пользователя и API:
        1. Открытие модального окна просмотра шаблона по клику на строку таблицы
        2. Получение и валидация данных из полей модального окна
        3. Сравнение данных UI с эталонными данными из API запроса
        4. Проверка корректности отображения всех параметров шаблона
        5. Закрытие модального окна после проверки

        Args:
            browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
        """
        # Инициализация страницы шаблонов
        ztp_templates_tab = ZTPTemplatesTab(browser)

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

        # Добавляем задержку для загрузки данных
        browser.wait_for_timeout(5000)

        # Открываем модальное окно, кликая на первую строку таблицы и возвращаем имя заголовка
        title = ztp_templates_tab.open_template_modal_by_index(0)

        # Добавляем задержку для открытия модального окна
        browser.wait_for_timeout(2000)

        # Проверка открытия модального окна
        ztp_templates_tab.should_be_modal_window()

        # Проверка соответствия данных модального окна данным из API
        ztp_templates_tab.verify_template_data_with_api(title)

        # Закрытие модального окна через кнопку закрытия
        ztp_templates_tab.close_modal_window_by_toolbar_button(title)

        # Проверяем, что модальное окно закрылось
        ztp_templates_tab.should_not_be_modal_window()

### `test_templates_modal_window_close_buttons(browser)`

Тест закрытия модального окна шаблона разными способами.

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

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`browser` | `Page` | Экземпляр страницы Playwright для взаимодействия с UI. | required

Source code in `tests\e2e\test_ztp_templates_tab.py`

    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

    def test_templates_modal_window_close_buttons(self, browser: Page) -> None:
        """Тест закрытия модального окна шаблона разными способами.

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

        Args:
            browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
        """
        # Инициализация страницы шаблонов
        ztp_templates_tab = ZTPTemplatesTab(browser)

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

        # Добавляем задержку для загрузки данных
        browser.wait_for_timeout(2000)

        # Тест 1: Закрытие через кнопку 'Закрыть' в содержимом окна
        print("Тест 1: Закрытие через кнопку 'Закрыть'")
        title = ztp_templates_tab.open_template_modal_by_index(0)
        browser.wait_for_timeout(1000)

        # Проверка открытия модального окна
        ztp_templates_tab.should_be_modal_window()

        # Закрытие через кнопку 'Закрыть'
        ztp_templates_tab.close_modal_window(title)

        # Проверяем, что модальное окно закрылось
        ztp_templates_tab.should_not_be_modal_window()
        browser.wait_for_timeout(1000)

        # Тест 2: Закрытие через кнопку в тулбаре
        print("Тест 2: Закрытие через кнопку в тулбаре")
        title = ztp_templates_tab.open_template_modal_by_index(0)
        browser.wait_for_timeout(1000)

        # Проверка открытия модального окна
        ztp_templates_tab.should_be_modal_window()

        # Закрытие через кнопку в тулбаре
        ztp_templates_tab.close_modal_window_by_toolbar_button(title)

        # Проверяем, что модальное окно закрылось
        ztp_templates_tab.should_not_be_modal_window()

        print("Оба способа закрытия модального окна работают корректно")

### `test_templates_modal_window_content(browser)`

Тест содержимого модального окна шаблона.

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

Source code in `tests\e2e\test_ztp_templates_tab.py`

    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232

    def test_templates_modal_window_content(self, browser: Page) -> None:
        """Тест содержимого модального окна шаблона.

        Проверяет:
        1. Открытие модального окна при клике на строку таблицы
        2. Наличие и содержимое модального окна
        3. Наличие тулбара в модальном окне
        4. Проверка кнопки закрытия и её подсказки
        5. Закрытие модального окна
        """
        # Инициализация страницы шаблонов
        ztp_templates_tab = ZTPTemplatesTab(browser)

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

        # Добавляем задержку для загрузки данных
        browser.wait_for_timeout(2000)

        # Открываем модальное окно, кликая на первую строку таблицы
        title = ztp_templates_tab.open_template_modal_by_index(0)

        # Добавляем задержку для открытия модального окна
        browser.wait_for_timeout(1000)

        # Проверка открытия модального окна
        ztp_templates_tab.should_be_modal_window()

        # Проверка содержимого модального окна
        ztp_templates_tab.check_ztp_templates_modal_content(title)

        # Закрытие модального окна через кнопку 'Закрыть'
        ztp_templates_tab.close_modal_window(title)

        # Проверяем, что модальное окно закрылось
        ztp_templates_tab.should_not_be_modal_window()

### `test_templates_modal_window_scrolling(browser)`

Тест скроллинга модального окна шаблона.

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

Source code in `tests\e2e\test_ztp_templates_tab.py`

    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281

    def test_templates_modal_window_scrolling(self, browser: Page) -> None:
        """Тест скроллинга модального окна шаблона.

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

        # Инициализация страницы шаблонов
        ztp_templates_tab = ZTPTemplatesTab(browser)

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

        # Добавляем задержку для загрузки данных
        browser.wait_for_timeout(2000)

        # Открываем модальное окно, кликая на первую строку таблицы
        title = ztp_templates_tab.open_template_modal_by_index(0)

        # Добавляем задержку для открытия модального окна
        browser.wait_for_timeout(1000)

        # Проверка открытия модального окна
        ztp_templates_tab.should_be_modal_window()

        # Проверка вертикального скроллинга модального окна
        is_scrollable = ztp_templates_tab.check_modal_vertical_scrolling()

        if is_scrollable:
            print("Модальное окно поддерживает вертикальный скроллинг")

            # Прокрутка вниз модального окна
            ztp_templates_tab.scroll_modal_down()
            browser.wait_for_timeout(1000)

            # Прокрутка вверх модального окна
            ztp_templates_tab.scroll_modal_up()
            browser.wait_for_timeout(1000)
        else:
            print("Модальное окно не поддерживает вертикальный скроллинг")

        # Закрытие модального окна через кнопку 'Закрыть'
        ztp_templates_tab.close_modal_window(title)

        # Проверяем, что модальное окно закрылось
        ztp_templates_tab.should_not_be_modal_window()

### `test_templates_tab_content(browser)`

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

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

Source code in `tests\e2e\test_ztp_templates_tab.py`

    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79

    def test_templates_tab_content(self, browser: Page) -> None:
        """Тест содержимого вкладки 'Шаблоны'.

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

        # Проверка тулбара вкладки
        ztp_templates_tab.should_be_toolbar()

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

        browser.wait_for_timeout(5000)

        # Проверка содержимого таблицы шаблонов
        ztp_templates_tab.check_ztp_templates_table_content()

### `test_templates_table_row_highlighting(browser)`

Проверка выделения строк в таблице шаблонов.

Проверяет корректность выделения строк при клике на различные позиции: 1. Первая строка 2. Последняя строка 3. Строка в середине таблицы

Source code in `tests\e2e\test_ztp_templates_tab.py`

     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104

    def test_templates_table_row_highlighting(self, browser: Page) -> None:
        """Проверка выделения строк в таблице шаблонов.

        Проверяет корректность выделения строк при клике на различные позиции:
        1. Первая строка
        2. Последняя строка
        3. Строка в середине таблицы
        """

        ztp_templates_tab = ZTPTemplatesTab(browser)

        # Проверка тулбара вкладки
        ztp_templates_tab.should_be_toolbar()

        # Проверка наличия таблицы шаблонов
        ztp_templates_tab.should_be_templates_table()

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

        # Проверка выделения строк
        ztp_templates_tab.check_templates_table_row_highlighting(0)
        ztp_templates_tab.check_templates_table_row_highlighting(rows_count - 1)
        ztp_templates_tab.check_templates_table_row_highlighting(int(rows_count / 2))

### `test_templates_table_scrolling(browser)`

Проверка вертикального скроллинга таблицы шаблонов.

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

Source code in `tests\e2e\test_ztp_templates_tab.py`

    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

    def test_templates_table_scrolling(self, browser: Page) -> None:
        """Проверка вертикального скроллинга таблицы шаблонов.

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

        ztp_templates_tab = ZTPTemplatesTab(browser)

        browser.wait_for_timeout(2000)

        # Проверка возможности вертикального скроллинга
        is_scrollable = ztp_templates_tab.check_templates_table_vertical_scrolling()

        if is_scrollable:
            print("Таблица поддерживает вертикальный скроллинг")

            # Прокрутка вниз
            ztp_templates_tab.scroll_templates_table_down()

            browser.wait_for_timeout(1000)

            # Проверка видимости последней строки после прокрутки
            ztp_templates_tab.check_templates_table_last_row_visibility()

            # Прокрутка вверх
            ztp_templates_tab.scroll_templates_table_up()

            browser.wait_for_timeout(1000)

            # Проверка видимости первой строки после прокрутки
            ztp_templates_tab.check_templates_table_first_row_visibility()
        else:
            print("Таблица не поддерживает вертикальный скроллинг")

            # Проверка видимости первой строки
            ztp_templates_tab.check_templates_table_first_row_visibility()