import { Page, Locator } from '@playwright/test'; import { waitForElement } from '../core/waiting'; /** * Get the session list element */ export async function getSessionList(page: Page): Promise { return page.locator('[data-testid="session-list"]'); } /** * Get the new session button */ export async function getNewSessionButton(page: Page): Promise { return page.locator('[data-testid="new-session-button"]'); } /** * Click the new session button */ export async function clickNewSessionButton(page: Page): Promise { const button = await getNewSessionButton(page); await button.click(); } /** * Get a session item by its ID */ export async function getSessionItem(page: Page, sessionId: string): Promise { return page.locator(`[data-testid="session-item-${sessionId}"]`); } /** * Click the archive button for a session */ export async function clickArchiveSession(page: Page, sessionId: string): Promise { const button = page.locator(`[data-testid="archive-session-${sessionId}"]`); await button.click(); } /** * Check if the no session placeholder is visible */ export async function isNoSessionPlaceholderVisible(page: Page): Promise { const placeholder = page.locator('[data-testid="no-session-placeholder"]'); return await placeholder.isVisible(); } /** * Wait for the no session placeholder to be visible */ export async function waitForNoSessionPlaceholder( page: Page, options?: { timeout?: number } ): Promise { return await waitForElement(page, 'no-session-placeholder', options); } /** * Check if the message list is visible (indicates a session is selected) */ export async function isMessageListVisible(page: Page): Promise { const messageList = page.locator('[data-testid="message-list"]'); return await messageList.isVisible(); } /** * Count the number of session items in the session list */ export async function countSessionItems(page: Page): Promise { const sessionList = page.locator('[data-testid="session-list"] [data-testid^="session-item-"]'); return await sessionList.count(); } /** * Wait for a new session to be created (by checking if a session item appears) */ export async function waitForNewSession(page: Page, options?: { timeout?: number }): Promise { // Wait for any session item to appear const sessionItem = page.locator('[data-testid^="session-item-"]').first(); await sessionItem.waitFor({ timeout: options?.timeout ?? 5000, state: 'visible', }); }