Spaces:
Running
Running
File size: 3,129 Bytes
60b6623 bbce707 60b6623 bbce707 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
from .base_page import BasePage
from playwright.sync_api import expect
class ExplorePage(BasePage):
"""Page object for the explore page"""
# Selectors using data-testid for stability
SEARCH_INPUT = "[data-testid='search-input']"
FILTER_SOURCE = "[data-testid='filter-source']"
FILTER_CATEGORY = "[data-testid='filter-category']"
FILTER_REGION = "[data-testid='filter-region']"
FILTER_COUNTRY = "[data-testid='filter-country']"
FILTER_IMAGE_TYPE = "[data-testid='filter-image-type']"
CLEAR_FILTERS_BUTTON = "[data-testid='clear-filters-button']"
IMAGE_GRID = "[data-testid='image-grid']"
IMAGE_CARD = "[data-testid='image-card']"
EXPORT_BUTTON = "[data-testid='export-button']"
LOADING_SPINNER = "[data-testid='loading-spinner']"
def __init__(self, page):
super().__init__(page)
self.page_url = "/explore"
def navigate(self):
"""Navigate to explore page"""
self.navigate_to(self.page_url)
# For now, just verify the page loads without checking specific elements
# since we don't have the actual UI with data-testid attributes
def search_images(self, search_term: str):
"""Search for images"""
self.fill_input(self.SEARCH_INPUT, search_term)
self.page.keyboard.press("Enter")
self.page.wait_for_load_state("networkidle")
def filter_by_source(self, source: str):
"""Filter by source"""
self.click_element(self.FILTER_SOURCE)
self.page.click(f"text={source}")
self.page.wait_for_load_state("networkidle")
def filter_by_category(self, category: str):
"""Filter by category"""
self.click_element(self.FILTER_CATEGORY)
self.page.click(f"text={category}")
self.page.wait_for_load_state("networkidle")
def filter_by_region(self, region: str):
"""Filter by region"""
self.click_element(self.FILTER_REGION)
self.page.click(f"text={region}")
self.page.wait_for_load_state("networkidle")
def clear_filters(self):
"""Clear all filters"""
self.click_element(self.CLEAR_FILTERS_BUTTON)
self.page.wait_for_load_state("networkidle")
def get_image_count(self) -> int:
"""Get the number of images displayed"""
return len(self.page.locator(self.IMAGE_CARD).all())
def click_image(self, index: int = 0):
"""Click on an image to view details"""
images = self.page.locator(self.IMAGE_CARD).all()
if len(images) > index:
images[index].click()
self.page.wait_for_load_state("networkidle")
def click_export(self):
"""Click the export button"""
self.click_element(self.EXPORT_BUTTON)
def expect_images_loaded(self):
"""Expect images to be loaded"""
self.expect_element_not_visible(self.LOADING_SPINNER)
self.expect_element_visible(self.IMAGE_GRID)
def expect_no_images_found(self):
"""Expect no images message"""
self.page.locator("text=No images found").to_be_visible()
|