Complete declarative settings runtime integration

This commit is contained in:
vorotamoroz
2026-08-24 18:11:46 +00:00
parent dd11a753d5
commit 8adc88b8cb
11 changed files with 460 additions and 184 deletions
+4 -22
View File
@@ -6,7 +6,7 @@ import {
waitForLocalDatabaseEntry,
} from "../runner/liveSyncWorkflow.ts";
import { startObsidianLiveSyncSession, type ObsidianLiveSyncSession } from "../runner/session.ts";
import { captureObsidianElement, withObsidianPage } from "../runner/ui.ts";
import { captureObsidianElement, openLiveSyncSettings, withObsidianPage } from "../runner/ui.ts";
import { createTemporaryVault } from "../runner/vault.ts";
import type { Locator, Page } from "playwright";
@@ -35,17 +35,6 @@ type VaultWinnerState = {
winnerRevision: string;
};
type ObsidianSettingsController = {
open(): void;
openTabById(tabId: string): void;
};
type ObsidianTestGlobal = typeof globalThis & {
app?: {
setting?: ObsidianSettingsController;
};
};
async function createAndOpenBaseFile(cliBinary: string, env: NodeJS.ProcessEnv): Promise<void> {
await evalObsidianJson<unknown>(
cliBinary,
@@ -359,17 +348,10 @@ async function main(): Promise<void> {
}
await withObsidianPage(session.remoteDebuggingPort, async (page) => {
await page.evaluate(() => {
const setting = (globalThis as ObsidianTestGlobal).app?.setting;
if (setting === undefined) throw new Error("Obsidian settings are unavailable");
setting.open();
setting.openTabById("obsidian-livesync");
});
const settings = page.locator(".sls-setting");
await settings.waitFor({ state: "visible", timeout: uiTimeoutMs });
await settings.locator('.sls-setting-menu-btn[title="Hatch"]').click({ timeout: uiTimeoutMs });
const settingsNavigator = await openLiveSyncSettings(page, uiTimeoutMs);
const settings = await settingsNavigator.openPage("Hatch");
const verifySetting = settings.locator(".setting-item").filter({
has: page.getByText("Inspect conflicts and file/database differences", {
has: settingsNavigator.page.getByText("Inspect conflicts and file/database differences", {
exact: true,
}),
});