158 lines
7.9 KiB
Python
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)
|
|
|