mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-20 23:04:06 +00:00
- SidebarTab: Use placeholder selector instead of test ID for search input - KeyboardHelper: Remove redundant canvas fallback (null is valid) - groupNode: Use variable for category name instead of hardcoded string - nodeLibrary: Ensure tab is open before filling search input - subgraph: Reload workflow after page reload to restore state - useSettingSearch: Use role selector and simplify selected class assertion Amp-Thread-ID: https://ampcode.com/threads/T-019c18c2-667a-7179-bb2d-86f35cd1d7b0 Co-authored-by: Amp <amp@ampcode.com>
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import type { Locator, Page } from '@playwright/test'
|
|
|
|
export class KeyboardHelper {
|
|
constructor(
|
|
private readonly page: Page,
|
|
private readonly canvas: Locator
|
|
) {}
|
|
|
|
private async nextFrame(): Promise<void> {
|
|
await this.page.evaluate(() => new Promise<number>(requestAnimationFrame))
|
|
}
|
|
|
|
async ctrlSend(
|
|
keyToPress: string,
|
|
locator: Locator | null = this.canvas
|
|
): Promise<void> {
|
|
const target = locator ?? this.page.keyboard
|
|
await target.press(`Control+${keyToPress}`)
|
|
await this.nextFrame()
|
|
}
|
|
|
|
async selectAll(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('KeyA', locator)
|
|
}
|
|
|
|
async bypass(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('KeyB', locator)
|
|
}
|
|
|
|
async undo(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('KeyZ', locator)
|
|
}
|
|
|
|
async redo(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('KeyY', locator)
|
|
}
|
|
|
|
async moveUp(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('ArrowUp', locator)
|
|
}
|
|
|
|
async moveDown(locator?: Locator | null): Promise<void> {
|
|
await this.ctrlSend('ArrowDown', locator)
|
|
}
|
|
}
|