Initial commit

This commit is contained in:
KamilM1205 2026-01-19 23:32:11 +04:00
commit 9795660e1f
43 changed files with 2757 additions and 0 deletions

224
tests/ui/test_home_page.py Normal file
View file

@ -0,0 +1,224 @@
import pytest
import allure
from selenium.webdriver.chrome.webdriver import WebDriver
from config.ui_config import UIConfig
import time
from tests.ui.pages.home_page import HomePage
@allure.epic("Домашняя страница")
@allure.feature("Основной функционал")
class TestTeamPage:
@allure.story("Загрузка страницы")
@allure.title("Проверка успешной загрузки страницы")
@allure.severity(allure.severity_level.BLOCKER)
@pytest.mark.smoke
@pytest.mark.ui
def test_page_load_successfully(self, driver):
"""
Тест проверяет успешную загрузку страницы Team
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу"):
home_page.open_home_page()
home_page.take_screenshot("home_page_loaded")
with allure.step("2. Проверить заголовок окна браузера"):
page_title = driver.title
allure.attach(page_title, name="page_title", attachment_type=allure.attachment_type.TEXT)
assert page_title, "Заголовок страницы пустой"
@allure.story("Контент страницы")
@allure.title("Проверка текстового содержания страницы")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.regression
def test_page_content_validation(self, driver):
"""
Тест проверяет корректность текстового содержания страницы
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу"):
home_page.open_home_page()
with allure.step("2. Проверить заголовок"):
title = home_page.get_text(home_page.LOGO)
assert title == "Team", f"Неверный заголовок: {title}"
with allure.step("4. Проверить сообщения о пустом состоянии"):
team_message = home_page.check_no_team_members_message()
articles_message = home_page.check_no_articles_message()
allure.attach(
f"Сообщение о команде: {team_message}\nСообщение о статьях: {articles_message}",
name="empty_state_messages",
attachment_type=allure.attachment_type.TEXT
)
with allure.step("5. Сделать скриншот всей страницы"):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
home_page.take_screenshot("full_page_content")
@allure.story("Структура страницы")
@allure.title("Проверка структуры и порядка элементов")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.ui
def test_page_structure(self, driver):
"""
Тест проверяет правильность структуры расположения элементов
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу Team"):
home_page.open_home_page()
with allure.step("2. Проверить наличие всех разделов"):
assert home_page.is_meet_the_team_section_displayed(), \
"Раздел 'MEET THE TEAM' не отображается"
assert home_page.is_latest_articles_section_displayed(), \
"Раздел 'LATEST ARTICLES' не отображается"
with allure.step("3. Проверить кнопку VIEW ALL team"):
button = home_page.is_team_view_all_displayed()
assert button, "Кнопка не отобразилась"
with allure.step("4. Проверить кнопку VIEW ALL article"):
button = home_page.is_article_view_all_displayed()
assert button, "Кнопка не отобразилась"
@allure.story("Функциональность")
@allure.title("Проверка кликабельности элементов")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.regression
def test_elements_interactivity(self, driver):
"""
Тест проверяет кликабельность интерактивных элементов
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу Team"):
home_page.open_home_page()
with allure.step("2. Проверить кликабельность кнопки VIEW ALL team"):
button_team = home_page.find_element(home_page.TEAM_VIEW_ALL)
assert button_team.is_enabled(), "Кнопка VIEW ALL не активна"
# Проверяем, что это ссылка
tag_name = button_team.tag_name
assert tag_name.lower() in ['a', 'button'], \
f"Элемент не является ссылкой или кнопкой (тег: {tag_name})"
with allure.step("3. Проверить кликабельность кнопки VIEW ALL article"):
button_article = home_page.find_element(home_page.ARTICLE_VIEW_ALL)
assert button_article.is_enabled(), "Кнопка VIEW ALL не активна"
# Проверяем, что это ссылка
tag_name = button_article.tag_name
assert tag_name.lower() in ['a', 'button'], \
f"Элемент не является ссылкой или кнопкой (тег: {tag_name})"
with allure.step("4. Навести курсор на кнопку VIEW ALL team"):
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element(button_team).perform()
time.sleep(0.5)
# Проверяем изменение стиля (опционально)
home_page.take_screenshot("team_view_all_button_hover")
with allure.step("4. Навести курсор на кнопку VIEW ALL article"):
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element(button_article).perform()
time.sleep(0.5)
# Проверяем изменение стиля (опционально)
home_page.take_screenshot("article_view_all_button_hover")
@allure.story("Навигация")
@allure.title("Проверка поведения кнопки VIEW ALL")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_view_all_button_functionality(self, driver: WebDriver):
"""
Тест проверяет функциональность кнопки VIEW ALL
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу Team"):
home_page.open_home_page()
initial_url = driver.current_url
allure.attach(initial_url, name="initial_url", attachment_type=allure.attachment_type.TEXT)
with allure.step("2. Нажать кнопку VIEW ALL team"):
home_page.click_view_all_team_button()
time.sleep(2) # Ждем загрузки
new_url = driver.current_url
allure.attach(new_url, name="new_url", attachment_type=allure.attachment_type.TEXT)
with allure.step("3. Проверить изменение URL"):
# Проверяем, что URL изменился (или остался тем же, если это anchor link)
assert new_url == UIConfig.get_url("team"), "Совершен переход на неверную страницу"
with allure.step("4. Возвращаемся на главную"):
driver.back()
with allure.step("2. Нажать кнопку VIEW ALL article"):
home_page.click_view_all_article_button()
time.sleep(2) # Ждем загрузки
new_url = driver.current_url
allure.attach(new_url, name="new_url", attachment_type=allure.attachment_type.TEXT)
with allure.step("3. Проверить изменение URL"):
# Проверяем, что URL изменился (или остался тем же, если это anchor link)
assert new_url == UIConfig.get_url("blog"), "Совершен переход на неверную страницу"
@allure.story("Контент страницы")
@allure.title("Проверка появления карточек")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.regression
def test_cards_visiblity(self, driver, gen_data_fixture):
"""
Тест проверяет появление предложенных карточек
"""
home_page = HomePage(driver)
with allure.step("1. Открыть страницу"):
home_page.open_home_page()
with allure.step("2. Проверка существования карточки автора"):
card = home_page.is_member_card_displayed()
assert card, "Карточка пользователя не отобразилась"
with allure.step("3. Проверка реакции карточки на наведение"):
from selenium.webdriver.common.action_chains import ActionChains
member_card = home_page.find_element(home_page.AUTHOR_CARD)
actions = ActionChains(driver)
actions.move_to_element(member_card).perform()
time.sleep(0.5)
home_page.take_screenshot("Member_card_hower_reaction")
with allure.step("4. Проверка существования карточки статьи"):
card = home_page.is_article_card_displayed()
assert card, "Карточка статьи не отобразилась"
with allure.step("5. Проверка реакции карточки на наведение"):
from selenium.webdriver.common.action_chains import ActionChains
member_card = home_page.find_element(home_page.ARTICLE_CARD)
actions = ActionChains(driver)
actions.move_to_element(member_card).perform()
time.sleep(0.5)
home_page.take_screenshot("Member_card_hower_reaction")