mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-01-15 09:49:17 +00:00
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import { page } from "vitest/browser";
|
|
import { delay } from "@/lib/src/common/utils";
|
|
|
|
export async function waitForDialogShown(dialogText: string, timeout = 500) {
|
|
const ttl = Date.now() + timeout;
|
|
while (Date.now() < ttl) {
|
|
try {
|
|
await delay(50);
|
|
const dialog = page
|
|
.getByText(dialogText)
|
|
.elements()
|
|
.filter((e) => e.classList.contains("modal-title"))
|
|
.filter((e) => e.checkVisibility());
|
|
if (dialog.length === 0) {
|
|
continue;
|
|
}
|
|
return true;
|
|
} catch (e) {
|
|
// Ignore
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
export async function waitForDialogHidden(dialogText: string | RegExp, timeout = 500) {
|
|
const ttl = Date.now() + timeout;
|
|
while (Date.now() < ttl) {
|
|
try {
|
|
await delay(50);
|
|
const dialog = page
|
|
.getByText(dialogText)
|
|
.elements()
|
|
.filter((e) => e.classList.contains("modal-title"))
|
|
.filter((e) => e.checkVisibility());
|
|
if (dialog.length > 0) {
|
|
// console.log(`Still exist ${dialogText.toString()}`);
|
|
continue;
|
|
}
|
|
return true;
|
|
} catch (e) {
|
|
// Ignore
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
export async function waitForButtonClick(buttonText: string | RegExp, timeout = 500) {
|
|
const ttl = Date.now() + timeout;
|
|
while (Date.now() < ttl) {
|
|
try {
|
|
await delay(100);
|
|
const buttons = page
|
|
.getByText(buttonText)
|
|
.elements()
|
|
.filter((e) => e.checkVisibility() && e.tagName.toLowerCase() == "button");
|
|
if (buttons.length == 0) {
|
|
// console.log(`Could not found ${buttonText.toString()}`);
|
|
continue;
|
|
}
|
|
console.log(`Button detected: ${buttonText.toString()}`);
|
|
// console.dir(buttons[0])
|
|
await page.elementLocator(buttons[0]).click();
|
|
await delay(100);
|
|
return true;
|
|
} catch (e) {
|
|
console.error(e);
|
|
// Ignore
|
|
}
|
|
}
|
|
return false;
|
|
}
|