# Исходный код components.confirm_component

    """Модуль компонента окна подтверждения действий.

    Содержит класс ConfirmComponent для взаимодействия с окном подтверждения,
    включая кнопки подтверждения, отмены и закрытия, а также проверки текста.
    """

    from playwright.sync_api import Page
    from tools.logger import get_logger
    from locators.confirm_locators import ConfirmLocators
    from elements.text_element import Text
    from elements.button_element import Button
    from components.base_component import BaseComponent

    logger = get_logger("CONFIRM_WINDOW")

    class ConfirmComponent(BaseComponent):
        """Компонент окна подтверждения действий."""

        def __init__(self, page: Page, cancel_button_text: str, allow_button_text: str):
            """Инициализация компонента.

            Args:
                page: Экземпляр страницы Playwright.
                cancel_button_text: Текст кнопки отмены.
                allow_button_text: Текст кнопки подтверждения.
            """

            super().__init__(page)

            self.title = Text(page, ConfirmLocators.TITLE, "confirm title")
            self.text = Text(page, ConfirmLocators.TEXT, "confirm text")

            self.close_button = Button(page, ConfirmLocators.BUTTON_CLOSE, "confirm close button")
            self.cancel_button = Button(
                page,
                page.get_by_role("button", name=cancel_button_text).first,
                "confirm cancel button"
            )
            self.allow_button = Button(
                page,
                page.get_by_role("button", name=allow_button_text).first,
                "confirm allow button"
            )

        # Действия:

        def click_allow_button(self) -> None:
            """Нажимает кнопку подтверждения действия."""

            self.allow_button.click()

        def click_cancel_button(self) -> None:
            """Нажимает кнопку отмены действия."""

            self.cancel_button.click()

        def click_close_button(self) -> None:
            """Нажимает кнопку закрытия окна подтверждения."""

            self.close_button.click()

        def scroll_window_left(self) -> None:
            """Прокручивает содержимое окна влево."""

            self.scroll_left(ConfirmLocators.CONFIRM)

        def scroll_window_right(self) -> None:
            """Прокручивает содержимое окна вправо."""

            self.scroll_right(ConfirmLocators.CONFIRM)

        # Проверки:

        def check_title(self, title: str, msg: str) -> None:
            """Проверяет текст заголовка окна подтверждения.

            Args:
                title: Ожидаемый текст заголовка.
                msg: Сообщение при ошибке.
            """

            self.title.check_have_text(title, msg)

        def check_text(self, text: str, msg: str) -> None:
            """Проверяет текст сообщения в окне подтверждения.

            Args:
                text: Ожидаемый текст сообщения.
                msg: Сообщение при ошибке.
            """

            self.text.check_have_text(text, msg)

        def check_window_horizontal_scrolling(self) -> bool:
            """Проверяет возможность горизонтальной прокрутки окна."""

            return self.is_scrollable_horizontally(ConfirmLocators.CONFIRM)

        def should_be_cancel_button(self) -> None:
            """Проверяет наличие и видимость кнопки Отмены."""
            self.cancel_button.check_visibility("Cancel button is missing")

        def should_be_allow_button(self) -> None:
            """Проверяет наличие и видимость кнопки Подтверждения."""
            self.allow_button.check_visibility("Allow button is missing")

        def check_cancel_button_text(self, expected_text: str) -> None:
            """Проверяет текст кнопки Отмены."""
            self.cancel_button.check_have_text(expected_text, "Cancel button text doesn't match expected")

        def check_allow_button_text(self, expected_text: str) -> None:
            """Проверяет текст кнопки Подтверждения."""
            self.allow_button.check_have_text(expected_text, "Allow button text doesn't match expected")