better-chatbot / tests /utils /test-helpers.ts
Bot
Initial commit for HF Spaces
05c5ed5
Raw
History Blame Contribute Delete
1.43 kB
import { Page } from "@playwright/test";
/**
* Generate a unique test name with timestamp and random string
*/
export function uniqueTestName(prefix: string): string {
return `${prefix} ${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
}
/**
* Click an element and wait for navigation to complete
* Prevents race conditions between click and navigation
*/
export async function clickAndWaitForNavigation(
page: Page,
selector: string,
urlPattern: string,
options = { timeout: 10000 },
) {
await Promise.all([
page.waitForURL(urlPattern, options),
page.getByTestId(selector).click(),
]);
}
/**
* Click a dropdown button and wait for menu to appear
* Handles flaky shadcn dropdown behaviors
*/
export async function openDropdown(
page: Page,
buttonSelector: string,
menuSelector = '[role="menu"]',
timeout = 5000,
) {
const button = page.getByTestId(buttonSelector);
await button.click();
const menu = page.locator(menuSelector);
await menu.waitFor({ state: "visible", timeout });
return menu;
}
/**
* Select an option from an open dropdown menu
*/
export async function selectDropdownOption(
page: Page,
optionSelector: string,
timeout = 5000,
) {
const option = page.getByTestId(optionSelector);
await option.waitFor({ state: "visible", timeout });
await option.click();
// Wait for menu to close
await option.waitFor({ state: "hidden", timeout });
}