from __future__ import annotations

from pathlib import Path

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait

from src.driver_factory import create_webdriver, to_file_url


def run() -> str:
    driver = create_webdriver()
    try:
        src_dir = Path(__file__).resolve().parents[1]
        page_url = to_file_url(src_dir / "webapp" / "register.html")

        driver.get(page_url)

        driver.find_element(By.ID, "username").send_keys("newuser")
        driver.find_element(By.ID, "email").send_keys("newuser@example.com")
        driver.find_element(By.ID, "password").send_keys("newpassword123")
        driver.find_element(By.ID, "confirm-password").send_keys("newpassword123")
        driver.find_element(By.ID, "register-button").click()

        message_locator = (By.ID, "message")
        WebDriverWait(driver, 5).until(
            ec.text_to_be_present_in_element(message_locator, "Registration successful")
        )
        return driver.find_element(*message_locator).text
    finally:
        driver.quit()


def main() -> None:
    print(run())


if __name__ == "__main__":
    main()

