Skip to content

TestUsersTab

Модуль тестов вкладки 'Пользователи'.

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

TestUsersTab

Класс тестов для проверки вкладки 'Пользователи'.

Source code in tests\e2e\test_users_tab.py
 14
 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
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"])

cleanup_autoadmin(browser)

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

Source code in tests\e2e\test_users_tab.py
46
47
48
49
50
51
52
53
54
@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"])

cleanup_autooperator(browser)

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

Source code in tests\e2e\test_users_tab.py
56
57
58
59
60
61
62
63
64
@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"])

cleanup_user(browser)

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

Source code in tests\e2e\test_users_tab.py
33
34
35
36
37
38
39
40
41
42
43
44
@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"])

setup(browser)

Настраивает тестовое окружение.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@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("Пользователи")

test_add_and_delete_user(browser, cleanup_user)

Проверяет добавление и удаление пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
cleanup_user None

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

required
Source code in tests\e2e\test_users_tab.py
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
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"])

test_add_user_window_close_buttons(browser)

Проверяет кнопки закрытия окна добавления.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
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()

test_add_user_window_content(browser)

Проверяет содержимое окна добавления пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
88
89
90
91
92
93
94
95
96
97
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()

test_edit_user_role(browser, cleanup_autooperator)

Проверяет изменение роли пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
cleanup_autooperator None

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

required
Source code in tests\e2e\test_users_tab.py
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
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"])

test_edit_user_window_close_buttons(browser)

Проверяет кнопки закрытия окна редактирования.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
124
125
126
127
128
129
130
131
132
133
134
135
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)

test_edit_user_window_content(browser)

Проверяет содержимое окна редактирования.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
113
114
115
116
117
118
119
120
121
122
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)

test_reset_password(browser, cleanup_autoadmin)

Проверяет сброс пароля пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
cleanup_autoadmin None

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

required
Source code in tests\e2e\test_users_tab.py
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
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"])

test_users_tab_content(browser)

Проверяет содержимое вкладки 'Пользователи'.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
66
67
68
69
70
71
72
73
74
75
76
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)

test_users_tab_toolbar_buttons(browser)

Проверяет кнопки на панели инструментов.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\test_users_tab.py
78
79
80
81
82
83
84
85
86
def test_users_tab_toolbar_buttons(self, browser: Page) -> None:
    """Проверяет кнопки на панели инструментов.

    Args:
        browser: Экземпляр страницы Playwright.
    """

    ut = UsersTab(browser)
    ut.should_be_toolbar_buttons()