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" / "login.html")

        driver.get(page_url)

        driver.find_element(By.ID, "username").send_keys("testuser")
        driver.find_element(By.ID, "password").send_keys("password123")
        driver.find_element(By.ID, "login-button").click()

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


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


if __name__ == "__main__":
    main()
