mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-15 00:11:15 +03:00
add mobile affordance helpers to BasePage
This commit is contained in:
parent
06a4d016e4
commit
7281d26035
@ -79,4 +79,57 @@ export class BasePage {
|
||||
async waitForPageLoad() {
|
||||
await this.page.waitForSelector("#pageRoot", { timeout: 10_000 });
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the mobile-only export pane / sheet that slides up from the
|
||||
* bottom on the export page. No-op on desktop. Returns the pane locator
|
||||
* so the caller can assert against its contents.
|
||||
*/
|
||||
async openMobilePane(): Promise<Locator> {
|
||||
if (this.isDesktop) {
|
||||
// Return the desktop equivalent (the main content area itself)
|
||||
return this.pageRoot;
|
||||
}
|
||||
// Look for any element that opens a sheet/dialog on tap.
|
||||
// Specific views override this with their own selector.
|
||||
const pane = this.page.locator('[role="dialog"]').first();
|
||||
return pane;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a side drawer (e.g. mobile filter drawer). View-specific page
|
||||
* objects should override this with their actual trigger selector.
|
||||
* The default implementation looks for a button labelled "Open menu"
|
||||
* or "Filters" and clicks it, then returns the drawer locator.
|
||||
*/
|
||||
async openDrawer(): Promise<Locator> {
|
||||
if (this.isDesktop) {
|
||||
return this.pageRoot;
|
||||
}
|
||||
const trigger = this.page
|
||||
.getByRole("button", { name: /menu|filter/i })
|
||||
.first();
|
||||
if (await trigger.count()) {
|
||||
await trigger.click();
|
||||
}
|
||||
return this.page.locator('[role="dialog"], [data-state="open"]').first();
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a bottom sheet (vaul). View-specific page objects should
|
||||
* override this with their actual trigger selector.
|
||||
*/
|
||||
async openBottomSheet(): Promise<Locator> {
|
||||
if (this.isDesktop) {
|
||||
return this.pageRoot;
|
||||
}
|
||||
return this.page.locator('[vaul-drawer]').first();
|
||||
}
|
||||
|
||||
/** Close any currently-open mobile overlay (drawer, sheet, dialog). */
|
||||
async closeMobileOverlay(): Promise<void> {
|
||||
if (this.isDesktop) return;
|
||||
// Press Escape — Radix dialogs and vaul both close on Escape
|
||||
await this.page.keyboard.press("Escape");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user