From 65db784e9740708689d5ca91939f86528ebe09fb Mon Sep 17 00:00:00 2001 From: KatyaMy <20FamGam20@gmail.com> Date: Tue, 21 Jan 2025 11:33:59 -0500 Subject: [PATCH] RF TC_35.001.001.001 --- components/announcement.py | 36 ++++++++++++++++++------------------ components/cookie_banner.py | 6 +++--- components/find_tutor.py | 30 +++++++++++++++--------------- components/header.py | 5 +++++ components/homepage.py | 4 +--- components/login.py | 6 +++--- components/register.py | 6 +++--- tests/test_header.py | 6 +++--- tests/test_register.py | 15 +++++++-------- 9 files changed, 58 insertions(+), 56 deletions(-) diff --git a/components/announcement.py b/components/announcement.py index 4bddc958..f0a2c3b8 100644 --- a/components/announcement.py +++ b/components/announcement.py @@ -81,9 +81,9 @@ def fill_out_experience(self, years_experience): def checkbox_degree(self): degree_checkbox = self.page.locator("#id_has_degree") degree_checkbox.check() - assert ( - degree_checkbox.is_checked() - ), "The 'has degree' checkbox should be checked" + assert degree_checkbox.is_checked(), ( + "The 'has degree' checkbox should be checked" + ) @allure.step("Вводим стоимость занятия") def fill_out_price(self, price): @@ -139,9 +139,9 @@ def verify_announcements_page_endpoint(self): current_url = self.page.url print(current_url) try: - assert ( - announcement_page_endpoint in current_url - ), f"Expected '{announcement_page_endpoint}' to be in '{current_url}'" + assert announcement_page_endpoint in current_url, ( + f"Expected '{announcement_page_endpoint}' to be in '{current_url}'" + ) except AssertionError as e: (print(e)) @@ -192,9 +192,9 @@ def click_view_announcement_button(self): def check_announcement_url_by_template(self): current_url = self.page.url pattern = r"^http://tester:dslfjsdfblkhew%40122b1klbfw@testing\.misleplav\.ru/listings/\d+/$" - assert re.match( - pattern, current_url - ), f"URL не соответствует ожидаемому шаблону: {current_url}" + assert re.match(pattern, current_url), ( + f"URL не соответствует ожидаемому шаблону: {current_url}" + ) @allure.step("Проверяем URL страницы редактирования объявления") def check_edit_announcement_page_url(self): @@ -244,9 +244,9 @@ def verify_required_fields_are_not_filled(self): '//strong[text()="Обязательное поле."]' ).count() print(f"Found {error_message_count} error messages.") - assert ( - error_message_count == 12 - ), f"Expected 12 error messages, but found {error_message_count}" + assert error_message_count == 12, ( + f"Expected 12 error messages, but found {error_message_count}" + ) @allure.step("Создаем объявление") def create_announcement(self): @@ -330,16 +330,16 @@ def verify_mandatory_fields_are_marked(self): for locator, field_name in fields_to_check: field_mark = self.page.locator(locator) - assert ( - field_mark.is_visible() - ), f"Отметка поля с локатором {field_name} не найдена" + assert field_mark.is_visible(), ( + f"Отметка поля с локатором {field_name} не найдена" + ) download_photo_title_text = self.page.get_by_text( "Рекомендуемое разрешение:" ).inner_text() - assert ( - "Обязательное поле." in download_photo_title_text - ), f"Текст 'Обязательное поле.' не найден в {download_photo_title_text}" + assert "Обязательное поле." in download_photo_title_text, ( + f"Текст 'Обязательное поле.' не найден в {download_photo_title_text}" + ) @allure.step("Отчищаем все обязательные поля") def clear_mandatory_fields(self): diff --git a/components/cookie_banner.py b/components/cookie_banner.py index 706dbb55..620bd822 100644 --- a/components/cookie_banner.py +++ b/components/cookie_banner.py @@ -48,9 +48,9 @@ def cookie_text_matches(self): ) actual_text = cookie_text.text_content() expected_text = "Мы используем куки для улучшения вашего опыта на нашем сайте. Вы можете управлять своими предпочтениями." - assert ( - actual_text == expected_text - ), f"Ожидается '{expected_text}', но получен '{actual_text}'" + assert actual_text == expected_text, ( + f"Ожидается '{expected_text}', но получен '{actual_text}'" + ) return True except TimeoutError: raise AssertionError("Cookie banner not found within 5 seconds") diff --git a/components/find_tutor.py b/components/find_tutor.py index 83d4ee7e..68bacde0 100644 --- a/components/find_tutor.py +++ b/components/find_tutor.py @@ -66,9 +66,9 @@ def check_message_of_registration(self, expected_message): alert_locator = self.page.locator("//div[@role='alert']") self.page.wait_for_selector("//div[@role='alert']", timeout=7000) message = alert_locator.text_content() - assert ( - message.strip() == expected_message - ), f"Expected text is '{expected_message}', but received '{message.strip()}'" + assert message.strip() == expected_message, ( + f"Expected text is '{expected_message}', but received '{message.strip()}'" + ) @allure.step("Проверяем фильтр по категории") def check_filter_form(self): @@ -148,9 +148,9 @@ def check_experience_over_min_value(self, min_experience: int): "//p[contains(text(),'лет')]" ).inner_text() experience_value = int(experience_text.split()[0]) - assert ( - experience_value >= min_experience - ), f"The Teaching Experience {experience_value} less than expected minimum {min_experience}" + assert experience_value >= min_experience, ( + f"The Teaching Experience {experience_value} less than expected minimum {min_experience}" + ) self.page.go_back() @@ -202,12 +202,12 @@ def set_random_min_price(self, fake, min_value: int, max_value: int): def enter_min_experience(self, min_experience: int): experience_field = self.page.locator("#minExperience") experience_field.wait_for(state="visible", timeout=3000) - assert ( - experience_field.is_visible() - ), "The 'Minimum Teaching Experience' field is not visible." - assert ( - experience_field.is_enabled() - ), "The 'Minimum Teaching Experience' field is not enabled." + assert experience_field.is_visible(), ( + "The 'Minimum Teaching Experience' field is not visible." + ) + assert experience_field.is_enabled(), ( + "The 'Minimum Teaching Experience' field is not enabled." + ) experience_field.fill(str(min_experience)) @allure.step("Проверяем страница Профайл репетитора содержит требующие детали") @@ -227,9 +227,9 @@ def check_tutor_profile_has_require_details(self): count_ld_items = lesson_details.count() for i in range(count_ld_items): elem = lesson_details.nth(i) - assert ( - elem.is_visible() - ), f"Element Lesson details at index {i} is not visible" + assert elem.is_visible(), ( + f"Element Lesson details at index {i} is not visible" + ) elem_text = elem.inner_text().strip() assert elem_text != "", f"Text Lesson details at index {i} is empty" # Verify Tutor details diff --git a/components/header.py b/components/header.py index 67367d38..f6bcd050 100644 --- a/components/header.py +++ b/components/header.py @@ -241,3 +241,8 @@ def student_find_tutor_button_clickable_redirect(self): ).click() current_url = self.page.url assert current_url == find_tutor_url + + @allure.step("Клик на логотип 'Мыслеплав'") + def click_logo_misleplav(self): + logo = self.page.locator('a.navbar-brand.fw-bold.fs-4.ms-3[href="/"]') + logo.click() diff --git a/components/homepage.py b/components/homepage.py index 6cf9d2fe..2261d0c4 100644 --- a/components/homepage.py +++ b/components/homepage.py @@ -43,9 +43,7 @@ def check_info_welcome_container(self): @allure.step('Click on "Стать репетитором" button') def click_become_tutor_btn(self): - self.page.locator( - "div[class*='d-sm-flex'] a:text('Стать репетитором')" - ).first.click() + self.page.locator("(//a[text()='Стать репетитором'])[1]").first.click() @allure.step('Check "Преимущества для учеников" title') def check_preferences_for_students_title(self): diff --git a/components/login.py b/components/login.py index 7e0a56d0..5251b305 100644 --- a/components/login.py +++ b/components/login.py @@ -15,9 +15,9 @@ def __init__(self, page: Page): @allure.step("Проверяем URL страницы 'Логин'") def check_url_login_page(self, expected_part: str): current_url = self.page.url - assert ( - expected_part in current_url - ), f"Ожидалось, что '{expected_part}' будет частью '{current_url}'" + assert expected_part in current_url, ( + f"Ожидалось, что '{expected_part}' будет частью '{current_url}'" + ) @allure.step("Проверяем наличие кнопки 'Регистрация'") def check_title_of_registration(self): diff --git a/components/register.py b/components/register.py index 2bb1fea8..566ae487 100644 --- a/components/register.py +++ b/components/register.py @@ -43,9 +43,9 @@ def click_registration_button(self): @allure.step("Проверяем, что страница регистрации открыта") def verify_registration_page_opened(self): registration_title = self.page.locator("h1").inner_text() - assert ( - registration_title == "Регистрация" - ), f"Ожидался заголовок 'Регистрация', но найдено: {registration_title}" + assert registration_title == "Регистрация", ( + f"Ожидался заголовок 'Регистрация', но найдено: {registration_title}" + ) @allure.step("Создаем случайный пароль") def generate_valid_password(self): diff --git a/tests/test_header.py b/tests/test_header.py index 03d045a0..0cb66480 100644 --- a/tests/test_header.py +++ b/tests/test_header.py @@ -150,9 +150,9 @@ def test_header_home_btn_is_visible_on_all_pages_for_guest(header): header.page.goto(page_url) home_btn = header.header_home_btn_is_present() - assert ( - home_btn.is_visible() - ), f"Home button is not visible on the page with url {page_url}" + assert home_btn.is_visible(), ( + f"Home button is not visible on the page with url {page_url}" + ) # TC_31.002.001.001 Header-Student > Sign out > Visibility "Выйти" button diff --git a/tests/test_register.py b/tests/test_register.py index 7085b569..1adaf926 100644 --- a/tests/test_register.py +++ b/tests/test_register.py @@ -1,5 +1,6 @@ import pytest from faker import Faker +from Data.data import EMAIL_STUDENT_KM, PASSWORD_STUDENT_KM fake = Faker() @@ -40,17 +41,15 @@ def test_register_as_student_verify_success_message_text( # TC_35.001.001.001 | Student >Become a teacher > Navigate to the "Стать репетитором" page -@pytest.mark.skip(reason="Тест временно отключен после обновления 09.01.2025") -def test_become_a_teacher_from_student_page(header, login, homepage, register): +def test_become_a_teacher_from_student_page( + header, login, homepage, register, find_tutor +): """Проверка перехода на страницу регистрации как репетитор из профиля студента.""" header.visit() - header.click_registration_button() - register.registration_new_user("student") - # header.click_login_button() - header.visit() - homepage.check_2_find_tutor_btns() + login.full_login(EMAIL_STUDENT_KM, PASSWORD_STUDENT_KM) + header.click_logo_misleplav() homepage.click_become_tutor_btn() - register.verify_registration_page_opened() + register.register_page_contains_register_btn() @pytest.mark.skip(reason="Тест временно отключен после обновления 09.01.2025")