Skip to content

TestUsersTabEditUser

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

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

TestUsersTabEditUser

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

Тесты покрывают следующие сценарии: 1. test_edit_user_window_content: Проверяет содержимое окна редактирования 2. test_edit_user_window_close_buttons: Проверяет кнопки закрытия окна редактирования 3. test_delete_user: Проверяет добавление и удаление пользователя 4. test_reset_password: Проверяет сброс пароля пользователя 5. test_edit_user_role: Проверяет изменение роли пользователя

Source code in tests\e2e\users\test_edit_user.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
class TestUsersTabEditUser:
    """Класс тестов для проверки вкладки 'Пользователи'.

    Тесты покрывают следующие сценарии:
    1. test_edit_user_window_content: Проверяет содержимое окна редактирования
    2. test_edit_user_window_close_buttons: Проверяет кнопки закрытия окна редактирования
    3. test_delete_user: Проверяет добавление и удаление пользователя
    4. test_reset_password: Проверяет сброс пароля пользователя
    5. test_edit_user_role: Проверяет изменение роли пользователя
    """

    @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_users(self, browser: Page) -> None:
        """Фикстура для очистки тестовых пользователей и их сеансов после теста."""
        yield

        # Выход из системы текущего пользователя
        mp = MainPage(browser)
        mp.do_logout()

        # Авторизация администратором для очистки
        login_page = LoginPage(browser)
        login_page.do_login()

        # Удаляем тестовых пользователей
        self._cleanup_test_users(browser)

    def _cleanup_test_users(self, browser: Page) -> None:
        """Удаляет тестовых пользователей."""
        mp = MainPage(browser)
        mp.click_main_navigation_panel_item("Настройки")
        mp.click_subpanel_item("Пользователи")
        ut = UsersTab(browser)

        # Удаляем тестовых пользователей
        test_users = ["TestUser", "TestUserAutoOperator", "TestUserAutoAdmin"]

        for user_name in test_users:
            # Проверяем существует ли пользователь и удаляем его
            user_index = ut.find_user_in_table(user_name, "Администратор")
            if user_index != -1:
                ut.open_edit_user_page_by_user(user_name, "Администратор")
                ut.delete_user(user_name)

    # @pytest.mark.develop
    def test_edit_user_window_content(self, browser: Page) -> None:
        """Проверяет содержимое окна редактирования.

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

        ut = UsersTab(browser)
        browser.wait_for_timeout(500)

        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)
        browser.wait_for_timeout(500)

        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_delete_user(self, browser: Page, cleanup_users: None) -> None:
        """Проверяет удаление пользователя.

        Args:
            browser: Экземпляр страницы Playwright.
            cleanup_users: Фикстура для автоматического удаления пользователя после теста.
        """

        user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}

        mp = MainPage(browser)
        ut = UsersTab(browser)
        browser.wait_for_timeout(500)

        # Проверяем, есть ли такой пользователь
        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_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_users: None) -> None:
        """Проверяет сброс пароля пользователя.

        Args:
            browser: Экземпляр страницы Playwright.
            cleanup_users: Фикстура для автоматического удаления пользователя после теста.
        """

        user_data: Dict[str, str] = {"name": "TestUserAutoAdmin", "role": "Администратор", "password": "123456789abcd"}

        mp = MainPage(browser)
        ut = UsersTab(browser)
        browser.wait_for_timeout(500)

        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_users: None) -> None:
        """Проверяет изменение роли пользователя.

        Args:
            browser: Экземпляр страницы Playwright.
            cleanup_users: Фикстура для автоматического удаления пользователя после теста.
        """

        user_data: Dict[str, str] = {"name": "TestUserAutoOperator", "role": "Оператор", "password": "1232456789abcd"}

        mp = MainPage(browser)
        ut = UsersTab(browser)
        browser.wait_for_timeout(500)

        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_users(browser)

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

Source code in tests\e2e\users\test_edit_user.py
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@pytest.fixture(scope="function")
def cleanup_users(self, browser: Page) -> None:
    """Фикстура для очистки тестовых пользователей и их сеансов после теста."""
    yield

    # Выход из системы текущего пользователя
    mp = MainPage(browser)
    mp.do_logout()

    # Авторизация администратором для очистки
    login_page = LoginPage(browser)
    login_page.do_login()

    # Удаляем тестовых пользователей
    self._cleanup_test_users(browser)

setup(browser)

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

Parameters:

Name Type Description Default
browser Page

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

required
Source code in tests\e2e\users\test_edit_user.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@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_delete_user(browser, cleanup_users)

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

Parameters:

Name Type Description Default
browser Page

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

required
cleanup_users None

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

required
Source code in tests\e2e\users\test_edit_user.py
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
def test_delete_user(self, browser: Page, cleanup_users: None) -> None:
    """Проверяет удаление пользователя.

    Args:
        browser: Экземпляр страницы Playwright.
        cleanup_users: Фикстура для автоматического удаления пользователя после теста.
    """

    user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}

    mp = MainPage(browser)
    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    # Проверяем, есть ли такой пользователь
    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_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_edit_user_role(browser, cleanup_users)

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

Parameters:

Name Type Description Default
browser Page

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

required
cleanup_users None

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

required
Source code in tests\e2e\users\test_edit_user.py
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
def test_edit_user_role(self, browser: Page, cleanup_users: None) -> None:
    """Проверяет изменение роли пользователя.

    Args:
        browser: Экземпляр страницы Playwright.
        cleanup_users: Фикстура для автоматического удаления пользователя после теста.
    """

    user_data: Dict[str, str] = {"name": "TestUserAutoOperator", "role": "Оператор", "password": "1232456789abcd"}

    mp = MainPage(browser)
    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    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\users\test_edit_user.py
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def test_edit_user_window_close_buttons(self, browser: Page) -> None:
    """Проверяет кнопки закрытия окна редактирования.

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

    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    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\users\test_edit_user.py
76
77
78
79
80
81
82
83
84
85
86
87
def test_edit_user_window_content(self, browser: Page) -> None:
    """Проверяет содержимое окна редактирования.

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

    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    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_users)

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

Parameters:

Name Type Description Default
browser Page

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

required
cleanup_users None

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

required
Source code in tests\e2e\users\test_edit_user.py
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
def test_reset_password(self, browser: Page, cleanup_users: None) -> None:
    """Проверяет сброс пароля пользователя.

    Args:
        browser: Экземпляр страницы Playwright.
        cleanup_users: Фикстура для автоматического удаления пользователя после теста.
    """

    user_data: Dict[str, str] = {"name": "TestUserAutoAdmin", "role": "Администратор", "password": "123456789abcd"}

    mp = MainPage(browser)
    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    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"])