Promptaid-VIsion / e2e /pages /base_page.py
SCGR's picture
e2e
bbce707
from playwright.sync_api import Page, expect
import time
class BasePage:
"""Base page object with common functionality"""
def __init__(self, page: Page):
self.page = page
self.base_url = "http://localhost:7860"
def navigate_to(self, path: str = ""):
"""Navigate to the page"""
self.page.goto(f"{self.base_url}{path}")
self.page.wait_for_load_state("networkidle")
def wait_for_element(self, selector: str, timeout: int = 10000):
"""Wait for element to be visible"""
self.page.wait_for_selector(selector, timeout=timeout)
def click_element(self, selector: str):
"""Click element with auto-wait"""
self.page.click(selector)
def fill_input(self, selector: str, value: str):
"""Fill input field with auto-wait"""
self.page.fill(selector, value)
def expect_element_visible(self, selector: str):
"""Expect element to be visible"""
expect(self.page.locator(selector)).to_be_visible()
def expect_element_not_visible(self, selector: str):
"""Expect element to not be visible"""
expect(self.page.locator(selector)).not_to_be_visible()
def expect_url_contains(self, url_part: str):
"""Expect URL to contain specific part"""
expect(self.page).to_have_url(f".*{url_part}.*")
def get_text(self, selector: str) -> str:
"""Get text content of element"""
return self.page.locator(selector).text_content()
def upload_file(self, file_input_selector: str, file_path: str):
"""Upload file using file input"""
self.page.set_input_files(file_input_selector, file_path)