Tests/tests/ui/test_admin_page.py
2026-01-19 23:32:11 +04:00

158 lines
7.9 KiB
Python

import json
import time
import allure
import pytest
from selenium.webdriver.chrome.webdriver import WebDriver
from config.ui_config import UIConfig
from tests.api.utils.api_client import APIClient
from tests.ui.pages.admin_page import AdminPage
@allure.epic("Страница администратора")
@allure.feature("Основной функционал")
class TestAdminPage:
@allure.story("Загрузка страницы")
@allure.title("Проверка успешной загрузки страницы")
@allure.severity(allure.severity_level.BLOCKER)
@pytest.mark.smoke
@pytest.mark.ui
def test_page_load_succesfull(self, driver):
admin_page = AdminPage(driver)
with allure.step('1. Открыть страницу'):
admin_page.open_admin_page()
admin_page.take_screenshot("admin_page")
@allure.story("Структура страницы")
@allure.title("Проверка отображения элементов")
@allure.severity(allure.severity_level.BLOCKER)
@pytest.mark.smoke
@pytest.mark.ui
def test_page_elements_visiblity(self, driver):
admin_page = AdminPage(driver)
with allure.step('1. Открыть страницу'):
admin_page.open_admin_page()
admin_page.take_screenshot("admin_page")
with allure.step('2. Проверка наличия кнопки блока логина'):
assert admin_page.is_login_block_visible(), 'Кнопка блока логина не отобразилась'
with allure.step('3. Проверка невидимости кнопки "try it out"'):
assert not admin_page.is_login_tryitout_btn_visible(), 'Кнопка не должна быть видима'
with allure.step('4. Проверка невидимости поля ввода'):
assert not admin_page.is_login_textarea_visible(), 'Поле ввода не должно быть видимо'
with allure.step('5. Проверка невидимости кнопки выполнения запроса'):
assert not admin_page.is_login_execute_btn_visible(), 'Кнопка выполнения запроса не должна быть видимой'
@allure.story("Функциональность")
@allure.title("Проверка функциональности страницы")
@allure.severity(allure.severity_level.BLOCKER)
@pytest.mark.smoke
@pytest.mark.ui
def test_page_login_process(self, driver: WebDriver):
admin_page = AdminPage(driver)
with allure.step('1. Открыть страницу'):
admin_page.open_admin_page()
admin_page.wait_for_element(admin_page.LOGIN_BLOCK)
admin_page.scroll_to_element(admin_page.LOGIN_BLOCK)
admin_page.take_screenshot("admin_page")
with allure.step('2. Нажать на блок логина'):
admin_page.click_login_block()
assert admin_page.is_login_tryitout_btn_visible(), 'Кнопка "try it out" должна быть видимой'
with allure.step('3. Нажать на кнопку "try it out"'):
admin_page.click_login_tryitout_btn()
assert admin_page.is_login_textarea_visible(), 'Поле ввода должно быть видимым'
assert admin_page.is_login_execute_btn_visible(), 'Кнопка выполнения запроса должна быть видимой'
admin_page.scroll_to_element(admin_page.LOGIN_TRYITOUT_BTN)
admin_page.take_screenshot('admin_page_login_block')
with allure.step('4. Ввод данных для входа'):
admin_page.scroll_to_element(admin_page.LOGIN_TEXTAREA)
admin_page.take_screenshot("admin_page_login_area_unchanged")
admin_page.enter_text_to_login_textarea(admin_page.LOGIN_DATA)
time.sleep(0.5)
admin_page.take_screenshot("admin_page_login_text_entered")
with allure.step('5. Выполнение запроса'):
admin_page.click_login_execute_btn()
time.sleep(2.0)
admin_page.scroll_to_element(admin_page.LOGIN_STATUS_CODE)
admin_page.take_screenshot("admin_page_login_request_executed")
with allure.step('6. Проверка статуса выполнения запроса'):
admin_page.scroll_to_element(admin_page.LOGIN_STATUS_CODE)
assert int(admin_page.get_login_status()) == 200
@allure.story("Добавление пользователя")
@allure.title("Проверка функции добавления пользователя")
@allure.severity(allure.severity_level.BLOCKER)
@pytest.mark.smoke
@pytest.mark.ui
def test_page_user_adding(self, driver: WebDriver, auth_admin: APIClient):
admin_page = AdminPage(driver)
user_id = ''
with allure.step('1. Открыть страницу'):
admin_page.open_admin_page()
admin_page.wait_for_element(admin_page.USER_BLOCK)
admin_page.scroll_to_element(admin_page.USER_BLOCK)
admin_page.take_screenshot("admin_page")
with allure.step("2. Авторизоваться"):
admin_page.click_login_block()
admin_page.click_login_tryitout_btn()
admin_page.enter_text_to_login_textarea(admin_page.LOGIN_DATA)
time.sleep(0.5)
admin_page.click_login_execute_btn()
time.sleep(2.0)
admin_page.scroll_to_element(admin_page.LOGIN_STATUS_CODE)
admin_page.take_screenshot("admin_page_login_request_executed")
with allure.step('3. Нажать на блок пользователя'):
admin_page.click_user_block()
assert admin_page.is_user_tryitout_btn_visible(), 'Кнопка "try it out" должна быть видимой'
with allure.step('4. Нажать на кнопку "try it out"'):
admin_page.click_user_tryitout_btn()
assert admin_page.is_user_textarea_visible(), 'Поле ввода должно быть видимым'
assert admin_page.is_user_execute_btn_visible(), 'Кнопка выполнения запроса должна быть видимой'
admin_page.scroll_to_element(admin_page.USER_TRYITOUT_BTN)
admin_page.take_screenshot('admin_page_user_block')
with allure.step('5. Ввод данных для регистрации пользователя'):
admin_page.scroll_to_element(admin_page.USER_TEXTAREA)
admin_page.take_screenshot("admin_page_user_area_unchanged")
admin_page.enter_text_to_user_textarea(admin_page.USER_DATA)
time.sleep(0.5)
admin_page.take_screenshot("admin_page_user_text_entered")
with allure.step('6. Выполнение запроса'):
admin_page.click_user_execute_btn()
time.sleep(2.0)
admin_page.scroll_to_element(admin_page.USER_STATUS_CODE)
admin_page.take_screenshot("admin_page_user_request_executed")
with allure.step('7. Проверка статуса выполнения запроса'):
admin_page.scroll_to_element(admin_page.LOGIN_STATUS_CODE)
assert int(admin_page.get_login_status()) == 200
with allure.step('8. Сохраняем id пользователя для удаления'):
content = admin_page.get_user_response()
user_id = json.loads(content)['id']
with allure.step('9. Проверка, что пользователь добавлен на сайт'):
admin_page.open(UIConfig.get_url('team'))
time.sleep(2)
admin_page.take_screenshot('team_page_user')
with allure.step('10. Удаляем пользователя через API'):
auth_admin.delete_user(user_id)