import { Page, Locator } from '@playwright/test'; import { waitForElement, waitForElementHidden } from '../core/waiting'; /** * Check if the category autocomplete dropdown is visible */ export async function isCategoryAutocompleteListVisible(page: Page): Promise { const list = page.locator('[data-testid="category-autocomplete-list"]'); return await list.isVisible(); } /** * Wait for the category autocomplete dropdown to be visible */ export async function waitForCategoryAutocompleteList( page: Page, options?: { timeout?: number } ): Promise { return await waitForElement(page, 'category-autocomplete-list', options); } /** * Wait for the category autocomplete dropdown to be hidden */ export async function waitForCategoryAutocompleteListHidden( page: Page, options?: { timeout?: number } ): Promise { await waitForElementHidden(page, 'category-autocomplete-list', options); } /** * Click a category option in the autocomplete dropdown */ export async function clickCategoryOption(page: Page, categoryName: string): Promise { const optionTestId = `category-option-${categoryName.toLowerCase().replace(/\s+/g, '-')}`; const option = page.locator(`[data-testid="${optionTestId}"]`); await option.click(); } /** * Get a category option element by name */ export async function getCategoryOption(page: Page, categoryName: string): Promise { const optionTestId = `category-option-${categoryName.toLowerCase().replace(/\s+/g, '-')}`; return page.locator(`[data-testid="${optionTestId}"]`); } /** * Click the "Create new" option for a category that doesn't exist */ export async function clickCreateNewCategoryOption(page: Page): Promise { const option = page.locator('[data-testid="category-option-create-new"]'); await option.click(); } /** * Get the "Create new" option element for categories */ export async function getCreateNewCategoryOption(page: Page): Promise { return page.locator('[data-testid="category-option-create-new"]'); }